Snusmumriken
Так что получение массива ansi-символов — function string_slice(str, a, b) local out = {} for i = a, b or #str do table.insert(out, str:sub(i, i)) end return out end
Snusmumriken
C utf8 малясь веселее.
Roman
Лучше к этому не привыкать. Это изменение стандартного поведения строк, что не очень хорошо для консистентности.
А как тогда, у меня половина данных, которые при приеме надо сплитить? Так Питон приучил😇
Snusmumriken
А как тогда, у меня половина данных, которые при приеме надо сплитить? Так Питон приучил😇
Ну, тут несколько вариантов. 1. Написать несколько функций для слайсов; 2. Обернуть вокруг данных ООП обёртку "массива" с методами для слайсов. Будет не хуже.
Snusmumriken
inspect = require'inspect' array_class = setmetatable({}, {__index = table}) array_class.__index = array_class function array_class:slice(a, b) local out = newArray({}) for i = a, math.max(b or #self, #self) do out:insert(self[i]) end return out end function array_class:map(func) for i = 1, #self do self[i] = func(self[i], i) end return self end function newArray(data) return setmetatable(data or {}, array_class) end something = newArray({10, 20, 30, 40, 50}) something:insert(60) -- взято из table inspect(something) --> {10, 20, 30, 40, 50, 60} v = something:remove(4) -- взято из table print(v) --> 40 inspect(something) --> {10, 20, 30, 50, 60} other = something:slice(3, 5) -- наш метод inspect(other) --> {30, 50, 60}
Snusmumriken
🙏
Вот тебе обёртка для массивов, со всеми методами из библиотеки table, вписавшихся в неё как родные, и которую можно расширять до опупения чем хочешь. inspect — вот это: https://github.com/kikito/inspect.lua, очень полезная штука для печати содержимого.
Snusmumriken
Отлично, а то начал падать духом...
Ты начинаешь проникаться лёгкостью и минимумом строчек которые требуется написать чтобы сделать что-то неплохое и фичеватое и сделать похожий функционал привычных штук?
Денис
C utf8 малясь веселее.
Та в принципе, в таком видеможно и не особо молясь (если мы кодим на 5.3)
Денис
C utf8 малясь веселее.
function utils.exposeUTF8Chars(utfString) local result = {} for _, character in utf8.codes(utfString) do table.insert(result, utf8.char(character)) end return result end
Snusmumriken
RomD насколько ты живой?
Aqendo
Бип буп)
Денис
Ребят, какой json посоветуете из LuaRocks?
Денис
Ребят, какой json посоветуете из LuaRocks?
Тут их как-то ненормально много...
Александр
https://luarocks.org/modules/xpol/rapidjson
Snusmumriken
Ребят, какой json посоветуете из LuaRocks?
cjson норм. Там есть модуль cjson.safe который не рейзит ошибок.
Snusmumriken
Странно
Денис
Я вообще не понимаю как собрать билд тулзы так, чтобы хотя бы 40 процентов того, что мне надо, собиралось...
Igor
cjson в луароксе сломан, он только под 5.1 собирается
Igor
Если и так не заведётся, то добавь вместо версии параметр --local "-DLUA_COMPAT_5_3"
Igor
Так уже точно должен скомпилиться
Денис
а, ну под виндой --local "/DLUA_COMPAT_5_3"
Ага, если компатибл выставить, он ругается, что вообще такого рокса нет.
Igor
Класс
Igor
Могу собрать тебе cjson, если надо
Денис
Так а чего, по сути, мне даже на lua просто написанный json можно. Я не думаю, что в этом есть какие-то проблемы... Просто самому писать не хочется...
Igor
Так в луароксе и называется
Денис
Денис
Так в луароксе и называется
Главное, чтобы там все было стандартно, чтобы к Seiran можно было приконтачить
Igor
dkjson.encode/dkjson.decode
Igor
есть поддержка lpeg для ускорения декодирования
Денис
есть поддержка lpeg для ускорения декодирования
А в чем подвох с lpeg? Я ее тут вижу, но еще до кода не добрался...
Igor
А в чем подвох с lpeg? Я ее тут вижу, но еще до кода не добрался...
Это сишная библиотека для парса выражений. http://www.inf.puc-rio.br/~roberto/lpeg/
Igor
Необязательная
Денис
Необязательная
Не, я уже понял, что это опционально. Просто, чтобы знать
Igor
Ну а так - да
Денис
Окау, будем понимать
Денис
Эээм... function seiran:setJsonHandler(encode, decode) self.json.decode = decode self.json.encode = decode end Меня терзают смутные сомненья...
Денис
А чего такого?
Декодер в декодер, и декодер в енкодер?
Igor
А, не увидел, ошибка походу. Что за либа вообще? Впервые слышу.
Денис
Да кстати, предложения по хорошему VK API также принимаются.
Денис
Здесь в принципе все красиво. Единственное, чего нет - авторизации. Но авторизацию можно и через стандартный браузер реализовать. Главное - придумать нормальную валидацию токена по экспайру
Igor
https://github.com/VanderCat/Seiran
А она encode функционал и не использует, это как заглушка скорее
Igor
Только decode
Денис
Только decode
Возможно, но если ты ожидаешь encode, не логично было бы? 🙂
Денис
Или вообще енкод не требовать в аргументах
Денис
Пути кодеров неисповедимы 😀
Snusmumriken
Есть шикосная https://github.com/rxi/json.lua, которая пишет места ошибок при форматировании, и чисто на луях.
Aydar
Ага, если компатибл выставить, он ругается, что вообще такого рокса нет.
Можно попробовать отсюда скачать исходники https://github.com/DaveGamble/cJSON и с помощью cmake собрать, по идее проблем быть не должно потому что cjson я даже кросскомпилял с линукса для винды
Денис
По сути, там, если так вдуматься, особо тяжелого кода быть не должно
Денис
Мне даже, кстати, родной код предпочтительнее - тут у нас возник спор, что я мессенжер для ВК на Lua не напишу)))
Igor
А, ну и ещё клиент для ютюба писал простой
Igor
Сейчас, конечно, всё успешно потерялось, думаю
Alxius
как выглядят джуны.
Snusmumriken
На 70%
Намана
Денис
Дропни жсон, юзай нативные луашные таблы.
Так для того, чтобы их юзать, сначала надо экспознуть пришедший json! 😂
Lucky
А, ты тащишь жсон по сети. Понятно.
Lucky
http://mageddo.com/tools/json-to-lua-converter
Lucky
Так может тупо файлик конвертнуть автозаменой без парсинга?
Денис
Вообще, мне тут в голову приходит, что, при наличии прямых рук, хорошей сетевой либы и нормального бэкенда, API можно рулить полностью на метатаблицах, и это же офигеть как вдохновляет... Написал строчек 50 кода - а у тебя и весь фактически API готов! Знай себе, читай доку у холдера, да и все!
RussianServiceDrop
Здравствуйте, такой вопрос появился. Пишу я луа движок, хочу как то библиотеки lua (.so) подгружать в оперативку а не на жесткий диск, это возможно?
RussianServiceDrop
У тебя интерпретатор на жёстком диске
Мне нужно с сервера подгружать сишные либы
Александр
Мне нужно с сервера подгружать сишные либы
Ну скачиваешь... и подключаешь
RussianServiceDrop
Ну скачиваешь... и подключаешь
Без загрузки на жесткий диск нельзя?
Snusmumriken
Мне нужно с сервера подгружать сишные либы
Примонтируй удалённую директорию, пропиши в LUA_CPATH Тебе хватит SSHFS или любого другого аналога для монтирования.