Zer0Galaxy
Гуру-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Zer0Galaxy
-
На черепахе сохраняешь под именем startup программу Перегружаешь черепаху На компьютере сохраняешь под именем tclient программу Запуск: tclient <ID черепахи> Проверишь, отпиши результат
- 7 ответов
-
- беспроводной модуль
- черепашка
- (и ещё 1 )
-
Есть пара вопросов. 1. Тебе нужно готовое решение или ты хочешь сам написать такую программу с нашей помощью, разумеется? 2. Удаленно необходимо выполнять любую доступную черепахе команду в плоть до программирования самой черепахи (т.е. удаленный терминал) или строго ограниченный набор команд? И не надо так кричать
- 7 ответов
-
- беспроводной модуль
- черепашка
- (и ещё 1 )
-
А слабО головоломку придумать? А запрограммировать? Я начал было делать серию комнат на старом сервере. Даже несколько дверей вместе с Нео запрограммировали. А вот на новый сервер зайти не могу.
-
Если же ты хочешь просто разобраться с coroutine то это отдельная песня, мало связанная с параллельным выполнением. Библиотека coroutine позволяет создавать т.н. сопрограммы. Это такие функции, допускающие вход не с начала, а с того места, на котором в прошлый раз сопрограмма прервала свое выполнение. Но на мой взгляд, без сопрограмм прекрасно можно обойтись имея библиотеку parallel.
-
Сам по себе coroutine не сильно удобен для распараллеливания потоков. Распараллеливание проще всего реализовать при помощи библиотеки parallel. Просто оформляешь каждый поток в виде отдельной функции и вызываешь parallel.waitForAll или parallel.waitForAny. Но, доложен сказать, что если каждый из потоков будет выполнять rednet.receive то смысла в распараллеливании особого нет. Ты просто получишь принятую по rednet строку в нескольких экземплярах. parallel полезен при ожидании совершенно разных событий, например, приема по rednet и ввода с клавиатуры через read()
-
Я правильно понял, теперь что бы включить новый компьютер одной OP-дискеты не достаточно? Нужно еще Lua BIOS EEPROM. Или можно загрузиться только с EEPROM?
-
Ставь задачу, помогу. Награда - тебе.
-
А что такое EEPROM и где оно живет?
Zer0Galaxy прокомментировал Totoro запись в блоге в Totoro Cookies
А чего ж тут такого Lua BIOS сделать не сможет?- 21 комментарий
-
- eeprom
- контроллер
-
(и ещё 1 )
Теги:
-
На сколько знаю, ОС-компьютер продолжает работать с того места, где его прервали. А вот сокет врядли восстановится. Так что, скорее всего, будет потеря соединения. Компьютер должен периодически контролировать соединение и восстанавливать в случае потери.
-
А если робот в силу своих функций должен соблюдать режим радиомолчания? Может лучше разместить под полем систему сканеров для определения положения роботов?
-
Два СС-клиента с CraftNet-адресами route1.client1 и route2.client2 конектятся к ОС-шлюзу. Шлюз цепляется к мосту и регистрирует два канала "route1.client1" и "route2.client2" С другой стороны моста цепляются два Android-приложения, одно к каналу "route1.client1", другое - к "route2.client2" Всё, что шлюз получает по каналу "routeN.clientN" он транслирует соответствующему клиенту через CraftNet. И наоборот. Нужно только, что бы шлюз мог определять по какому каналу он получил посылку. Такая схема позволит пользоваться мостом не только ОС, но и СС-компьютерам.
-
Рид, можно допилить мост?
-
А есть ли возможность ОС-компьютер включить в Craftnet? СС-компьютер подключается по Craftnet к ОС-компьютеру. То подключается к мосту и регистрирует канал с именем, совпадающим с адресом СС-компьютера. Может ли такой ОС-компьютер обслуживать несколько клиентов?
-
Ну так теперь надо мост CC-OC делать.
-
Хочешь гибкости? Тогда нужно решить по какому событию прерывать алгоритм (и нужно ли вообще). Вот это событие и отлавливать.
-
Можно задавать количество повторений в виде числа. Скажем так: local function man(algo) for v,d in string.gmatch(algo, "(%a)(%d*)") do d=tonumber(d) or 1 for i=1,d do if (v == "l") then turtle.turnLeft() elseif (v == "r") then turtle.turnRight() elseif (v == "f") then turtle.forward() elseif (v == "u") then turtle.up() elseif (v == "d") then turtle.down() elseif (v == "b") then turtle.back() elseif (v == "p") then print("lol") else print("Impossible algorithm.") return false end end end return true end Тогда алгоритм будет выглядеть как-то так "f30u15rf10".
-
Craftnet-адрес представляет собой несколько строк, разделенных символом точка, т.е. нечто среднее между ip- адресом и DNS именем. Обычно клиенту выдается адрес, состоящий из имени сегмента, имени роутера и id компьютера-клиента. Но могут быть и исключения, нужно лишь договориться с админом сети.
-
Виртуальный мир, как и мир Minecraft, имеет систему координат x,y,z. Ось x условно направлена слева направо (в сторону возрастания координаты). Ось y - снизу вверх. Ось z - вперед. Да, несоответствие с миром Minecraft, где ось z направлена назад, т.е. на юг. Но так сделано. Единица длины виртуального мира в точности соответствует размеру одного блока. Плоскость y=0 соответствует поверхности земли. Прежде чем что-то делать в виртуальном мире, его нужно создать функцией CreateWorld(mfront,mleft,mright,mback [,clgnd [,clsky]]) Она инициализирует наш виртуальный мир. Первые четыре параметра, которые она принимает - мониторы, на которых будет выводиться изображение. Сюда нужно подставить строки типа "monitor_N" или nil, если соответствующий монитор не используется. Два опциональных параметра clgnd и clsky задают цвет земли и неба в нашем мире. По умолчанию земля - зеленая, небо - голубое. Сразу после создания мира наблюдатель (точнее его глаза) находится в точке x=0, y=1.62, z=0 Для перемещения наблюдателя и контроля его положения служат функции: x,y,z=getPlayerPos() - возвращает координаты глаз наблюдателя setPlayerPos(x,y,z) - перемещает глаза наблюдателя в точку с указанными координатами movePlayer(x,y,z) - смещает наблюдателя на указанный вектор. Объекты в виртуальном мире создаются функцией obj=CreateObj(x,y,z,paint,params) где x,y,z - координаты точки привязки объекта, такой точки относительно которой объект будет прорисовываться; paint - функция прорисовки объекта (о ней чуть позже) params - необязательная таблица параметров объекта, его свойства, зависящие от самого объекта Функция CreateObj возвращает указатель на созданный объект, который в дальнейшем можно использовать для перемещения объекта или изменения его свойств. Все создаваемые объекты пока фантомные т.е. их видно, но они никак не взаимодействуют друг с другом и не препятствуют перемещению наблюдателя. Создание объекта не приводит к его моментальной прорисовке, а только к сохранению объекта в памяти компьютера. Прорисовкой занимается функция draw() Она выводит на мониторы виртуальный мир так как его бы видел наблюдатель. Функцию draw надо вызывать после создания объектов, изменения их свойств и/или перемещения наблюдателя.
-
А давайте, к Новому Году ёлку на сервере постоим. Огромную
-
Я так понимаю, ключ может быть произвольной строкой, не только набором цифр? Может ли один ОС-компьютер держать одновременно несколько соединений, созданных при помощи разных ключей? А что будет если кто то не закроет за собой соединение?
-
Я нарочно не делал вирус слишком уж эффективным. Кто то хотел писать антивирус? Можно попробовать написать антивир для этого вируса.
-
Я так понимаю, ключ может быть произвольной строкой, не только набором цифр? Может ли один клиент авторизоваться несколько раз при помощи разных ключей? А что будет если кто то не закроет за собой соединение?
-
Нет, не я. Этот вирус я только сегодня написал
-
Кто хотел СС-вирус? Получите! Что делает вирус? 1) При первом запуске зараженной программы остается в ОЗУ компьютера т.е. заражает его. 2) После заражения компьютера прописывает собственный код во все вновь создаваемые и редактируемые файлы. 3) Скрывает свое тело. Т.е. при открытии зараженного файла на зараженном компьютере вы увидите содержимое не зараженного файла. Чего вирус не делает? 1) Автоматически не заражает файл startup. Т.е если startup не заражен, после перезагрузки компьютер остается чистым. 2) Не заражает копируемые и перемещаемые файлы. Для проверки работы вируса сохраните код под спойлером в файл с именем virus. Запустите его. Откройте файл virus на редактирование. Если Вы увидели только строчку print('This program is infected!') поздравляю, Ваш компьютер заражен. Создайте или отредактируйте в редакторе edit какой нибудь другой файл. Только не startup !!! Перегрузите компьютер и вновь откройте созданный файл. Вы должны увидеть в нем код вируса.
