
Philipp
21.12.2017
18:38:21
Чо там было
Я видел сообщение Айдара
И Снуса
(

Google

Snusmumriken
22.12.2017
08:04:40
Там один из недавно приперевшихся написал: 'Вступай в общество 'Наставник мужика' и кадри каждую тёлку которую видишь!', Айдар меня позвал чтобы я вычистил рекламу, а я отписал что 'настоящему мужыку не нужен наставник, ибо там все просто'.
Ну, я просто вычистил чужую рекламу и свою шуточку про труселя.

annelin
22.12.2017
12:01:33
кто-нибудь AES шифровал/расшифровывал?
@Snusmumriken
aeslua почему-то ерунду какую-то выдаёт

Snusmumriken
22.12.2017
12:10:56
Понятия не имею, не ковырял шифрования (больше по сжатию) : )

Vsevolod
22.12.2017
12:11:40
взять бинды к openssl и шифровать

Roman
22.12.2017
12:17:54
и тут Сева

Vsevolod
22.12.2017
12:18:38
3 groups in common

annelin
22.12.2017
12:32:41
lua-bgcrypto-aes шифрует почему-то только блоками по 16 байт
не могу понять почему
https://github.com/moteus/lua-bgcrypto-aes/blob/efb09701c648f1045a0c0ccb95b6edcb35a4e6a4/src/laes.c

Vsevolod
22.12.2017
12:35:32
правильно, aes вообще блочный шифр с размером блока в 128 бит
поэтому все эти криворукие библиотеки именно так и шифруют: паддинг-то они не умеют делать

Google

Vsevolod
22.12.2017
12:36:19
еще раз: надо брать биндинги к openssl
или gcrypt
а не писать aes (и уж тем более НИКОГДА не применять aes в ecb режиме)

annelin
22.12.2017
12:37:12
» НИКОГДА не применять aes в ecb режиме
why?

Vsevolod
22.12.2017
12:41:02
https://github.com/guanzhi/CryptoLectures/blob/master/lectures/3-Block-Cipher.pdf страница 55

annelin
22.12.2017
12:43:02
да я примерно знаю, в чём разница между режимами шифрования
просто asterisk в функции AES_DECRYPT() поддерживает только ecb :)

Vsevolod
22.12.2017
12:53:28
да, последний блок добивается нулями
если он уже полный, то добавляется дополнительный блок, забитый нулями
но паддинг - это как раз то место, где можно мгновенно открыть портал в ад

annelin
22.12.2017
12:54:32
может, либа готовая есть?
почему ад? что мешает разбить данные на блоки по 16 байт, и если последний блок менее 16 байт - добить нулями?)
это же вроде элементарно

Vsevolod
22.12.2017
12:56:37
ну там дальше в лекциях про padding oracle рассказывается

Alxius
22.12.2017
14:18:24
и всё таки спрошу ещё раз - 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]
и даже не знаю что искать в яндексе. наверное придется чуток по другому делать, делать многомерный массив и с ним оперировать


Aydar
22.12.2017
14:33:19
и всё таки спрошу ещё раз - 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
22.12.2017
14:33:52
ну у монстра ест ьпараметры.. их же где то надо хранить. как бы они должны быть у каждого вновь созданного ИД монстра и без коллизий с другими переменными.
чтото типа класса может быт? но я в классах с трудом разбираюсь
5 лет избегал их использования

Google

Aydar
22.12.2017
14:34:44

Alxius
22.12.2017
15:27:18
блин они все для меня плохо понятны
это решение лучше чем работа через Table insert / remove?

Aydar
22.12.2017
15:41:14

Alxius
22.12.2017
16:01:38
?

Aydar
22.12.2017
16:03:03
?
Книга «Программирование на языке Lua»


Snusmumriken
22.12.2017
17:04:47
блин они все для меня плохо понятны
Ну кароч.
-- синглтон, ему не нужна функция создания новых объектов, он сам объект
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


