eu_tomat
-
Публикации
2 666 -
Зарегистрирован
-
Посещение
-
Победитель дней
331
Сообщения, опубликованные пользователем eu_tomat
-
-
35 минут назад, PanSeek сказал:полный список по API дронов, роботов и компьютера
Русскоязычное описание API:
https://minecraft.fandom.com/ru/wiki/OpenComputers/Computer_API
https://minecraft.fandom.com/ru/wiki/OpenComputers/Robot_API
https://minecraft.fandom.com/ru/wiki/OpenComputers/Дрон
Если эта документация недостаточно свежа, есть описание на английском:
https://ocdoc.cil.li/component:computer
-
4
-
1
-
-
21 минуту назад, InsuperablEx сказал:Если закомментировать этот блок кода, то цикл доходит до 81
1) Похоже, что-то сломано в моде. Даже если он выдаёт размер инвентаря робоита 81, то всё равно не позволит использовать больше 64 ячеек.
2) Этот код не содержит условия для останова цикла. Остановиться он может только по ошибке. С каким сообщением останавливается программа? Скорее всего, что-то вроде attempt to index a nil valueпри обработке пустого слота.
-
49 минут назад, InsuperablEx сказал:Цикл не проходит положенные 81 ячейку инвентаря
Цикл перебирает ячейки инвентаря робота. Но инвентарь робота не может вместить больше 64 ячеек независимо от количества установленных улучшений инвентаря.
-
1
-
-
2 минуты назад, _bongo_ сказал:я в NEI не нашёл тоннельную связанную карту. есть фото какая у неё текстура?
...
я так понял что нужно сделать карту и связать её с чем-то, но я не знаю как.Текстура может зависеть от использованного пакета текстур. Найти можно в зависимости от языка:
Пара связанных плат создаётся одним крафтом.
Также две платы можно связать друг с другом на верстаке.
-
1
-
1
-
-
20 минут назад, _bongo_ сказал:что делать в таком случае?
Вставить связанную карту в робота и запустить программу ещё раз.
-
1
-
-
4 часа назад, Zemkekop сказал:залил программу
А залил-то куда, чем и откуда?
-
1 час назад, NEO сказал:Может ли быть что major-ый индекс должен инкрементироваться?
В случае, например, семантического версионирования должен. Но в общем случае не обязан. Тут сначала хорошо было бы понять, какую систему нумерации версий использует автор, и почему отказался от семантического версионирования.
-
28 минут назад, Asior сказал:я про этот способ думал, но потом почему-то решил что у него там какие-то меняющиеся данные на кастомной ОС и начал делать варианты на копировании.
Про меняющиеся данные вроде бы не было уточнения. Поэтому вариант с копированием тоже уместен.
Опции команды install многим неизвестны. Зато команда cp и её опции широко известны даже за пределами модов Майнкрафта. Поэтому такое решение может для кого-то оказаться более предпочтительным.
-
1 час назад, AtomicScience сказал:дискеты же можно пометить Read-only, разве это не должно решить проблемы с установкой?
(Ctrl + ПКМ на блоке с дискетой в руках)Действительно, есть возможность заблокировать запись на диск. Тогда алгоритм выглядит так: устанавливаем OpenOS на дискету командой install, добавляем на неё любые файлы, защищаем от записи и получаем возможность устанавливать модифицированную систему всё той же командой install.
-
2
-
-
2 часа назад, max905 сказал:тоесть, мы просто копируем файлы, а затем оно само грузит их?
Да, команда install по сути выполняет копирование файлов, упрощая процесс установки со стандартной дискеты OpenOS. Использование команды cp чуть сложнее, но в конечном итоге на возможности загрузки копии операционной системы это никак не сказывается.
При установке OpenOS с пользовательских носителей команда install теряет своё главное преимущество – простоту использования. Поэтому с тем же успехом можно копировать файлы командой cp.
-
1 час назад, max905 сказал:если на обычную установить OpenOS, а потом с нее пытаться установить,то пишет "Nothing to install"
Установщик сообщает о том, что не нашёл файловую систему, с которой он мог бы выполнить установку.
Не знаю, с какой целью установщик написан именно таким образом, но он при поиске возможных источников установки игнорирует корневую файловую систему, если она не смонтирована в режиме только для чтения.
Я вижу два способа решения этой проблемы:
- При запуске установщика вручную указать адрес дискеты, с которой требуется выполнить установку.
- Исправить код установщика так, чтобы он мог выполнять установку с корневой файловой системы независимо от режима записи в неё.
-
15 минут назад, max905 сказал:А как сделать что-бы с этих дискет, например, можно было устанавливать OpenOS, тоесть из обычной дискеты сделать установочную с OpenOS
Чтобы обычная дискета превратилась в установочную, достаточно установить на неё файлы OpenOS с оригинальной дискеты.
-
9 часов назад, max905 сказал:Есть ли команда, для отключения атрибута readonly у дискет?
Мод OpenComputers не позволяет управлять атрибутом ReadOnly дискет. Ни установить, ни сбросить его невозможно. Атрибут ReadOnly установлен лишь для специальных дискет, содержимое которых жёстко задано модами и не предназначено для изменений.
9 часов назад, max905 сказал:пытаюсь пихнуть файл в дискету, пишет readonly (только для чтения)
Для этой цели существуют обычные дискеты. Они позволяют разместить на них произвольный набор файлов.
-
2 часа назад, VyaCHACHsel сказал:не надо изобретать велик
Почему нет? Существует прямо противоположная идея: надо изобрести максимальное количество велосипедов.
-
1
-
4
-
2
-
-
7 минут назад, man_cubus сказал:как пометить компоненты чтобы распознавать их место в матрице автоматически при подключении?
- Проекторы можно размещать автоматически с помощью робота в заранее заданном порядке.
- В это время компьютер по событию component_added назначает обнаруженным проекторам координаты в соответствии с заданным порядком их установки.
Таким образом можно устанавливать не только проекторы, но, например, комплексы турелей, массивы из сундуков и прочие повторяющиеся по шаблону механизмы.
-
2
-
1
-
1 час назад, whiskas сказал:Теоретичиски с нейтронами может получится больше.
Вероятность этого не высока, т.к. на бесконечном поле использование отражателей снижает среднюю производительность. Но на краях, как всегда, возникают нюансы. Поэтому проверить будет полезно.
Найденные тобой 8 вариантов схем можно свести к 3 базовым, учитывая симметрию. Найденный мной вариант не сдвигает узлы изначальной сетки. В двух других, найденных электронными мозгами, изначальный порядок узлов сильно нарушен, для человеческих мозгов такие решения неочевидны.
Похоже, дальнейшие улучшения возможны только перебором. А что касается оптимизации, то первым делом я предлагаю выбросить рекурсию.
-
2 минуты назад, VyaCHACHsel сказал:Ты вроде хотел файловую систему на ленту.
Я хотел не файловую систему, а сообщить о том, что хранение одного файла на ленте не имеет особого смысла. Смысл может иметь файловая система для ленты, но при наличии применений.
6 минут назад, VyaCHACHsel сказал:Если ты хочешь, я ещё пошаманю с "memdist", и в принципе это будет то, что ты хотел увидеть.
А что именно я хотел увидеть?
-
@whiskas Меня смутила фраза
В 13.05.2021 в 21:05, whiskas сказал:Запустил я прогу для перебора всех вариантов
А конкретно слово "всех". Потому что все варианты с конденсаторами и счетверённым ураном описываются 54-битным числом. И даже выполнение относительно простого цикла
for(i=1; i<(1ul << 54); i++) x ^= i;
со всеми оптимизациями компилятором займёт много дней, не говоря уже о рекурсивных способах перебора.
2 часа назад, whiskas сказал:я откидывал заведомо провальные варианты еще в начале рекурсии и их не нужно было обсчитывать
Похоже, что провальные варианты ты откидывал не в начале рекурсии, а до начала рекурсии. Вопрос в том, какие именно варианты ты отбросил. Я именно об этом спрашивал:
20 часов назад, eu_tomat сказал:Какую группу вариантов перебирала твоя прога
Меня интересуют ограничения вроде этого:
2 часа назад, whiskas сказал:Если использовано больше 16 конденсаторов то эта схема точно не даст так много энергии.
Как ты вышел на такое количество?
Есть вручную расставленный вариант с производительностью 4360 eu/t. Максимальное количество энергии, которое сможет обеспечить счетверённая сборка урана в схемах такого типа, составляет 120 eu/t. Соответственно, урановые сборки должны занимать не менее 37 ячеек реактора. А значит, схема может иметь максимум 17 конденсаторов. Это теоретическое ограничение сверху.
Ограничение снизу считается проще. Как минимум каждая пятая ячейка реактора должна содержать конденсатор. Поэтому схема должна содержать не менее 11 конденсаторов.
Но эта теория для бесконечной плоскости. На практике диапазон окажется немного уже. По моим прикидкам оптимальная схема не должна иметь больше 14 конденсаторов (в среднем 14.5), но это слишком грубый расчёт. Как ты вышел на максимум в 16 конденсаторов?
-
16 часов назад, whiskas сказал:Запустил я прогу для перебора всех вариантов (4360 это макс). Прога перебирала только с ураном и конденсатором (без других компонентов)
Какую группу вариантов перебирала твоя прога, на каком железе, и как быстро нашла результат? По моим оценкам при вычислении в один поток на обычном процессоре даже перебор всех возможных вариантов займёт около двух недель. А ещё потребуется анализировать варианты на пригодность и вычислять их производительность.
-
3 минуты назад, VyaCHACHsel сказал:Ты имеешь ввиду, что нам ещё проводить обряды по созданию той самой "распределялки?".
Именно так.
4 минуты назад, VyaCHACHsel сказал:Если нам надо задействовать всю мощь кассет не только в плане "музла", нам по любому придётся это сделать. Причём хотим мы этого или нет.
Что значит "надо"? В каких задачах это востребовано?
-
47 минут назад, VyaCHACHsel сказал:Если немного "потанцевать с бубном", можно отделить функционал в отдельную утилиту.
...
Можно в ОЗУ загружать программы, и если на протяжении n функций какая-то часть кода не используется, выгружать её, если опять потребуется, найти его на самой кассете, снова загрузить и выполнить. И вообще (если брать самую большую кассету на 128) - пока ещё никому не нужно 30 мегабайт на ОДНУ программу.
Можно. Но для этого потребуется реализовать на ленте хотя бы подобие файловой системы, чтобы не запутаться, на каком участке ленты находится тот или иной фрагмент кода. И простого отделения функционала от стандартной библиотеки будет совершенно недостаточно.
-
19 минут назад, chapo сказал:так было задумано, то есть у меня есть таблица:
...мне надо отсортировать item_data[1], item_data[2], item_data[3] и т.д.
Должен сработать такой код:
for idx, tbl in ipairs(items_data) do table.sort( tbl, function(a,b)return a[1]<b[1]end ) end
-
1
-
-
@chapo Если назвать таблицу именем table, то её имя перекроет доступ к стандартному объекту с именем table и не позволит воспользоваться его методом sort для сортировки таблицы.
Поэтому, во-первых, предлагаю для начала дать таблице другое имя.
Во-вторых, в исходном примере используется вложенная таблица. Это ошибка, или так было задумано? Предположу, что это ошибка.
Тогда правильный пример будет выглядеть таким образом:
local tbl = {'b', 'd', 'z', 'c', 'a'} table.sort( tbl ) for i=1,#tbl do print( i, tbl[i] ) end --[[ 1 a 2 b 3 c 4 d 5 z ]]
-
1
-
-
2 минуты назад, BrightYC сказал:со стороны взломщиков появилась идея. Хранить код для пробуждения на сервере, а для самого модема выставить сигнал на пробуждение. Перед выполнением любого кода отсылать на сервер, что робот выполняет код - и начинает в цикле while true do end посылать сигнал на wakeup.
Несколько путаное изложение идеи, и я попробую расшифровать её для читателей, которые не в теме. Взломщик подменяет сообщение пробуждения модема своим. И с помощью дополнительного компьютера непрерывно будит робота по этому сообщению.
При этом размер сообщения ограничен 8192 байт. И сервер защиты будет пытаться убедиться в том, что испытуемый робот пробуждается именно по оригинальному сообщению.
Так как взломщик непрерывно будит робота другим сообщением, то сторона защиты не будет уверена, каким именно сообщением разбужен робот. На первый взгляд информации недостаточно, но её можно попытаться получить.
Существуют тайминги на отключение по TLWY. Бесконечный цикл погасит компьютер через 110 тиков. По истечении этого времени сервер защиты должен послать сигнал пробуждения. Далее 2 тика будет затрачено на пробуждение робота. И первым делом по пробуждении он должен будет отослать на сервер защиты информацию о своём пробуждении. Для простоты робот будет отправлять ту самую строку, которая добивает размер EEPROM до 4096 байт. Чтобы зря не потреблять оперативную память, эту строку можно будет позже удалить (из оперативной памяти). Вторым сообщением робот должен будет отправить содержимое wakeMessage сетевой карты. Он потратит на это ещё два тика времени.
Если код взломщика попытается отправить какую-либо информацию на свой сервер после получения кода с сервера защиты, он сдвинет время отсылки роботом сообщения о своём пробуждении на один тик независимо от используемой механики пробуждения. Возникшая задержка свидетельствует о наличии несанкционированного кода.
Задержка может свидетельствовать и о лагах сервера. Но лучше перестраховаться и повторить попытку чуть позже, пока испытуемый не впишется в ожидаемую задержку.
Обеспечит ли взломщик нужную задержку, или найдёт другую уязвимость в этой защите?

Интерпретатор brainfuck
в Библиотеки
Опубликовано:
О чём этот пост?
Что такое рекомпилятор? Что он делает? Что гораздо быстрее? Что за блоки большого размера? О каких модах идёт речь? И какое отношение ко всему этому имеет графика?