Активность
- Ещё раньше
-
Уязвимости OpenSSH В мире кибербезопасности каждый день появляются новые вызовы, и исследователи из Qualys Security Advisory недавно выявили две серьезные уязвимости, связанные с популярным инструментом OpenSSH. Давайте разберемся, что именно было обнаружено и как это может повлиять на вас и вашу инфраструктуру. Атака типа MitM (Man-in-the-Middle) Представьте себе ситуацию: вы пытаетесь подключиться к своему серверу, и злоумышленник, находящийся между вами и сервером, смог выдать себя за него. Это возможно благодаря уязвимости в OpenSSH, связанной с опцией VerifyHostKeyDNS. Хотя по умолчанию эта опция отключена, она может быть включена в некоторых системах (например, FreeBSD). При активированной проверке, атакующий может обойти все проверки идентичности сервера, что ставит под угрозу безопасность ваших данных. Атака DoS (Denial of Service) Но это ещё не всё! Открытая возможность для DoS-атак может вызвать недоступность вашего сервиса как для клиента, так и для сервера. Здесь злоумышленники могут использовать метод, при котором клиент будет активно запрашивать сервер, что создаст ненужную нагрузку на ресурсы и может привести к исчерпанию памяти или процессора. Это ненадолго, но достаточно, чтобы вызвать серьезные перебои в работе вашего бизнеса. Что делать? Обновите OpenSSH до последних версий! Это важно не только для исправления найденных уязвимостей, но также для получения дополнительных функций безопасности. Кроме того, внедряйте встроенные механизмы защиты, такие как LoginGraceTime и MaxStartups, чтобы минимизировать риски атак. Источник
-
В этом треде публикуются посты, на которые стоит обратить внимание, если вы следите за миром ИБ
-
-
Для этого достаточно пройтись в цикле по всем элементам local keys={} for key in pairs(t) do table.insert(keys, key) end После этого в таблице keys будут ключи из таблицы t
-
Приветствую! Подскажите как получить список ключей из таблицы lua. Заполняю так local t = {} t[1]='первое значение' t[2]='второе значение' t[3]='третье значение' Хочу получить на выходе вторую таблицу: {1,2,3}
-
Igor Kahn изменил фотографию своего профиля
-
Работа с большими таблицами требует внимательного отношения к методам доступа и управления данными, так как это может существенно влиять на производительность и потребление памяти. Вот несколько стратегий для оптимизации: Предварительное выделение памяти: Lua динамически расширяет таблицы по мере добавления новых элементов, что может быть дорогостоящим. Если вы знаете предполагаемый размер таблицы, можно заранее выделить нужное количество памяти. -- Создаем таблицу с заранее выделенным размером local t = {} for i = 1, 1000 do t[i] = 0 end Использование массивоподобных таблиц: Доступ к элементам массивоподобных таблиц (последовательные числовые индексы) быстрее, чем доступ к сложным таблицам с разреженными индексами или строками в качестве ключей. -- Пример массивоподобной таблицы local arr = {1, 2, 3, 4, 5} Применение метатаблиц для кастомизированного поведения: Метатаблицы могут использоваться для перехвата операций, таких как доступ к элементам или их модификация. Это может улучшить производительность за счет оптимизации стандартных операций. local mt = { __index = function(table, key) -- Обработка отсутствующих элементов return 0 end } local t = {} setmetatable(t, mt) Избегание частого создания и удаления таблиц: Постоянное создание и удаление таблиц может привести к фрагментации памяти. Вместо этого старайтесь переиспользовать таблицы. local pool = {} for i = 1, 100 do pool[#pool + 1] = {} -- Предварительное создание пула таблиц end -- Получаем таблицу из пула local function getTable() return table.remove(pool, #pool) end -- Возвращаем таблицу в пул local function returnTable(t) table.insert(pool, t) end Использование специализированных структур данных: Если задача требует специфических операций с данными, попробуйте использовать специальные структуры данных, такие как связные списки или бинарные деревья, вместо стандартных таблиц. Периодическая очистка таблиц: Частицы данных в таблицах, которые больше не нужны, должны удаляться как можно скорее, чтобы освободить память. local t = {1, 2, 3, 4, 5} for i = #t, 1, -1 do if t[i] == 3 then table.remove(t, i) end end Оптимизация работы с таблицами в Lua требует тщательного анализа конкретной задачи и сценариев использования. Использование перечисленных методов в зависимости от контекста поможет уменьшить потребление памяти и повысить производительность кода.
-
Igor Kahn присоединился к сообществу
-
Здравствуйте! Часто работаю с большими объемами данных в таблицах луа. Хотелось бы услышать рекомендации по оптимизации памяти и скорости работы. Заранее спасибо
-
В lua индексация таблиц начинается с единицы. Попробуйте так: local t = {100} print(t[1])
-
Написал следующий код local t = {100} print(t[0]) Но выводит почему-то nil. Подскажите в чем проблема
-
Существует множество способов для решения вашей задачи. Будем опираться на использование Lua внутри Vikingo Engine. Способ через json: local json = require"json" local t = {a=100, b={c=200}} print(json.encode(t)) Способ через inspect: local inspect = require"inspect" local t = {a=100, b={c=200}} print(inspect(t)) Некоторые примеры из интернета на чистом Lua: #1 function tprint(t, s) for k, v in pairs(t) do local kfmt = '["' .. tostring(k) .. '"]' if type(k) ~= "string" then kfmt = "[" .. k .. "]" end local vfmt = '"' .. tostring(v) .. '"' if type(v) == "table" then tprint(v, s or "" .. kfmt) else if type(v) ~= "string" then vfmt = tostring(v) end print(type(t)..(s or '')..kfmt..' = '..vfmt) end end end local t = {a = 100, b = {c = 200}} print(tprint(t)) #2 function dump_table(o) if type(o) == "table" then local s = "{ " for k, v in pairs(o) do if type(k) ~= "number" then k = '"' .. k .. '"' end s = s .. "[" .. k .. "] = " .. dump_table(v) .. "," end return s .. "} " else return tostring(o) end end local t = {a = 100, b = {c = 200}} print(dump_table(t))
-
Приветствую! Начал работать с таблицами в lua. Подскажите, как вывести все элементы таблицы. Таблица многомерная. Спасибо!
- 1 ответ
-
- 1
-
-
Evgen присоединился к сообществу
-
Если вы используете Vikingo Engine, то там можно использовать функцию split из пакета strings: local strings = require("strings") local s = "a,b" local elements = strings.split(s, ",") for _, element in pairs(elements) do print(element) end Ссылка на документацию по пакету https://vikingo.org/ru/engine/docs/lua-api/strings
-
Как быстро разделить строку на массив подстрок, например: s = "a,b" Хочу на выходе получить таблицу, в которой каждый символ это отдельный элемент таблицы такого вида: {"a","b"}
-
akamajoris присоединился к сообществу
-
Для этого можно написать функцию на чистом lua: local charset = "abcdefghijklmnopqrstuvwxyz1234567890" function string.random(length) if length > 0 then return string.random(length - 1) .. charset:sub(math.random(1, #charset), 1) else return "" end end print (string.random(10)) В engine есть встроенная функция random_string, которая входит в пакет utils.
-
Для моей задачи нужно генерировать строку из заданного алфавита. Пишу код в engine. Пока не получилось, покажите пример.
-
Запустили русскоязычный канал и группу в телеграме. Там будем публиковать новости о нашем софте, важные изменения и анонсы. В группе можно пообщаться на разные темы. Ссылка на канал: https://t.me/vkngpub Ссылка на группу: https://t.me/vkngru
-
Для этого можно воспользоваться встроенной функцией tonumber Пример: local s = "100" print(type(s)) local num = tonumber(s) print(type(num))
-
Здравствуйте. Вопрос по lua. Есть переменная типа строка s s = "100" Как превратить её в число?