annelin
22.12.2017
17:06:22
https://pastebin.com/TpUq8L97
враппер над bgcrypto


Aydar
22.12.2017
17:06:29
Ну кароч.
-- синглтон, ему не нужна функция создания новых объектов, он сам объект
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
И как тебе не лень писать?


annelin
22.12.2017
17:06:31
может, косячки мои поищем*?

Snusmumriken
22.12.2017
17:06:45
И как тебе не лень писать?
Скопипастил и чуть переименовал/обрезал, и отрисовку переписал (не запускал поэтому в ней не уверен).
Это просто пример ООП.

Aydar
22.12.2017
17:08:03

Snusmumriken
22.12.2017
17:08:43
Не уверен, но моей работы тут минимум.
Зато я это потом смогу копипастить когда будут задавать тупые вопросы.
Кстати, это один из примеров когда "мне нужна хеш-мапа в C++, с кучей объектов разного типа", и это является НОРМАЛЬНОЙ архитектурой для скриптов, хе ))))

Vsevolod
22.12.2017
17:12:54
в с++ с этим проблем как раз нет
а вот в сишечке я задрался слегонца

Snusmumriken
22.12.2017
17:13:36
Типа если всё наследовать от одного класса. Но если мне лень наследовать, или я хочу иметь несколько веток наследуемых классов, которые помещаются в один контейнер - жопка : )
Ладно, ладно, уже поздно обсуждать. Блин, я это ещё в группе по love растрындел, пардон, не туда вспомнил.

Vsevolod
22.12.2017
17:14:45
это из серии: "- доктор, а почему если я делаю так, то мне больно? - а вы не делайте так..."

Snusmumriken
22.12.2017
17:14:59
А я ХОЧУ ДЕЛАТЬ ТАК на плюсах, потому что привык в луях ))

Google

Snusmumriken
22.12.2017
17:16:10
Ладно, ладно, узбагойся, я в курсе что в разных яп делают разные вещи чтобы получить один и тот же результат. Можешь не продолжать, потому что в группе по love большая буча поднялась.

Vsevolod
22.12.2017
17:16:23
ну так и делай, как делает lua: сохраняй информацию о типе в рантайме и кастуй поинтер

Alexander
22.12.2017
17:16:46
Всем привет! Если кто-нибудь хочет прочитать доклад по Луа на английском на конференции 5-го февраля в Брюсселе, пишите в личку

Aydar
22.12.2017
17:17:31

Vsevolod
22.12.2017
17:17:47
тут на митапе по луа в Лондоне черт из XTX рассказывал просто офигительный доклад про gc64 в luajit

Alexander
22.12.2017
17:17:48
тут может потеряться :)

Vsevolod
22.12.2017
17:18:11
но он сказал, что никуда ездить не хочет, к сожалению
https://www.meetup.com/London-Lua-User-Group/events/241875030/ - Pete Cawley

Alexander
22.12.2017
17:19:36
Он, кажется, иногда таки ездит :)

Vsevolod
22.12.2017
17:19:40
вот ему попробуй написать

Alexander
22.12.2017
17:19:46
западных докладчиков мы окучим
вы отечественных предлагайте (пусть и экспатов)
будем делать русский десант

Vsevolod
22.12.2017
17:21:07
ну, мне не о чем рассказывать, увы, да и визу нет возможности сделать

annelin
22.12.2017
17:21:11
@cebka @Snusmumriken чекните, плез
https://pastebin.com/TpUq8L97 (Ж

Vsevolod
22.12.2017
17:21:29
@annelinlol: ENOTIME

annelin
22.12.2017
17:21:35
кк
там 10 строчек(:

Vsevolod
22.12.2017
17:22:13
Саша Насонов там много чего крутого у себя на luajit+dynasm делает

Google

Snusmumriken
22.12.2017
17:23:32
Вроде норм, хотя можно сделать в пять раз короче ))
https://pastebin.com/TpUq8L97 (Ж

annelin
22.12.2017
17:25:11
ну тут читабельность »