خداست
Коллеги, добрый день.
Можно ли здесь задавать вопросы по настройке lua?
Snusmumriken
Ну там, всякие размеры стеков, количество рекурсивных операций после которых можно начинать ругаться "слишком глубокая рекурсия, посоны, палехчи", предельное кол-во элементов в стеке и так далее.
خداست
Отлично, это я удачно зашел ))
Поставил lua на ubuntu. Скрпиты запускаются: lua script.lua,
На этом сервере стоит laravel c php, Как сделать так. что бы можно было обрабатывать скрипты в php типа
// init our lua engine
$lua = new Lua();
что и где надо донастроить, поискал по инету доки куцые., возможно это легкий вопрос для гуру
Snusmumriken
Ну например у пхп есть вызов внешней ОС фигни, типа exec("echo HAI")?
usernameak
привет
usernameak
есть вопрос по луа
Snusmumriken
Отлично, это я удачно зашел ))
Поставил lua на ubuntu. Скрпиты запускаются: lua script.lua,
На этом сервере стоит laravel c php, Как сделать так. что бы можно было обрабатывать скрипты в php типа
// init our lua engine
$lua = new Lua();
что и где надо донастроить, поискал по инету доки куцые., возможно это легкий вопрос для гуру
А, да, оно обычно есть:
https://www.binarytides.com/execute-shell-commands-php/
Есть не самый быстрый способ исполнения луёвых скриптов, ты типа такой создаёшь именованную пайпу, потом exec("lua script.lua"), этот луёвый скрипт подхватывает эту именованную пайпу, считывает из неё высланные данные, потом сгружает обратно и завершается. А ты на пхп потом считываешь то что добавили и получаешь результат.
خداست
я думал про это, но это не свовсем безопасно, exec в коде ставить. тем более что я получаю из базы скрпит в видет текста
Snusmumriken
usernameak
вкратце
usernameak
можно ли расшарить объекты между несколькими стейтами?
Pavel
usernameak
точнее по обратной стороне луа
🦥Alex Fails
А атомики если вжухнуть
خداست
usernameak
так стейты все в одном потоке
usernameak
и да, как в луа обстоят дела с многопоточностью?
usernameak
Snusmumriken
Тогда зачем несколько стейтов?
чтобы запускать несколько скриптов, каждый со своими переменными. или не нужно?
Так. Ты просто запускаешь несколько скриптов?
luaL_dostring (L, "return 'hai'");
luaL_dostring (L, "return 'yo'");
Если да, то надо проверить, очищается ли на этом окружение. Если очищается — отлично.
>и да, как в луа обстоят дела с многопоточностью?
Никак. Вообще никак, ты мог заметить что в книжке PiL ни слова не упоминается.
Есть библиотеки вроде LuaLanes, которые дают многопоточку с расшариванием объектов между стейтами (они дублируются, реально стейты с разделённой памятью и это _круто_, потому что минимизирует ошибки). Если хочешь шарить память, особенно с cdata — лучше воспользуйся корутинами. Будет кушать одно ядро, но корутины — лучшее решение для асинхронности с шарингом.
usernameak
Есть библиотеки вроде LuaLanes, которые дают многопоточку с расшариванием объектов (они дублируются, реально стейты с разделённой памятью и это _круто_, потому что минимизирует ошибки). Если хочешь шарить память, особенно с cdata — лучше воспользуйся корутинами. Будет кушать одно ядро, но корутины — лучшее решение для асинхронности с шарингом.
тут проблема: у меня многопоточный бэкенд на плюсах
Snusmumriken
На плюсовый поток открывать по стейту?
Насколько тебе необходимо именно шарить объекты, а не выдавать дубликат?
Snusmumriken
Потому что шаринг плюсовых объектов — дело плюсовой стороны, луа тут будет чисто дёргать их методы и скриптовать. Можешь написать плюсовые методы объектам, которые будут с учётом всех семафоров и мьютексов дёргаться.
usernameak
Насколько
луа-часть можно не шарить, но плюсовая должна быть общая и чтобы из луа можно было мутехи дергать
Snusmumriken
Ну тады навешивай на плюсовые объекты метатаблицу с методами, а в их методах — проверяй все мутехи.
Плюсовая либа tolua облегчит деятельность, но чутка просядет по производительности, она крутая но слишком универсальная.
usernameak
т.е. вся эта дичь реализуема?
Snusmumriken
Разумеется.
usernameak
а может один скрипт в нескольких стейтах быть?
Snusmumriken
Луа умеет в что-то очень похожее на ООП, а ещё умеет принимать и дёргать сишные/плюсовые функции поверх сишно-плюсовых же объектов. То есть, ты такой:
object:foo(bar, fobar) — и это может быть вызов плюсового метода с произвольным плюсовым кодом, в т.ч. с проверкой мутехов. В стек метода передастся указатель на плюсовый объект и пара аргументов, делай с ними шо хошь : )
> а может один скрипт в нескольких стейтах быть?
Может, но очевидно это будет несколько инстансов одного и того же скрипта.
Snusmumriken
Есть ещё простой путь, поставить openresty. Там и пых не нужен.
Dima
Почему так медленно получилось?
Dima
У меня Ruby получился быстрей всех
Dima
Ruby 16/33
Lua 57/153
JS 36/110
(create_time_sec)/(sort_time_sec)
Dima
код тут
Dima
https://goo.gl/rX6vsF
Dima
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
Dima
ой ...
Dima
у меня есть LuaRocks скомпилированный, но мне ночью лень разбераться как на нем код пускануть.
Dima
код есть.
Dima
в певром сообщении
usernameak
в случае с js это зависит от реализации
usernameak
есть дофигища реализаций js
fgntfg
Давайте оптимизировать пустой цикл.
fgntfg
Вообще бенчи дают лишь примерное понимание, кто быстрее.
Dima
класс
Денис
Как собрать zip в памяти и отдать ngx.say?
Snusmumriken
Сложно.
Snusmumriken
Во-первых, твой архив может неожиданно не влезть в оперативную память. Технически, надо бы потоком выгребать фигню, сжимать как кусочек архива и тут же делать ngx.say. Это в идеальном случае.
Во-вторых, сделай пока архивацию на диск и отдавание его ngx.say по кусочкам, чтобы гарантированно правильно пересылать, чтобы не что-то такое:
local csize = 2048 * 10
local chunk = file:read(csize)
while chunk do
ngx.say(chunk)
chunk = file:read(csize)
end
А что-то нормальное. Такой подход работает на небольших файлах, но на крупных приходится ещё дожидаться пока текущий кусочек передастся, чтобы одновременно не затягивать по скорости и не переполнять буферы.
Egor
Утра доброго. Случайно не знает никто сайта/софта для создания HUD? В результате должна выйти HTML+CSS+SVG.
Snusmumriken
В каком смысле HUD? Помнится, это почти чисто игровой термин (ещё мб для авиации), гуи с отображением хп/маны/патронов/карты/прицелов и т.п. Как оно связано с хтмл-цсс?
Snusmumriken
Ну ничоси. Тогда нарисуй в фотошопе худ (своруй где-нибудь), потом перерисуй в хтмл-кирпичики. При интеграции с игрушкой всё равно придётся всё скриптовать, скорее всего.
Egor
Andrey
Всем доброе воскресное утро. Хочу вот спросить - правильно ли я понимаю что наиболее распространенный MVC фреймворк на LUA это Sailor MVC Lua Framework ? Или проект уже стух и есть что то новое ?
Snusmumriken
Возможно : )
Есть ещё, например, Lapis как веб-фреймворк, но я не знаю насколько он "MVC".
fgntfg
Веб на Lua это какое-то странное решение, как по мне
fgntfg
Но никто не спрашивает моего сраного мнения
Snusmumriken
Тем более что не менее странное чем веб на питоне или на руби или на js. Это в 2005 году в 90% случаев были только пых/жава/перл, а сейчас веб-фреймворки на go/rust/haskell никого не удивляют и считаются "нормой".
Lucky
Вполне бодрый веб на Lua.
Lucky
Простой и понятный код, чего же более?
Александр
Может кто подкинуть пример хорошей документации lua-api какого-нибудь проекта? Например, документация к какой-нибудь игре для написания модов/аддонов
Александр
Делаю свой апи, ищу примеры оформления документации, чтобы разработчики не страдали
Lucky
usernameak
Александр
Andrey
Andrey
под этим подразумеваю что любой метод это CRUD
Snusmumriken
Вот тебе "норм дока API" https://love2d.org/wiki/
1. Деление на категории
2. В категориях — наверх выставлены объекты, вниз — функции
3. Версионирование
Snusmumriken
Мм. Ну ладно ))
Можно и эту, но в ней всё намешано в кучу, с одной стороны удобно искать с ctrl + f, с другой — отсутствует нормальное дерево, разве что подкатегории на одном большом-большом листе "для всего", и плохо с версионированием.
https://docs.coronalabs.com/api/index.html
Snusmumriken
Я бы использовал love2d-шную вариацию, но с вспомогательным "индексом" всех объектов/функций за все времена, с указателем "когда оно появилось/когда удалилось".