Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
Да, это выполнялось в самом чистом Луа, который мне удалось найти.
А что если сделать как-то так:
a=1 e={print=print, a=2} e.load=function(str) return load(str,nil,nil,e) end load(" print(a) load('print(a)')()",nil,nil,e)() -
если у кого-то установлен чистый Lua без майнкрафтов и прочих крафтов, прошу проверить, проявляется ли такой эффект там.a=1 load(" print(a) load('print(a)')()",nil,nil,{print=print, load=load, a=2})()Результат:
2
1
Вывод: не хочешь давать доступ к руту - не разрешай в среде функцию load
-
Я давно подозревал, что функция serialization.unserialize - дыра для хакера
Хотя, нет. Что бы дыра стала дырой в окружении должна быть разрешена функция load. А в serialization.unserialize - только math.huge
-
-
Месье знает толк в извращениях
-
5
-
-
У тебя свой дата-центр? Где? Когда? Обязательно поставим роутер
-
Самый легкий вариант не всегда самый лучший. Теоретически каждое знакоместо должно занимать в файле 2-3 байта. 1 байт - цвет и 1-2 байта - символ. А если еще упаковку применить ...
-
А можно я по теме? Считаю, что хранить картинку в виде сериализованной таблицы крайне не рационально. Куча лишних скобок, пробелов и запятых. Не хочешь подумать над более компактным форматом?
-
2
-
-
Я так понимаю что OpenNet работает за счет карты-моста но может и по Wi-Fi работать?
Сам по себе OpenNet это трехуровневая сеть, всех особенностей которой не знаю даже я. А WiFi на сегодняшний день считается основным способом доступа пользователей к сети. Есть и другие, но они не для всех.
-
Рад бы,но как?=)Научишь?
function getScreen() repeat ip, screenRaw=opennet.receive() until ip==initial for sym=1, #screenRaw-160 do io.write(unicode.sub(screenRaw, sym, sym)) end end -
function getScreen() ip, screenRaw=opennet.receive() if ip~=initial then getScreen() end for sym=1, #screenRaw-160 do io.write(unicode.sub(screenRaw, sym, sym)) end end
Рекурсия, в данном случае не самое лучшее решение. Используй repeat until
-
Как именно? Пример будет? Ждем.
event=require"event" function listmsg(eventName, receiverAddress, senderAddress, port, distance, ...) local h = fs.open('@','a') h:write('--'..os.date()..' From:'..senderAddress..'\n'..table.concat({...},'\n')) h:close() end event.listen("modem_message", listmsg)Как то так. Можно еще порт и дистанцию прилепить
-
-
Компьютер наилучшей комплектации отправлен на Мадагаскар хомячкам до востребования.
А какие еще интересные функции кроме __index и __newindex могут содержать метатаблицы?
-
и резидентный модуль приема: tsrmail.luaТак где здесь пересылка файлов? Эта штука абсолютно весь пойманный эфир (возможно не только 9-й порт) будет сыпать в один файл. И зачем переопределять функцию pullSignal если можно повесить слушателя на событие?
-
Приз за решение проблемы ReadOnly-полей уходит к swg2you. Жду комплектацию компьютера и адрес куда его отправлять.
Хотелось бы узнать про параметры (t,k,v) функции __newindex. А про функции rawget и rawset поподробнее.
-
Так, а как сделать что бы таблица ro была не одна на всех, а своя для каждого экземпляра класса?При попытке добавления нового значения (например obj.d=8) выполнится ничего и значение добавлено не будет. Чтобы мы могли добавлять новые индексы в obj нужно в нашем ничего проверять, есть ли добавляемый индекс в ro, и если такого индекса нет, то добавлять его в obj. Это можно сделать так: setmetatable(obj, {__index=ro,__newindex=function(t,k,v) local _=rawget(ro,k) or rawset(t,k,v) end}) При попытке записи obj.d=8, наше ничего, сделает если не ro.k то rawset(t,k,v) наплевав на всякие там метаметамета. -
Вроде нет необходимости прописывать адреса модемов в исходник программы. Можно как то так:
local modems=component.list("modem") local modemPrim = component.proxy(modems()) local modemAuth = component.proxy(modems()) local modemReg = component.proxy(modems())Иначе, если ты поменяешь модем в сервере, придется править программу. Да и вообще, если ты перфекционист ...
-
Зачем три модема на сервере? Три порта можно открыть и на одном модеме.
А вообще, автор темы молодец. Алексу следует подумать над расширением белого списка.
-
1
-
-
Уже ближе. Вот пример реализации класса с двумя обычными полями (c,d) и двумя readonly-полями (a,b)
Class={a=1, b=2, __newindex=function()end} Class.__index=Class function Class:new() local obj={c=3, d=4} setmetatable(obj,self) return obj end function Class:ShowFields() print(self.a, self.b, self.c, self.d) end function Class:SetA(Val) Class.a=Val end function Class:SetB(Val) Class.b=Val end obj = Class:new() obj:ShowFields() obj.a=5 obj.b=6 obj.c=7 obj.d=8 obj:ShowFields() obj:SetA(5) obj:SetB(6) obj:ShowFields()RO-поля можно менять при помощи методов класса. Одна проблема - RO-поля общие для всех экземпляров класса
И можно ли будет от такого класса сделать наследника если невозможно добавлять новые поля?
-
Приз - компьютер или робот любой комплектации (кроме креатива) тому, кто реализует readonly-поле объекта через переопределение оператора присваивания.
-
Ok, в кабинки заходят игроки, кликают по мониторам - поршни запирают вход.
Игроки кидают предметы в воронки, на мониторы выводятся названия предметов и количество, когда оба игрока жмакают "обмен" - робот выплевывает предметы через дропперы.
ПО уже реализовано? Если да, надо собрать прототип на сервере
-
Это как? Так что ли?В моём варианте нет двоеточия, которое приносит странную возможность обработки одного объекта методом другого.Obj1:Metod1() --Вызов метода объекта 1 (нормальный) Obj2:Metod2() --Вызов метода объекта 2 (нормальный) Obj1.Metod1(Obj2) --Вызов метода объекта 1 для объекта 2 (странный)
Был несколько разочарован реализацией readonly-полей. Я надеялся на:
print(Obj.ReadOnlyVar) -- читаем поле --> 123 Obj.ReadOnlyVar=456 -- пытаемся изменить print(Obj.ReadOnlyVar) -- повторно читаем поле --> 123
-
Какое то строение из поршней, аккумуляторов и других непонятных блоков. Лично мне ничего не ясно.
-
1
-

OpenNet: Продолжение
в Сетевые технологии
Опубликовано:
Это в том случае, если Сябро собирается строить свою сеть, никак не связанную с нашей. Но тогда и библиотеку он напишет свою, скорее всего. Если интегрироваться в существующую сеть, нужна библиотека минимум второго уровня т.е. для работы через связанные платы.
Не бойся вайфая. В ОС он намного безопаснее, чем в СС