Dmitriy
что то не получилось
Igor
Dmitriy
Например что-то такое.
function string:split(sep)
sep = sep or ","
local out = {}
local a, b, i, _ = 1, #self, 1
_, b = self:find(sep)
while a and b do
out[i] = self:sub(a, b - 1)
a, i = b + 1, i + 1
_, b = self:find(sep, a)
end
out[i] = self:sub(a)
return out
end
или я что то упустил?
Snusmumriken
Ты вызвал функцию до её объявления
Dmitriy
тьфу, привычка с js
Dmitriy
Dmitriy
Snusmumriken
А я знаю что всё круто )
mva
не всё
mva
вторая строка с пробела начинается :)
Dmitriy
Все верно - тестовая строка для понимания того, что ничего лишнего не отрежется
Dmitriy
ну и я тестировал функции деления по пробелам тоже
Dmitriy
Dmitriy
Snusmumriken
Dmitriy
Теперь при добавлении в ВКС нового контакта - его номер и имя автоматически выведутся на панель
mva
что за девайс такой с конфигом на lua?
Dmitriy
панелька какая-то с тачем.
mva
Dmitriy
дали задачу за 2е суток автоматизировать конференц -комнаты с импользованием данного девайса
Dmitriy
Товарищи, помогите со списком, там трабл с буфером обнаружился... я за целый день так и не смог понять я получаю строку типа ,pan1, 1 room1
Как мне сделать следующее - смотрю на строку - если там pan1 - то я беру значение, из него извлекаю индекс и по этому индексу в addrbook={} записываю значение?
Dmitriy
это ipairs или find использовать?
Dmitriy
в js удобно использовать push
mva
mva
1) "pan1" это конкретная строка которую нужно конкретно искать, или это пример из миллиарда возможных вариантов?
2) что именно в этом контексте понимается под "значением"?
Dmitriy
ну - pan1 - это ключ, чтобы девайс понимал, что это ему
Luсky
Dmitriy
тут все c# или Нодисты - как я )
Luсky
тут это в чятике
Luсky
на удалёнку
Dmitriy
а понял
Dmitriy
проверку я смог сделать
Dmitriy
Теперь кажется понял как и индекс отдуплить
Dmitriy
index, data = str:find("(%d+) (%S)")
mva
Dmitriy
Dmitriy
index, data = str:match("pan1,(%d+) (.+)")
Так?
mva
Кстати, а есть тут кто-нибудь, кто шарит в (или хотя бы слышал о) OpenResty? Ну или хотя бы просто умеет в Lua на уровне между джуниором и миддлом?
Условно, способный набросать какой-нибудь простенький API (а-ля что-нибудь из оперы if param[abc] == "moo" then local res = something() return res end)?
Особо большой скилл не требуется, но хотя бы немножко, чтобы не тратить по полгода на каждую мелкую фичу.
mva
Aqendo
Snusmumriken
:match не?
find вернёт подстроки если их сделать в скобочках, но первым пихнёт индекс
mva
mva
ему индексы файнда не нужны :)
mva
ему сами сматченные строки нужны
Snusmumriken
Ну ды
Snusmumriken
mva
так что с файндом это было бы _, _, index, data=...
mva
Snusmumriken
И я слишком ленив для чего-то что прям не адово интересно, у меня мотивационные проблемы.
Snusmumriken
Но я прост даю пример для новичков, тут нет ничего шибко непонятного, плюс примеры функций которые уже есть в ресте вроде парсилок ури.
Dmitriy
Dmitriy
Dmitriy
function on_client_recv_data(packet)
local char = string.char
for i = 0, #packet do
packet[i] = char(packet[i])
end
str1 = table.concat(packet)
index,data = str1:match("pan2,(%d+) (.+)")
if index ~=nil then
addr[tonumber(index)] = index.." "..data
end
end
Snusmumriken
Выделил бы в отдельную функцию, типа
function decode_packet(packet)
local char = string.char
for i = 0, #packet do
packet[i] = char(packet[i])
end
return table.concat(packet)
end
: )
Dmitriy
Adapa
Igor
Ошибка вроде как максимально прозрачно говорит, в чем дело
Snusmumriken
Оно вызывает сишную функцию strftime.
И функцию ОС localtime.
Adapa
Это получается все сишные проги, использующие эту функцию, вывалятся с ошибкой после 2038 года? Классно сделано.
Igor
Igor
mva
mva
$ lua5.1
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> =os.date('%Y',2148000000)
2038
> return os.date('%Y',3248000000)
2072
>
mva
обмажутся всякими недo-ОС, а потом обвиняют Си 🤷♂️
Adapa
t = 2147000000
t = os.date('*t', t)
print(t['year'])
t = 2148000000
t = os.date('*t', t)
print(t['year'])
Так тоже ошибка. Печаль-беда.
mva
mva
точнее, "для разработки без обмазывания миллиардом костылей и воркэраундов"
mva
говнаная libc у неё далеко не единственный косяк
Adapa
Ну может это только у тех кто использует семерку 32 битную, как я. На окнах поновее может такой проблемы не быть)
mva
mva
в 2023 году, на 64битном железе использовать 32битные ОС и жаловаться на 32битный счётчик времени - такое себе
mva
впрочем, это не отменяет других косяков венды 🤷♂️
Igor
Он как бы есть, но обеспечение совместимости практически на нулевом уровне.
Adapa
Вы правы. 32 битный int чуть переполняется 🤷🏻
Igor
Igor
Я ещё в году эдак 12ом ушёл с семёры