Mikhail
Yuriy
Ну тогда можете пользовать lipp конечно я просто не пробовал его если честно.
Но не факт что он окажется проще openresty
Я кстати думал luvit умеет... а он не умеет websockets
это грустно
Yuriy
ммм... Свежатинка это хорошо
Kukuzapa
Anonymous
Всего 10 к это вес или объем? :)))
Mikhail
Anonymous
Хороший вес
Anonymous
Не мои 145к
Mikhail
Не мои 145к
у тебя вероятно не библиотеки вес, а всего проекта.
Anonymous
Нет, это в килограммах
Mikhail
@Snusmumriken хой.
может народ озвучить твою хабр статью про метатаблицы?
и запилить не как видео урока..а типа как лекцию для ленивых и слепых.
Snusmumriken
Snusmumriken
Не хотет (((
Я типа считаю себя слишком крутым, чтобы ещё и зачитывать офигительно доходчивые тексты, которые сам написал.
Мол, если нужно - пущай сами читают. Иначе - слишком тупые и ленивые, и им не нужны метатаблицы )))
Mikhail
Mikhail
fgntfg
fgntfg
а, стоп, яж ноут отдал
fgntfg
Хмм
fgntfg
видосик сделать?
Mikhail
будут. я это ви;у по просмотрам видео уроков (недоруроков) по Lua
fgntfg
/me слушает tabletop rpg
FailsBot
fgntfg слушает tabletop rpg
Mikhail
надо как скринкаст. текст ХАБР статьи на экране + тыкай мышкой и выделяй слова
fgntfg
fgntfg
нанять модель в купальнике, и на ней писать код
fgntfg
10/10
Mikhail
офтоп пример
я учился с аутистом в вузе, которые не умел читать..
но он слушал и запоминал.
Mikhail
слабоумные -> среднеумные
Snusmumriken
Они все в js-чатиках
Ivan
почему аутистов?
MudriyTigra
Всем привет)
Revertron
Привет, опять сигналы и крипта?
Anonymous
Мультя еще и инста
Anonymous
Ребят, ни у кого работы нет нормальной? Только не луа
Anonymous
Я луа не шарю
MudriyTigra
MudriyTigra
с короны сюда)
Anonymous
Ну да, вообще не прогал на луа
Snusmumriken
Я в чатике по паскалю тоже не прогаю на паскале.
Snusmumriken
Но в целом, лучше задавай такие вопросы не нам а гуглу/hh.ru. Фиг знает что ты умеешь, пущай там решают : )
Anonymous
Хх параша
Anonymous
Ну лан, извините, не буду флудить
Anonymous
Я из чатика короны
Anonymous
Там сегодня ночью этот чат скинули)
B
Как чайки прям
Anonymous
Благодарю)
Anonymous
честно говоря, только начал изучать lua, и половины вообще не понимаю, хотя читаю русский текст на белом фоне
часть информации от меня настойчиво ускользает
чувствую, придется перечитывать на второй раз
Anonymous
плюс ко всему, в этой книге Иерусалимски такие запутанные примеры
Anonymous
они совсем не помогают :D
Anonymous
да конкретных вопросов я пока не сгенерировал
читаю вот сейчас про замыкания и фабрики итераторов
мой мозг еще таблицы то не усвоил толком, поэтому и дальше воспринимать сложно)
но обязательно спрошу, если возникнет вопрос, спасибо)
Anonymous
ооо, статья про метатаблицы, благодарю))
еще и про любовь что то бонусом, почитаем
Anonymous
это очень кстати, метатаблицы тоже остались за бортом моего разума, несмотря на мои усилия их освоить :D
Anonymous
дело в том, что я не считаю себя программистом, как таковым, так как толком не знаю ни одного языка
немного программировал на C++, немного программировал на нем же под микро-контроллеры
немного на шарпе что-то писал
немного писал на pythone в масштабах небольших скриптов для конкретных нужд
то-есть, у меня есть представления о программировании, но нет углубленных знаний нигде
нигде не плотно, так сказать))
Anonymous
возможно, поэтому туго идет)
будь выучен хоть один язык, другой всегда учить проще
Anonymous
занятная аналогия, но не представляю себе программирование без знания языков)
нет, представляю, конечно
но практических приложений не представляю
Anonymous
тут не спорю
Anonymous
кстати, вот с переключением - это да, проблемы :D
когда сегодня весь день читаешь/кодишь/думаешь о Lua
потом тебе нужно написать код под микроконтроллер на плюсах
и ты материшься минут пять, исправляя ошибки, выдаваемые компилятором
в основном о забытых ";" везде где только можно
Anonymous
неблагодарное занятие
привычка НЕ делать что-то приобретается невероятно быстро
я бы даже сказал незаметно быстро
Anonymous
у меня неопределенное отношение к МММ и Мавроди (rip)
не углублялся в его судьбу, поэтому не могу судить)
насколько я знаю, сама идея - гениальна, и когда он это делал в первый раз - сам охренел от результатов
но это уже оффтоп
лучше спрошу про lua
Anonymous
я не понимаю зачем вызывать функцию, возвращающую в качестве значения другую функцию-итератор
почему просто не вызвать функцию-итератор? =\
скорее всего, до меня просто смысл всего прочитанного не дошел, поэтому я пока не понимаю
Anonymous
вот
в замыкании то и кроется смысл моего непонимания (наверно)
пойду перечитаю главу про замыкания
Anonymous
из "лексической области видимости" типа
Anonymous
третье, кажется
Anonymous
на русском?
на английском не очень комфортно читать
Anonymous
ну, тогда с одним разберусь
тогда можно и другое почитать на английском
Anonymous
спокойного сна)
спасибо за участие и дружелюбие)
Snusmumriken
спокойного сна)
спасибо за участие и дружелюбие)
Карочи, суть замыканий в областях видимости. Если к каким-то локальным переменным имеет доступ и только одна функция - они не уничтожаются, как если бы были просто локальными, а заворачиваются в замыкание, пока существует эта функция.
Итераторы в луа работают примерно следующим образом:
Сам итератор, допустим, перебирающий числа от A до B с шагом C (всё положительное, для простоты):
function iter(a, b, c)
-- переменные передаются в функцию
-- всё равно что
-- local a, b, c = args[1], args[2], args[3]
-- если бы была таблица со всеми
-- принятыми аргументами
c = c or 1
a = a - c -- чтобы начиналось с "a".
return function()
-- эта функция имеет доступ к
-- локальным переменным выше,
-- и может их изменять.
-- Они в замыкании этой функции как раз, то есть,
-- только эта функция имеет к ним доступ,
-- больше никто
a = a + c
-- прерываем, если достигли второй границы
if a > b then return end
return a
end
end
local el_ten_eleven = iter(10, 11) -- пасхалка
-- И дальше эту функцию можно дёргать несколько раз: она сама, будет решать что делать дальше, используя в решении переменные из замыкания.
print(el_ten_eleven()) --> 10
print(el_ten_eleven()) --> 11
print(el_ten_eleven()) --> nil
И, фактически, конструкция for a, b, c, d, e in [func] do ... end - сокращение от:
local it = [func]
-- пока существует переменная-функция it,
-- замыкание будет жить
local a, b, c, d, e = it()
while a do
-- код твоего цикла
a, b, c, d, e = it()
end
it = nil
-- а когда она удалится -
-- удалится содержимое её замыкания
То есть, наш итератор может работать вот так:
for i in iter(1, 10, 2) do print(i) end
> 1
> 3
> 5
> 7
> 9
Tverd
Молодчина )
Snusmumriken
Моя боброта не знает границ
Snusmumriken
В качестве развлечения, напишем функцию-итератор, обходящую таблицы-массивы в обратном порядке.
function ripairs(tbl)
local max = #tbl + 1
return function()
max = max - 1
if max > 0 and tbl[max] then
return max, tbl[max]
end
end
end
for i, v in ripairs{10, 20, 30} do
print(i, v)
end
> 3 30
> 2 20
> 1 10
fgntfg
Хмм, Снус, а можно же переопределить итерратор, не?
Snusmumriken
И, например, функцию-итератор по входящим сообщениям из сети по udp (для простоты):
function receive(socket)
return function()
local data, ip, port = socket:receivefrom()
if data then return data, ip, port end
end
end
local udp = require'socket'.udp
udp:setsockname('*', 8081)
udp:settimeout(0)
for data, ip, port in receive(udp) do
print(data, ip, port)
end
Если тут выставить неограниченный таймаут, можно вообще всю логику запихнуть в цикл, он будет бесконечным: появилось сообщение - приняли, не появилось - ждём.
Elias
Мой любимый итератор:
local function values(t)
local i = 0
if t then
return function () i = i + 1; return t[i] end
else
return function() end
end
end
А потом:
local arr = { 5, 20, 60 }
for value in values(arr) do
print(value)
end
Elias
В 90% случаев индекс не нужен, поэтому ipairs надоедает :"D
fgntfg
У ipairs индекс можно в _ засунуть и забить