Snusmumriken
Ты мог видеть что-то о веб-фреймворке под названием React, где есть контейнеры которые реагируют на изменения других контейнеров. Это эксель.
Snusmumriken
Да, я как раз читал )
Snusmumriken
Мы в вузе по преколу делали на экселе game-of-life как лабу.
Snusmumriken
Вообще оно было в виде обучения макросам, поэтому там было два буфера и макро по копированию результатов из блока с формулками в блок отображения
Ruslan
Както пробовал через pipe в качестве инпута протолкнуть видео нл не вышло - оно сначало запихивало весь ролик а только потом начинало обработку. Возможно там нужно было както хитро извернуться но у меня не мозгов не хватило на эту затею)
Константин
Кто хотел тот и набежал, нет?
Snusmumriken
Роблоксеры блин
Hello, World! 🎄
Да кто этот роблок ваш, то ли движок, то ли игра. Постоянно слышу про эту фигню.
Константин
Да кто этот роблок ваш, то ли движок, то ли игра. Постоянно слышу про эту фигню.
Онлайн игра для детей, где ты можешь создавать комнаты со скриптингом на луа
Константин
И зарабатывать на донатах с этих же детей
Hello, World! 🎄
Aqendo
А это уже интересно)
причем нехило так зарабатывать.
Vyacheslav
дайте ffmpeg под msdos
https://sourceforge.net/projects/ffmpeg-x264-dos/
Ruslan
может я хочу HEVC 8k под досом HDR
Vyacheslav
ну началось перебираение
Вилби
Как сделать встройку Си в прогу на Lua?
Igor
Как сделать встройку Си в прогу на Lua?
Два варианта: FFI и написание сишной библиотеки. Первый самый простой, для второго надо качать исходники lua, собирать dll'ку (или so/dylib), экспортирующую функцию luaopen_названиесуперлибы ну и дальше через require её подключать. На гитхабе поройся, там дохрена примеров сишных библиотек для Lua.
Snusmumriken
https://pastebin.com/Ag07yDKS
Igor
Если человек задаёт такой вопрос, значит он уже знаком как с Си, так и с линковкой библиотек и по этому опускаю этот шаг, дабы не писать войну и мир. В конкретном случае человека интересовало как писать сишные модули для Lua, я его направил в место, где он может найти эту информацию.
Денис
"собирать" относится к дллке, не к интерпретатору Lua.
Ааа, ну это разумеется, а то я уж думал пойдут советы типа "собери линкер сам под компилятора, а потом поговорим" 😄
Денис
На сях наверняка все как-то попроще, хотя наверно со строками тоже повозиться придется, ибо Lua не обозначает строки, но чаще всего там UTF8 вращается, а в винде, например - widechar. Я кстати пробовал писать одну и ту же либу на PureBasic и FreeBasic. либа была прокладкой между обычной CDECL со всеми вытекающими в виде wchar_t. И оказалось таки, что на пурике со строками как-то стабильнее и проще. На фрибесике пришлось писать класс, который через kernel32 перекодировал, но оно то работало, то крешилось. В общем, GCC в данном случае не сработал)))
Vladislav
Привет! Слушайте, есть какой-нибудь софт, пакующий многомодульный луа скрипт в сингл луа файл? Для LuaJIT, без модулей на LuaC? То есть, просто много луашек, связанных между собой require'ами
Vladislav
Lua-amalg я пользовался.
это вот этот? https://github.com/siffiejoe/lua-amalg
Есть и другие, гуглятся на английском. Вообще, там ничего сверхъестественного нет, можно посмотреть, что делает, и написать самостоятельно, если не устроит.
Vladislav
что пишешь? )
cli'шку одну, на argpars'e, когда он помещался в один файл было удобно. А теперь там 15 модулей 🙁
Snusmumriken
Лично меня например наоборот дико бесит обязательность кодировки в каком-нибудь питоне, и связанные с этим баги. Например я такой сидел и спокойно пользовался cefpython'ом на второй версии, и спокойно вешал колбеки на принимаемые от сетвера байтики чтобы загонять результаты запросов куда надо. А потом по техническим причинам пришлось обновиться на третью версию и начало-о-ось — ошибочная автоматическая конверсия в юникод, с вытравливанием всего не-юникодного из байтовых данных какой-нибудь картинки или pdf-ки, и полная неработоспособность этих колбеков.
Snusmumriken
С байтиками всё всегда почему-то гораздо проще. Есть байтики и функции для работы с юникодом например. Ничего само по себе не портится, только от твоих действий, и класс ошибок "разработчик либы загнал в юникод загнал байты и теперь всё попортилось" исключён в принципе.
Tony
Impostor
Cyberpunk enjoyer
Добрый вечер всем, не можете подсказать как работает require в луа?
Snusmumriken
Добрый вечер всем, не можете подсказать как работает require в луа?
Ну так-то оно проходит по элементам package.path/cpath + LUA_PATH/CPATH из окружения, заменяет ? в строчках на имя модуля, заменяет . на разделитель текущей системы и так далее, и для каждой строчки вызывает функцию в package.loaders. Первое что вернёт первая же функция есть загруженный модуль.
Ruslan
Втч расширение dll пробует
Cyberpunk enjoyer
Возможно ли сделать к нему "библиотеки" которые тоже из памяти загрузить?
Snusmumriken
А если скрипт загружен в памяти, а не из файла?
А, ну предварительно смотрит в package.preload и package.loaded на предмет вызываемого скрипта. Если оно есть там — загружает вне очереди, и то что подгружено loaders'ами отправляет в loaded как кеш.
Cyberpunk enjoyer
что за извращения?
Для User Experience, я имею для пользователей расширение скриптами, скрипты качаются с Клауда, и запускаются, но пользователи хотят пользоваться библиотеками. Увидел что в других продуктах используется require "product/lib_name", поискал на просторах интернета как такое реализовать не нашёл, поэтому и обратился к вам.
Snusmumriken
Возможно ли сделать к нему "библиотеки" которые тоже из памяти загрузить?
package.loaded.mylib = { foo = function(a, b) return a + b end } L = require'mylib' print( L.foo(10, 20) ) --> 30
Cyberpunk enjoyer
package.loaded.mylib = { foo = function(a, b) return a + b end } L = require'mylib' print( L.foo(10, 20) ) --> 30
А возможно ли через C также библиотеку ( скрипт) подключать? Извиняюсь за такие возможно глупые вопросы
Snusmumriken
С извращениями и не из памяти.
Cyberpunk enjoyer
С извращениями и не из памяти.
звучит грустно, единственный исход получается конкатенация скриптов, спасибо за помощь!
Snusmumriken
звучит грустно, единственный исход получается конкатенация скриптов, спасибо за помощь!
Где ты луа-то используешь? Можно сразу после старта вм сделать хотя бы luaL_dostring(L, "require('lib1'); require('lib2'); require('lib3')"); и подгрузить всё при старте, сишное или нет.
Snusmumriken
А в чём проблема выдать юзерам простой обычный require позволяющий реквайрить сишное? А ты ли сам делаешь игру? А можешь предоставить юзерам мод апи?
Cyberpunk enjoyer
А в чём проблема выдать юзерам простой обычный require позволяющий реквайрить сишное? А ты ли сам делаешь игру? А можешь предоставить юзерам мод апи?
Не понял первый вопрос. Нет. Я этим и занимаюсь, но они имеют доступ к ffi хотят делать свои библиотеки. Моя изначальная идея была в том, чтобы человек мог подписаться на несколько библиотек на сайте, зайти и простым require "mod/lib_id" подгрузить нужную им библиотеку.
Cyberpunk enjoyer
Можно просто поочередно подавать скрипты в интерпретатор Если это возможно в твоём случае
Да, я могу подавать скрипты, но они же просто загружаются из памяти, единственное что у меня есть это луа хендл
Cyberpunk enjoyer
поэтому как они будут вызывать я не знаю, я думал что подобную модульность луа поддерживает с коробки
Cyberpunk enjoyer
Dmitry
А возможно ли через C также библиотеку ( скрипт) подключать? Извиняюсь за такие возможно глупые вопросы
Просто в package.preload складываешь cfunction которая и будет делать то же что функция инициализации в lua модуле. Ну а там хоть из строки грузить, не проблема.
Ruslan
Да, я могу подавать скрипты, но они же просто загружаются из памяти, единственное что у меня есть это луа хендл
Имеется ввиду что сначала все зависимости (ну их придётся немного переписать) Потом код с зависимостями
Ruslan
Тоесть в зависимости у тя переменная my_const Выполняешь код После чего выполняешь код который юзает переменную из первого кода
Ruslan
Это все конечно костыли
Cyberpunk enjoyer
Да, но решение которое предложили выше мне кажется самое удобное
Cyberpunk enjoyer
и можно сказать без костылей
Ruslan
Согласен
Aydar
Понял, разобрался. Большое спасибо всем за помощь)
Из изначального сообщения не очень понятно в каком виде у тебя библиотека в памяти, если она в виде lua таблицы то можно эту таблицу добавить в глобальную таблицу _LOADED, ну а если библиотека в виде строки то выше уже подсказали.
Cyberpunk enjoyer
Библиотеки по подписке звучат забавно )
Согласен, но не платные, а просто добавить, и у тебя в библиотеке есть, зашёл прописал require, и пользователи сами себе апи мода расширили.
Snusmumriken
С библиотеками в целом и с сишными в частности может быть одна маленькая проблема, под названием "блокирующие операции". В случае если это мод для игры, особенно если он крутится на сервере — может произойти жесть вплоть до полной остановки сервера, плюс если либы сишные — можно очень даже хакнуть сервер ))
Cyberpunk enjoyer
LoadLibrary методом
Snusmumriken
Хорошо, если юзер парализует себя тут как бы ничего страшного. Но если у него есть доступ к ядру игрули, он такой может взять и накатать бота с полным доступом ко всему игровому окружению. Аимботы-волхаки и прочая ерунда, фарм-машины и всякое такое интересное.
Ruslan
Что за игра