WDMR
Anonymous
Igor
Snusmumriken
WDMR
WDMR
что там вообще есть?
Igor
Igor
Да там всё костыльное на самом деле
Igor
Есть плагины под него для роутов
Igor
В принципе, как бекенд катит
Igor
Ну да
Igor
Но в своё время это было популярным и прикольным решением
Igor
Правда, с того момента прошло лет 10
WDMR
Не а )
если глянешь расскажи какие впечатления)
Snusmumriken
что там вообще есть?
То же что во нгинксе: проксирование, балансировка, некоторая защита от ддоса, скриптики на манер какого-нибудь апача (cms-ки есть), отдача статики, тесное слияние со всякими кешами и прочим. Всё дичайше быстрое и асинхронное на всём io. Ну как уже везде.
Snusmumriken
Ну собсно рестя это нгинкс и есть, в который впаяли луа на каждый чих.
Snusmumriken
Луёвые скриптики типа см. выполняются на стороне самого нгинкса а не всякими cgi, поэтому скорость приличная и лишние потоки/приложения не открываются.
RapidCodeLab
RapidCodeLab
вообще связка отличная, использовал ранее
WDMR
Snusmumriken
Это то что я нашёл по redlang
Anonymous
Snusmumriken
Пикча как раз оттуда.
Денис
Ребята, всем привет! Весьма радостно найти крупицы комьюнити там, где я уже отчаялся его найти.
Кто-то может показать как пишутся фабрики итераторов в Lua? Мне теория не поможет, поскольку я практик. Но может у кого-то есть некое количество примеров? Я честно попытался почитать теорию, но так нифига и не понял...
Igor
Итератором, кстати, может быть и одна только функция, без вложенной. Таким образом for key, value in next, mytable do ... end - это аналог pairs() итератора.
Timur
Igor
Денис
Igor
Igor
Ща, пять сек
Igor
Денис
Snusmumriken
Типовые разнородные итераторы можно глянуть например тут:
https://pastebin.com/ZvejNYr3 — stateless-итераторы вроде sipairs
https://pastebin.com/G8nvJ0Bi
Snusmumriken
А, тут только нет итераторов с "return function() .... end"-функциями, потому что это дорого, но эти примеры уже есть в чате.
Snusmumriken
Во, ещё stateless-итератор по utf8-символам, тоже клёвая штучка.
Snusmumriken
У stateless—итераторов есть только одна проблема — они, собственно, являются "stateless", то есть не могут удерживать состояние, и являются глубоко ограниченными стандартом. Если итератор достаточно сложен, должен возвращать больше аргументов чем 2 или ты банально хочешь изменить их порядок при выдаче в for, то тебе придётся создавать итератор под каждый итерационный цикл, или генерировать функцию/табличку удерживающую состояние. При пакетной обработке кучи одинаковой фигни — дороговато выходит, причём на пустом месте.
Денис
Денис
В общем, с вашего добродушного пинка понял что это такое. Спасибо всем!
```
function stringfields(str, delimiter, mode)
str = tostring(str)
if mode == nil then
mode = true
end
delimiter = delimiter or ({[true]=" ",[false]="%s"})[(mode == true)]
local t, spos = {}, 1
while string.find(str, delimiter, spos, mode) ~= nil do
local startFindPos, endFindPos = str:find(delimiter, spos, mode)
table.insert(t, str:sub(spos, startFindPos-1))
spos = endFindPos+1
end
table.insert(t, str:sub(spos))
return next, t
end
for block, field in stringfields("The quick brown fox jumps over the lazy dog") do
print("Block index:", block, "Field:", field)
end
```
Snusmumriken
Обрамляй код тремя ```.
Или на пк нажимай ctrl + shift + m на выделенный текст.
Денис
Snusmumriken
local M = {}
local function sipairs_next(tbl, index)
index = index + 1
local v = tbl[index]
if not v then return end
return index, v
end
-- strait ipairs with optional start index
function M.sipairs(tbl, index)
assert(type(tbl) == "table", "Arg #1 error: table expected, got " .. type(src))
index = index or 0
index = index > 0 and index - 1 or index
return sipairs_next, tbl, index % #tbl
end
Читы.
Snusmumriken
Или на пк/телефоне выдели текст и выбери в менюшке mono. Это просто хороший тон, а разбирать портянки без форматирования — говно затея.
Snusmumriken
В общем, с вашего добродушного пинка понял что это такое. Спасибо всем!
```
function stringfields(str, delimiter, mode)
str = tostring(str)
if mode == nil then
mode = true
end
delimiter = delimiter or ({[true]=" ",[false]="%s"})[(mode == true)]
local t, spos = {}, 1
while string.find(str, delimiter, spos, mode) ~= nil do
local startFindPos, endFindPos = str:find(delimiter, spos, mode)
table.insert(t, str:sub(spos, startFindPos-1))
spos = endFindPos+1
end
table.insert(t, str:sub(spos))
return next, t
end
for block, field in stringfields("The quick brown fox jumps over the lazy dog") do
print("Block index:", block, "Field:", field)
end
```
Уже лучше, но форматирование не восстановлено, пробельчики/табуляция утеряны.
Денис
Snusmumriken
Это не совсем md, это mono-шрифт с сохранением формата.
usernameak
Snusmumriken
Я знаю что Денис имеет ввиду, и это не совсем md, это просто mono. Но реализовано так же как в md — инлайны через "`" и мультилайн через "```".
Snusmumriken
Пример того как это отображается в стандартных клиентах. У тебя в Unigram иначе?
Денис
Ребят, я обобщенные скриншоты могу понять, а конкретные к сожалению - нет. Дело в том, что у меня нет зрения))) Обобщенные я могу отправить в сервис описания изображений, а конкретные, как, например, код весьма хреновастенько распознаются***
Snusmumriken
Нет зрения это как? Озвучиваешь сообщения?
usernameak
oh.
Snusmumriken
Да, проблемка.
Snusmumriken
Восстановил ссылку
https://www.nvaccess.org/
usernameak
Да, проблемка.
тогда могу догадаться почему он юзает юниграм
тдесктоп ужасно работает с любыми методами ввода-вывода кроме клавомыши и графики
Snusmumriken
Ну и все требования к форматированию становятся бессмысленными, и цепляния к терминологии в целом тоже :)
Денис
Денис
Snusmumriken
В общем, когда вставляешь код, постарайся его при вставке обрамить чем-то, и если там имеется табуляция и прочее форматирование, постарайся его сохранить.
Денис
Snusmumriken
Моя привычка править сообщения, кстати, небось приводит к требованию переслушивать, мдя.
usernameak
даже страшно представить, насколько жутко таким образом кодить :)
Snusmumriken
Забей, люди придумали очень много вариантов всего. Основная проблема — требование удерживать в голове очень много инфы разом, и тем или иным образом визуализировать деревья вложенности, которые обычно просто видны через ту же табуляцию.
Snusmumriken
Но и к этому привыкаешь.
Денис
usernameak
зрение кажется такой базовой вещью, что все равно весьма сложно представить как справляются слепые :)
Денис
А вообще, привыкаешь конечно. Когда ты за компьютером сидишь около двадцати лет, вопросов не возникает вообще)))
Snusmumriken
Представь любой способ которым с этим можно справиться, и он уже будет реализован
Snusmumriken
А нейросетки распознающие изображения это вообще красота, свежее веяние
Денис
Snusmumriken
Лично меня больше всего упарывает адаптируемость тушки организма человека, где-то наблюдал примеры использования отделов кожи или языка в качестве зоны восприятия зрением. Мол, прикладывается матрица из электродов, на которую подаётся чёрно-белый сигнал с камеры, возбуждающий нервные окончания, и зрение как бы частично возвращается, воображение начинает рисовать картинки и так далее. Очень крутая технология, вопрос только размеров матрицы.
Snusmumriken
И желательно чтобы у человека был опыт наличия зрения, чтобы было с чем сопоставлять полученные сигналы.
Денис
Лично меня больше всего упарывает адаптируемость тушки организма человека, где-то наблюдал примеры использования отделов кожи или языка в качестве зоны восприятия зрением. Мол, прикладывается матрица из электродов, на которую подаётся чёрно-белый сигнал с камеры, возбуждающий нервные окончания, и зрение как бы частично возвращается, воображение начинает рисовать картинки и так далее. Очень крутая технология, вопрос только размеров матрицы.
Ну, если про это здесь немного можно пооффтопить, то это все фигня. Оно так и не получило популярности. Были презентации проекта, привлекались подопытные, но на этом все и закончилось. Так что живем по старинке. Ну, максимум, что шагнуло вперед - это нейросетки. Сейчас даже можно спокойно вывески с помощью смартфона читать, правда подписки на это добро стоят, как крыло от Боинга.