Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

Kimapr

Пользователи
  • Публикации

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

  • Посещение

  • Дней в лидерах

    2

Последний раз Kimapr выиграл 31 января

Публикации Kimapr были самыми популярными!

Репутация

7 Обычный

Контакты

  • Сайт
    idonthaveanywebsite.com

Посетители профиля

Блок посетителей профиля отключен и не будет отображаться другим пользователям

  1. И помоему мы далеко отошли от математического сеттинга. Пауки тут какие-то появились, да и знак интеграла куда убежал?
  2. А ты уже потестил новую версию (номер версии я не менял)? Мне интересно твоё мнение о том, как хорошо (/плохо/ужасно/идеально и т.д) всё реализовано.
  3. Я решил добавить красоты. Запилил частицы, кто-нибудь вообще играть в эту игру будет? Помоему, никто не видит этого шума.
  4. Лицензия у игры забавная... Делайте что хотите, пока ваши измененные копии также имеют другое имя.
  5. Kimapr

    Kion - форк OpenOS (indev)

    Уже перестали что ли? Жаль, думал будет что-то годное... P.s. [offtopic] Может мне тоже туда что-нибудь запилить? Врагов, например [/offtopic]
  6. Kimapr

    Kion - форк OpenOS (indev)

    Добавил заставку при запуске. Открыл репозиторий на gitlab. Сейчас выложу туда то что есть. Одному скучно программировать!
  7. Kimapr

    Защитник таблиц: tprotect

    Нет, я действительно говорил про /boot/, но сам я сделал через /lib/core/boot.lua. Помоему если уж ты и ставишь свой скрипт в /boot/, ты должен назвать его так, чтобы он выполнялся последним, т.е. ПОСЛЕ других бутскриптов. Например, название "zz_tprotect_init.lua" прекрасно подойдет, т.к. z - последняя (или одна из таковых) буква английского алфавита. В своей библиотеке я нарочно допустил брешь, так что если в метатаблице защищаемой таблицы (не зеркальной!) объявлена функция __newindex, то вместо ошибки будет выполнена она. Учитывая это, в __newindex можно реализовать защиту некоторых полей тем, что если их ключ совпадает с поданным в функцию ключём, то ничего не делать, или кинуть эррор.
  8. Kimapr

    Защитник таблиц: tprotect

    А можно скриншот ошибки? Я патчил OpenOS 1.7.3, изменив /lib/core/boot.lua: ... local package = dofile("/lib/package.lua") local tprotect = dofile("/lib/tprotect.lua") do -- Unclutter global namespace now that we have the package module and a filesystem _G.component = nil _G.computer = nil _G.process = nil _G.unicode = nil -- Inject the package modules into the global namespace, as in Lua. _G.package = package -- Initialize the package module with some of our own APIs. package.loaded.tprotect = tprotect package.loaded.component = component package.loaded.computer = computer package.loaded.unicode = unicode package.loaded.buffer = dofile("/lib/buffer.lua") package.loaded.filesystem = dofile("/lib/filesystem.lua") package.loaded.color = dofile("/lib/color.lua") -- Inject the io modules _G.io = dofile("/lib/io.lua") end ... status("Initializing system...") package.loaded.component = tprotect.protect(component) package.loaded.computer = tprotect.protect(computer) package.loaded.unicode = tprotect.protect(unicode) do local loaded=package.loaded local unloadable={component=true,computer=true,unicode=true,tprotect=true,filesystem=true} local raw_type=type function package.unload(name) assert(raw_type(name)=="string","bad argument #1 to package.unload (string expected, got "..raw_type(name)..")") if not unloadable[name] then package.loaded[name]=nil end end end package.loaded=tprotect.protect(package.loaded) _G.package=tprotect.protect(package) computer.pushSignal("init") -- so libs know components are initialized. require("event").pull(1, "init") -- Allow init processing. _G.runlevel = 1 if gpu and screen then gpu.setResolution(gpu.maxResolution()) end Здесь после всех бутскриптов запускается процесс защиты дефолтных либ OpenComputers, а также package. Сам tprotect уже себя защитил.
  9. Kimapr

    Защитник таблиц: tprotect

    И вообще, какого чёрта мы опустились до старта системы? Я вообще просто библиотечку для защиты таблиц сделал, а как её использовать - не моё дело (если я не являюсь пользователем, при разработке Kion - я являюсь им)
  10. Kimapr

    Защитник таблиц: tprotect

    Я такое в Kion в init поставил и все работает нормально. У библы package есть свой оригинал package.loaded, и он хранится в локальной переменной. Посмотри на код из /lib/package.lua: local loaded = { ["_G"] = _G, ["bit32"] = bit32, ["coroutine"] = coroutine, ["math"] = math, ["os"] = os, ["package"] = package, ["string"] = string, ["table"] = table } package.loaded = loaded А защита _G сломает некоторые программы к чертям. В _G нельзя будет писать, но это ещё не всё! Просто переопределив _G _G=tprotect.protect(_G) Ничего не получится. Защищена будет только сама переменная, но не таблица глобального окружения. Её нужно будет менять для каждой прожки. В таком случае лучше каждой программе сделать свое глобальное окружение. Это будет легче. А там пусть какую-угодно фигню творят, лишь бы out of memory не было (при должной защите, это единственный краш, который программа сможет нанести системе).
  11. Kimapr

    Защитник таблиц: tprotect

    Функция protect вместе с зеркалом таблицы возвращает метатаблицу зеркала (на самом деле нет, но она косвенно влияет на настоящую метатаблицу зеркала). Библиотеку нужно подгружать в начале работы системы! Можно вот такой код поместить в /boot/: require"tprotect" package.loaded.component = tprotect.protect(component) package.loaded.computer = tprotect.protect(computer) package.loaded.unicode = tprotect.protect(unicode) do local loaded=package.loaded local unloadable={component=true,computer=true,unicode=true,tprotect=true,filesystem=true} local raw_type=type function package.unload(name) assert(raw_type(name)=="string","bad argument #1 to package.unload (string expected, got "..raw_type(name)..")") if not unloadable[name] then package.loaded[name]=nil end end end package.loaded=tprotect.protect(package.loaded) _G.package=tprotect.protect(package) И постараться чтобы этот бутскрипт выполнился последним (предпологается, что другие бутскрипты хорошие и не вредные!). Еще можно реализовать права на файлы, как в *nix, но для этого я и пишу Kion (это ОСь такая). Чудо щас исправлю
×