Anonymous
А ось с скриптовой базой на луе
в netBSD в ядро втащили, чтобы налету рулить
خداست
Коллеги, добрый день. Можно ли здесь задавать вопросы по настройке lua?
Snusmumriken
Коллеги, добрый день. Можно ли здесь задавать вопросы по настройке lua?
А то. Только луа, обычно, настраивается один раз при компиляции интерпретатора, в 99% случаев — самостоятельно (дефолтными настройками).
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
можно ли расшарить объекты между несколькими стейтами?
Snusmumriken
я думал про это, но это не свовсем безопасно, exec в коде ставить. тем более что я получаю из базы скрпит в видет текста
Тады тебе надо как-то вкрутить сам интерпретатор, чтобы как раз делать что-то такое: $lua = new Lua(); lua('return "HelloWorld"') Надо поискать либы. Или вкрутить луа в твой вебсервер и редиректить на него.
Snusmumriken
можно ли расшарить объекты между несколькими стейтами?
Можно. Вопрос не по луа а по C/С++, правда. С мутексами и прочими семафорами заморочишься.
usernameak
точнее по обратной стороне луа
🦥Alex Fails
А атомики если вжухнуть
usernameak
так стейты все в одном потоке
Snusmumriken
так стейты все в одном потоке
Тогда зачем несколько стейтов? Шарить можно, типа lua_pushuserdata(L, obj_ptr); Всё как всегда.
usernameak
Тогда зачем несколько стейтов? Шарить можно, типа lua_pushuserdata(L, obj_ptr); Всё как всегда.
Тогда зачем несколько стейтов? чтобы запускать несколько скриптов, каждый со своими переменными. или не нужно?
usernameak
и да, как в луа обстоят дела с многопоточностью?
خداست
вот, вот об этом и думаю и мечтаю, где бы такую либу раздобыть или как написать
я поискал, что есть либа для apache, которая mod_lua, но не удалось поставить и настроить
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
я поискал, что есть либа для apache, которая mod_lua, но не удалось поставить и настроить
https://stackoverflow.com/questions/13806550/calling-a-so-shared-library-object-from-php Цепляешь lua.so, экспортишь из неё всё что нужно по списку https://www.lua.org/manual/5.1/manual.html#3 Потом дёргаешь lua_pcall/luaL_dostring и т.п. : ) Это "сложный путь" но сам по себе норм, типичный биндинг.
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? Помнится, это почти чисто игровой термин (ещё мб для авиации), гуи с отображением хп/маны/патронов/карты/прицелов и т.п. Как оно связано с хтмл-цсс?
Egor
В каком смысле HUD? Помнится, это почти чисто игровой термин (ещё мб для авиации), гуи с отображением хп/маны/патронов/карты/прицелов и т.п. Как оно связано с хтмл-цсс?
именно для авиации, есть игрушка, и там UI можно кастомизировать через хтмл. + экраны игровые есть, где можно выводить инфу, игра про космос. И вот хочу найти красивый HUD с авиагоризонтом, и тд
Snusmumriken
Ну ничоси. Тогда нарисуй в фотошопе худ (своруй где-нибудь), потом перерисуй в хтмл-кирпичики. При интеграции с игрушкой всё равно придётся всё скриптовать, скорее всего.
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 какого-нибудь проекта? Например, документация к какой-нибудь игре для написания модов/аддонов
Александр
Делаю свой апи, ищу примеры оформления документации, чтобы разработчики не страдали
Andrey
Веб на Lua это какое-то странное решение, как по мне
Ну раз его изучаю - буду делать на нем. Пых знаю, но не интересно уже.
usernameak
в лс
и мне тоже
ShadoWalkeR
Делаю свой апи, ищу примеры оформления документации, чтобы разработчики не страдали
Делай как тебе сердце подскажет - сделанное с душой не приносит страданий разработчикам😈
Andrey
Делаю свой апи, ищу примеры оформления документации, чтобы разработчики не страдали
если я понял правильно то делайте сразу RestFull потом вам спасибо скажут
Andrey
под этим подразумеваю что любой метод это CRUD
Александр
если я понял правильно то делайте сразу RestFull потом вам спасибо скажут
нет, под API я подразумевал набор классов, методов, полей, функций для работы с чем-либо, написанном НЕ на луа, с помощью луа. Отличный пример - API для написания аддонов к WoW, но меня интересует именно пример проектов с хорошей документацией API
Snusmumriken
Вот тебе "норм дока API" https://love2d.org/wiki/ 1. Деление на категории 2. В категориях — наверх выставлены объекты, вниз — функции 3. Версионирование
Snusmumriken
Мм. Ну ладно )) Можно и эту, но в ней всё намешано в кучу, с одной стороны удобно искать с ctrl + f, с другой — отсутствует нормальное дерево, разве что подкатегории на одном большом-большом листе "для всего", и плохо с версионированием. https://docs.coronalabs.com/api/index.html
Snusmumriken
Я бы использовал love2d-шную вариацию, но с вспомогательным "индексом" всех объектов/функций за все времена, с указателем "когда оно появилось/когда удалилось".