Anonymous
А как на паттернах в луа захватить первое слово, если оно либо "set", либо "get"?
Language: lua Source: print(string.match("get command shutdown", "(([sg])et) ?(.*)")) Result: get g command shutdown
Kukuzapa
Никто не тестил на ляписе загрузку файла из формы с несколькими полями встроенным bustedом?
Snusmumriken
Уу, сколько ляписопользователей.
Aleksey
Эээм, три?
Snusmumriken
Уже дофига
Saphire
Что это вообще такое?
Aleksey
Я так понял, что в lua больше ноля - дофига
Aleksey
Фреймворк для сайтов
vvzvlad
Language: lua Source: print(string.match("get command shutdown", "(([sg])et) ?(.*)")) Result: get g command shutdown
да)). Но вот с парой catch/set_period будут проблемы
Anonymous
@vvzvlad ты про них ничего не говорил :) обычно советуют использовать самодельный string.split. Потом можешь по таблице ключ=функция вешать свой функционал на первое слово А по делу, у меня лежит полурабочий токенайзер команд. надо допилить и выложить
vvzvlad
Да ладно, там команд не очень много, сделаю на if-ах.
Snusmumriken
Там один из недавно приперевшихся написал: 'Вступай в общество 'Наставник мужика' и кадри каждую тёлку которую видишь!', Айдар меня позвал чтобы я вычистил рекламу, а я отписал что 'настоящему мужыку не нужен наставник, ибо там все просто'. Ну, я просто вычистил чужую рекламу и свою шуточку про труселя.
Anonymous
кто-нибудь AES шифровал/расшифровывал?
Anonymous
@Snusmumriken
Anonymous
aeslua почему-то ерунду какую-то выдаёт
Snusmumriken
Понятия не имею, не ковырял шифрования (больше по сжатию) : )
Vsevolod
взять бинды к openssl и шифровать
Roman
и тут Сева
Vsevolod
3 groups in common
Anonymous
lua-bgcrypto-aes шифрует почему-то только блоками по 16 байт
Anonymous
не могу понять почему
Anonymous
https://github.com/moteus/lua-bgcrypto-aes/blob/efb09701c648f1045a0c0ccb95b6edcb35a4e6a4/src/laes.c
Vsevolod
правильно, aes вообще блочный шифр с размером блока в 128 бит
Vsevolod
поэтому все эти криворукие библиотеки именно так и шифруют: паддинг-то они не умеют делать
Vsevolod
еще раз: надо брать биндинги к openssl
Vsevolod
или gcrypt
Vsevolod
а не писать aes (и уж тем более НИКОГДА не применять aes в ecb режиме)
Anonymous
» НИКОГДА не применять aes в ecb режиме why?
Vsevolod
Vsevolod
https://github.com/guanzhi/CryptoLectures/blob/master/lectures/3-Block-Cipher.pdf страница 55
Anonymous
да я примерно знаю, в чём разница между режимами шифрования
Anonymous
просто asterisk в функции AES_DECRYPT() поддерживает только ecb :)
Anonymous
https://github.com/guanzhi/CryptoLectures/blob/master/lectures/3-Block-Cipher.pdf страница 55
как выравнивание правильно сделать? нулями просто забить?
Vsevolod
да, последний блок добивается нулями
Vsevolod
если он уже полный, то добавляется дополнительный блок, забитый нулями
Vsevolod
но паддинг - это как раз то место, где можно мгновенно открыть портал в ад
Anonymous
может, либа готовая есть?
Anonymous
почему ад? что мешает разбить данные на блоки по 16 байт, и если последний блок менее 16 байт - добить нулями?)
Anonymous
это же вроде элементарно
Vsevolod
ну там дальше в лекциях про padding oracle рассказывается
Alxius
и всё таки спрошу ещё раз - enemy = {}; function enemy:add(obj) table.insert(self, obj) end function enemy:add(obj,x2,y2,rotate,x2pla2am,y2pla2am) table.insert(self, obj,x2,y2,rotate,x2pla2am,y2pla2am) end Alxius R, [22.12.17 16:14] можно ли так писать Alxius R, [22.12.17 16:18] не врублюсь никак как передачу параметров сделать Alxius R, [22.12.17 16:18] и даже не знаю что искать в яндексе. наверное придется чуток по другому делать, делать многомерный массив и с ним оперировать
Alxius
ну у монстра ест ьпараметры.. их же где то надо хранить. как бы они должны быть у каждого вновь созданного ИД монстра и без коллизий с другими переменными.
Alxius
чтото типа класса может быт? но я в классах с трудом разбираюсь
Alxius
5 лет избегал их использования
Alxius
блин они все для меня плохо понятны
Alxius
это решение лучше чем работа через Table insert / remove?
Alxius
?
Snusmumriken
блин они все для меня плохо понятны
Ну кароч. -- синглтон, ему не нужна функция создания новых объектов, он сам объект enemies = {list = {}} function enemies:add(enemy, ID) ID = ID or #self.list + 1 -- в качестве self передаётся таблица enemies self.list[ID] = enemy return ID end function enemies:remove(ID) if self.list[ID] then self.list[ID] = nil -- если удалили - вернуть true return true end end function enemies:update(dt) for k, v in pairs(self.list) do if v.update then v:update(dt) end end function enemies:draw() for k, v in pairs(self.list) do if v.draw then v:draw() end end -- класс который умеет плодить объекты Bug = {} Bug.__index = Bug -- чтобы методы объектов искать Bug.img = love.graphics.newImage('sprites/bug.png') function Bug:new(map, x, y, hp, dmg) local o = {} o.x = x or 0 o.y = y or 0 o.hp = hp or 5 o.dmg = dmg or 2 o.map = map o.direction = 'up' -- возвращаем таблицу -- с прицепленными методами класса return setmetatable(o, self) end function Bug:update(dt) -- сюда пихаем ИИ if self.direction == 'up' then if self.map[self.x][self.y].items[1].isPlayer then self.y = self.y - 1 self:attack(self.x, self.y) end ... end end function Bug:draw() local w, h = self.img:getDimensions() local angle = math.pi if self.direction == 'left' then angle = angle * 1 end if self.direction == 'down' then angle = angle * 2 end if self.direction == 'right' then angle = angle * 3 end love.graphics.draw(self.img, self.x - w/2, self.y - h/2, angle, 1, 1, w/2, h/2) end function Bug:attack(x, y) for i, v in ipairs(self.map[x][y].items) do if v.applyDamage then v:applyDamage(self.dmg) end end end map = ... -- создаём объект класса "жук" local bug = Bug:new(map, 10, 20) -- добавляем его в список всех противников enemies:add(bug) function love.update(dt) enemies:update(dt) end function love.draw() enemies:draw() end
Anonymous
https://pastebin.com/TpUq8L97
Anonymous
враппер над bgcrypto
Anonymous
может, косячки мои поищем*?
Snusmumriken
Скопипастил и чуть переименовал/обрезал, и отрисовку переписал (не запускал поэтому в ней не уверен). Это просто пример ООП.
Snusmumriken
Не уверен, но моей работы тут минимум.
Snusmumriken
Зато я это потом смогу копипастить когда будут задавать тупые вопросы. Кстати, это один из примеров когда "мне нужна хеш-мапа в C++, с кучей объектов разного типа", и это является НОРМАЛЬНОЙ архитектурой для скриптов, хе ))))
Vsevolod
в с++ с этим проблем как раз нет
Vsevolod
а вот в сишечке я задрался слегонца
Snusmumriken
Типа если всё наследовать от одного класса. Но если мне лень наследовать, или я хочу иметь несколько веток наследуемых классов, которые помещаются в один контейнер - жопка : ) Ладно, ладно, уже поздно обсуждать. Блин, я это ещё в группе по love растрындел, пардон, не туда вспомнил.
Vsevolod
это из серии: "- доктор, а почему если я делаю так, то мне больно? - а вы не делайте так..."
Snusmumriken
А я ХОЧУ ДЕЛАТЬ ТАК на плюсах, потому что привык в луях ))
Snusmumriken
Ладно, ладно, узбагойся, я в курсе что в разных яп делают разные вещи чтобы получить один и тот же результат. Можешь не продолжать, потому что в группе по love большая буча поднялась.
Vsevolod
ну так и делай, как делает lua: сохраняй информацию о типе в рантайме и кастуй поинтер
Alexander
Всем привет! Если кто-нибудь хочет прочитать доклад по Луа на английском на конференции 5-го февраля в Брюсселе, пишите в личку
Vsevolod
тут на митапе по луа в Лондоне черт из XTX рассказывал просто офигительный доклад про gc64 в luajit
Alexander
тут может потеряться :)
Vsevolod
но он сказал, что никуда ездить не хочет, к сожалению
Vsevolod
https://www.meetup.com/London-Lua-User-Group/events/241875030/ - Pete Cawley
Alexander
Он, кажется, иногда таки ездит :)
Vsevolod
вот ему попробуй написать
Alexander
западных докладчиков мы окучим
Alexander
вы отечественных предлагайте (пусть и экспатов)
Alexander
будем делать русский десант
Vsevolod
ну, мне не о чем рассказывать, увы, да и визу нет возможности сделать
Anonymous
@cebka @Snusmumriken чекните, плез
Anonymous
https://pastebin.com/TpUq8L97 (Ж
Vsevolod
@annelinlol: ENOTIME
Anonymous
кк
Anonymous
там 10 строчек(:
Vsevolod
Саша Насонов там много чего крутого у себя на luajit+dynasm делает
Snusmumriken
Вроде норм, хотя можно сделать в пять раз короче ))