Snusmumriken
Pavel
Добрый день! Можно ли достучаться до переменных, объявленных в test.lua при таком вызове?
pcall("dofile", "./test.lua")
Если без pcall(), то все нормально.
Snusmumriken
Если объявлены глобально, оба случая норм.
Но глобальные переменные это не очень хорошо, попробуй локальные.
Snusmumriken
Ещё, dofile безусловно читает с диска и выполняет скрипт. Require в большей части случаев эффективнее.
Snusmumriken
Нафига явные булы в луа(5.x) вкрутили? Походу Иерусалимского опросить треба
Открою очень страшную тайну, только по секрету.
Это называется "синдром утёнка": первое что ты увидел, кажется самым здоровским, логичным и правильным, а новшества начинают вызывать отторжение: "да зачем, да почему, да нафига вообще оно надо, только бобикам каким-то новым модным".
Вторая тайна: у меня такое же отношение к значительной части новшеств 5.2, 5.3 и 5.4. Но я это у себя отслеживаю, и отдаю себе отчёт: "это говорит моя внутренняя утка, на самом деле это довольно удобные и многократно обоснованные новшества, нельзя быть вечно застрявшим в 2005 году, всё что не развивается — мертво".
Luсky
Открою очень страшную тайну, только по секрету.
Это называется "синдром утёнка": первое что ты увидел, кажется самым здоровским, логичным и правильным, а новшества начинают вызывать отторжение: "да зачем, да почему, да нафига вообще оно надо, только бобикам каким-то новым модным".
Вторая тайна: у меня такое же отношение к значительной части новшеств 5.2, 5.3 и 5.4. Но я это у себя отслеживаю, и отдаю себе отчёт: "это говорит моя внутренняя утка, на самом деле это довольно удобные и многократно обоснованные новшества, нельзя быть вечно застрявшим в 2005 году, всё что не развивается — мертво".
меня они только радуют
Snusmumriken
Я не понимаю, зачем нужно разделение на int и float (только чтобы в int можно было хранить большие значения?), зачем убрали fenv (проблемы совместимости), почему pack и unpack отправили в table.
Александр
Snusmumriken
Вот именно.
Snusmumriken
Впрочем, мне с luajit-ffi на это с высокой колокольни, у меня есть вплоть до ULL и чистых массивов/сишных структур. Проблемы начинаются когда ты пишешь кроссплатформу.
Arslan
Snusmumriken
Красиво жить не запретишь ))
Snusmumriken
Да, привет @Akylaa1974t, как настроение?
Luсky
луажит нам строить и жить помогает
Snusmumriken
Aaron привет! Как дела?
Anonymous
Это своеобразная проверка на ботов?
Snusmumriken
Почему своеобразная, самая обычная
Anonymous
Интересная вакансия "Программист LUA/SQL/ООП (на проект, удаленно)" — https://hh.ru/vacancy/42229744?from=share_android
Отправлено с помощью мобильного приложения hh https://hh.ru/mobile?from=share_android
Anonymous
Уже пора заводить чатик или канал с вакансиями для луашников)
Anonymous
Здравствуйте кто то занимался со скриптами Roblox
Anonymous
Мне просто попросили помочь одному парню он проходит курс по Роблокс.Если кто то может выделить время я оставлю его проект.
Artem
всем привет, подскажите как правильно отправить несколько cookies в ssl.https.request
Snusmumriken
Во-первых, забыл квадратные скобки вокруг строковых клюей, во-вторых не сработает, таблицы не могут содержать одинаковых ключей, хы.
Snusmumriken
А кстати, кто отправляет кукисы-то?
Snusmumriken
Set-Cookie — это серверный заголовок. Клиенты его не используют, они имеют свой собственный заголовок Cookie, в котором все кукисы данного хоста свалены в кучу:
Cookie: name=value; name2=value2; name3=value3
Snusmumriken
А вот чтобы прочитать несколько сеткук, нам надо немножко модифицировать socket.http, чтобы возвращало массив, или парсило несколько кукисов в такую же кучу.
Snusmumriken
А если @cassej пишет сервер, то нефиг использовать https.request, это же не https.response ))
Artem
Snusmumriken
Что именно и для чего?
Snusmumriken
Единственный рабочий вариант получить несколько кук от сервера — слегка модифицировать вот эту функцию в socket.http.
Artem
мне нужно отправить запрос на сервер, добавив к нему авторизационные куки
Snusmumriken
Если так, то просто посылай заголовок Cookie с кучей кук.
Set-Cookie, с клиентской стороны — только для чтения. Ты же не можешь скомандовать серверу: "запомни мою куку, засранец". Он вообще не в курсе о чём ты, со своими сеткуками.
Snusmumriken
Нормас
Olegator
Не первый раз уже замечаю, что Вы, г-н Админ, пишете подобное новым юзерам. Не проще ли написать бота для подобного?
Denis
Всем привет! Подскажите, как можно в Lua сделать проверку на то что строка не равна несколько значениям?
if event.log.remote_user ~= FOO|BAR then
......
Aydar
Nikolay
Можно через таблицу со значениями, и сделать функцию, которая будет проходится по этой таблице
function includes(tbl, item)
for _, value in ipairs(tbl) do
if value == item then return true end
end
end
print(includes({ 'foo', 'bar' }, event.log.remote_user)
Aydar
Nikolay
Ах да, забыл
Aydar
Aydar
Nikolay
Точно, спасибо!
Denis
Спасибо
Olegator
Обычный vps
️ ️️
можно ли както изменить metatable для строки локально (в функции например)?
чтобы можно было индексировать строку внутрии функции или хотябы модуля
local str = 'qwe'
print(str[2])
через getmetatable('').__index меняется везде
Snusmumriken
Не а ))
Snusmumriken
Строковая метатаблица распространяется на весь луа-стейт.
Snusmumriken
️ ️️
Snusmumriken
Если есть ffi — можешь запилить настоящие мутабельные сишные строки-массивы.
️ ️️
Snusmumriken
да, типа того
Ну типа
local mystring = {}
mystring.__index = mystring
function mystring:new(str)
return setmetatable({data = str}, self)
end
for k, v in pairs(string) do
mystring[k] = function(self, ...)
return v(self.data, ...)
end
end
setmetatable(mystring, {__call = mystring.new})
Дальше навешиваешь свои функции.
Но заранее предупреждаю, что:
1. Возвращаемые данные будут нормальными строками, как у оригинальных функций;
2. Для каждой строки будет создаваться прокси-табличка.
Snusmumriken
3. Если ты делаешь конфиг для своего личного вима, можешь смело менять строковую метатабличку. Хотя вим может начать работать несколько медленнее: __index-таблица сильно быстрее __index-функции.
️ ️️
так оно по всему виму юзается и затрагивает другие плагины
Snusmumriken
Не думаю что они сломаются с добавления __index'у дополнительной проверки на тип ключа.
Твой личный плагин будет делать для тебя плюхи, остальные останутся в целом незатронутыми, потому что они, как нормальные люди — не делали бяк.
С третьей стороны, зачем именно массиво-индексация? Да, str[2] это немножко короче чем str:sub(2, 2), но принципиальная разница? Они даже выглядят примерно одинаково.
️ ️️
ну я сделал так
но хотелось бы сделать это локально
Snusmumriken
Можешь. А можешь вместо str[index] делать str:sub(index, index). У строк есть методы. Метатаблица ровно за этим и нужна.
️ ️️
я это делаю чтоб получилась красивая функция
но чтото чтоб она получилась нужно много чего некрасивого делать
Snusmumriken
То есть, ты можешь писать как
string.sub(str, i, i), так и
str:sub(i, i), и второй очень похож на доступ как с массивом.
Snusmumriken
function string:c(i)
return self:sub(i, i)
end
...
return (x:c(1), y:c(1), x:c(2), y:c(2))
Сомнительно что какой-то из модулей добавляет строкам функцию c, и тем более её использует ))
Snusmumriken
Гы, манки-патчинг. И метатаблица цела.
️ ️️
это надо c и для масивов делать
Snusmumriken
Оооо
️ ️️
что О_о
Snusmumriken
local _z = {}
function _z.string(v, i)
return tostring(v):sub(i, i)
end
function _z.table(v, i)
return v[i]
end
setmetatable(_z, {__index = function() return _z.string end})
function zip(x, y)
if type(x) ~= 'table' then
y = tostring(y)
end
local tx, ty = _z[type(x)], _z[type(y)]
return tx(x, 1), ty(y, 1), tx(x, 2), ty(y, 2)
end
️ ️️
Snusmumriken
Но в целом, использовать один и тот же зип для посимвольной и/или табличной фигни одновременно это имхо стрёмна.
Snusmumriken
Но вообще, на табличках можно сделать довольно много таких хаков.
️ ️️
ну на вимскрипте оно число индексирует как символ строки
let var = 1488
echo var[1] ; 4
а я эту функцию на луа переписываю
Snusmumriken
То есть оно даже числа как бы преобразует в строки?
️ ️️
да :^)
Snusmumriken
Его же можно использовать как дефолтный, если не нашлось другого.
️ ️️
входные данные довольно таки захардкожены и можно сделать чуть проще
потом покажу как сделал
Snusmumriken
Я уже добавил дефольный с преобразованием в строку и извлечением нужного символа ))
Костыли-и-и, зато покрыты ВСЕ типы.
Snusmumriken
А, блин, потёр. Ну хрен с ним. Кароч вот тебе универсальный ленивый (в плане написания) извлекатель индексов из чего угодно, щастье радоздь.
️ ️️