Перейти к содержимому

Zer0Galaxy

Гуру
  • Публикации

    1 220
  • Зарегистрирован

  • Посещение

  • Победитель дней

    189

Сообщения, опубликованные пользователем Zer0Galaxy


  1. Используй пока библиотеку для сети первого уровня ( на ней работают роутеры, днс, прокси). Ей не нужна огромная и сложная системма.

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

     

    Скорее всего будет проводная сеть по ДЦ что бы менее уязвим был...

    Не бойся вайфая. В ОС он намного безопаснее, чем в СС


  2. если у кого-то установлен чистый Lua без майнкрафтов и прочих крафтов, прошу проверить, проявляется ли такой эффект там.
    a=1 load(" print(a) load('print(a)')()",nil,nil,{print=print, load=load, a=2})()  

    Результат:

    2

    1

    Вывод: не хочешь давать доступ к руту - не разрешай в среде функцию load


  3. Я давно подозревал, что функция serialization.unserialize  -  дыра для хакера

    Хотя, нет. Что бы дыра стала дырой в окружении должна быть разрешена функция load. А в serialization.unserialize - только math.huge


  4. А можно я по теме? Считаю, что хранить картинку в виде сериализованной таблицы крайне не рационально. Куча лишних скобок, пробелов и запятых. Не хочешь подумать над более компактным форматом?

    • Нравится 2

  5. Я так понимаю что OpenNet работает за счет карты-моста но может и по Wi-Fi работать?

    Сам по себе OpenNet это трехуровневая сеть, всех особенностей которой не знаю даже я. А WiFi на сегодняшний день считается основным способом доступа пользователей к сети. Есть и другие, но они не для всех.


  6. Как именно? Пример будет? Ждем.

    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)
    

    Как то так. Можно еще порт и дистанцию прилепить


  7.  

     

    и резидентный модуль приема: tsrmail.lua

    Так где здесь  пересылка файлов? Эта штука абсолютно весь пойманный эфир (возможно не только 9-й порт) будет сыпать в один файл. И зачем переопределять функцию pullSignal если можно повесить слушателя на событие?


  8. Приз за решение проблемы ReadOnly-полей уходит к swg2you. Жду комплектацию компьютера и адрес куда его отправлять.

    Хотелось бы узнать про параметры (t,k,v) функции __newindex. А про функции rawget и rawset поподробнее.


  9.  

     

    При попытке добавления нового значения (например 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) наплевав на всякие там метаметамета.
    Так, а как сделать что бы таблица ro была не одна на всех, а своя для каждого экземпляра класса?

  10. Вроде нет необходимости прописывать адреса модемов в исходник программы. Можно как то так:

    local modems=component.list("modem")
    local modemPrim = component.proxy(modems())
    local modemAuth = component.proxy(modems())
    local modemReg  = component.proxy(modems())
    

    Иначе, если ты поменяешь модем в сервере, придется править программу. Да и вообще, если ты перфекционист ...


  11. Уже ближе. Вот пример реализации класса с двумя обычными полями (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-поля общие для всех экземпляров класса

    И можно ли будет от такого класса сделать наследника если невозможно добавлять новые поля?


  12. Ok, в кабинки заходят игроки, кликают по мониторам - поршни запирают вход.

    Игроки кидают предметы в воронки, на мониторы выводятся названия предметов и количество, когда оба игрока жмакают "обмен" - робот выплевывает предметы через дропперы.

    ПО уже реализовано? Если да, надо собрать прототип на сервере


  13.  

     

    В моём варианте нет двоеточия, которое приносит странную возможность обработки одного объекта методом другого.
    Это как? Так что ли?
    Obj1:Metod1()     --Вызов метода объекта 1 (нормальный)
    Obj2:Metod2()     --Вызов метода объекта 2 (нормальный)
    Obj1.Metod1(Obj2) --Вызов метода объекта 1 для объекта 2 (странный) 

    Был несколько разочарован реализацией readonly-полей. Я надеялся на:

    print(Obj.ReadOnlyVar)  -- читаем поле
    --> 123
    Obj.ReadOnlyVar=456     -- пытаемся изменить
    print(Obj.ReadOnlyVar)  -- повторно читаем поле
    --> 123
    
    
×
×
  • Создать...