RussianServiceDrop
С буфера что бы сразу подгружать
Александр
Без загрузки на жесткий диск нельзя?
Так загрузи в оперативку и её mmap правильно)
Александр
Если на линуксе, то ты можешь что-то типо ramfs пользовать
Snusmumriken
Эй. Нужно подгружать с сервера. На сервере оно на жёстком диске. В чём проблема примонтировать это?
Александр
создаёшь раздел в оперативке, её монтируешь как диск и докачиваешь на неё
Александр
Эй. Нужно подгружать с сервера. На сервере оно на жёстком диске. В чём проблема примонтировать это?
Ну В целом без разницы, но есть теоретическая проблема с тем, если внутри Луа подгружает ленивно
Snusmumriken
В таком случае проблема будет в любом случае.
Александр
Snusmumriken
А если ты закешируешь "в рамдиске" то не будет никаких поводов обновлять с сервера.
Snusmumriken
И с локальной библиотекой ?
Если библиотека локальная, нет никакого смысла делать под неё рамдиск. Проще уж написать SSH-скриптик который будет скачивать с сервера все .so-либы (да и не только их) при запуске. Заодно консистентность сохраняется.
Александр
Александр
или mmap
Александр
Вернее скорее даже И
Snusmumriken
Ладно. Прежде чем изобретать, давай подумаем, что будет если: 1. Библиотеки могут загружаться лениво. Например, кто-то обновил .so-файл на сервере и он подгрузился в приложение несовместимой старой версии. 2. Если библиотеки загружаются сразу — в чём смысл подгрузки их в приложение извращениями? Не проще ли грузить с сервера каждый раз полную актуальную версию, а если с ней что-то происходит — брать из кеша?
Snusmumriken
Если ты хочешь сделать динамическое обновление ,so-библиотек в приложении с 100% аптаймом — лучше забудь, это редкостная дичь которая может привести к миллиарду миллиардов ошибок и ноль профита. Чистый выстрел себе в голову.
Snusmumriken
Ленивость — это в момент первого require.
Александр
если всё грузится в одной сошке и сразу, то вопросов нет
Snusmumriken
Тогда в чём проблема просто обновлять всё приложение или вовсе статически линковать в один elf и перезапускать?
RussianServiceDrop
Я попробую mmap и статическую линковку
Snusmumriken
Простое обычное обновление — это куда дешевле и надёжнее чем подобные велосипеды "уу впендюриваем непонятно что неизвестно какой версии непонятно куда непонятно когда".
Александр
Тогда в чём проблема просто обновлять всё приложение или вовсе статически линковать в один elf и перезапускать?
Можно, не спорю. Я говорю о том, что если зависимости отложены, то будут проблемы, в частности если не все зависимости будут удовлетворятся локально
Александр
то будет беда, ибо луа их подгружать по умолчанию не умеет
Snusmumriken
Поэтому проще использовать резервные как основные. И просто обновлять всё приложение разом. curl в помощь.
Александр
В целом лучший вариант - держать локальную среду в устойчивом состоянии и стремиться максимизировать требования, тогда всё будет +- ок
Александр
касательно просто подгрузки сошек вы как-то плохо ищете
Snusmumriken
Знаешь, я когда-то хотел делать системы динамического программирования. Мол, ты такой написал: drawRectangle(10, 10, 30, 40) в редакторе, нажал ctrl + s и в окошке движули оно сразу отобразилось.
Snusmumriken
А потом я такой подумал: а что если мы насрём мусором и не вычистим. А что если у нас в памяти останется что-то что уже удалилось из скрипта.
Snusmumriken
А что если я такой написал функцию, а потом где-то ещё использовал (она добавилась в память), а потом удалил (в памяти осталась). Пока оно запущено — работает. При перезагрузке, функции больше не будет — ошибка. Опачки, обосрямс.
Snusmumriken
Не совсем.
Snusmumriken
Это в любом случае отрыв жопы. И это были всего лишь скрипты.
Snusmumriken
Там хотя бы сборка мусора есть ))
Snusmumriken
А уж в сишечке, будет вообще веселье ))
Александр
Но в целом с чисто луашкой такое вполне можно делать, даже сборщику скорее всего будет норм, если переписывать переменные они уйдут под его взор
Александр
Но с скомпилированными объектами это было бы жутко, разве что хирожопо сделать клиент-сервер и постоянно менять клиенты путём завершения старого и запуска новособранного
Snusmumriken
Нужен лексический анализатор который понимает: вот тут функция удалена, у неё была вот такая-то ссылка и так далее. Потому что на них не повесишь __gc.
Snusmumriken
Поэтому. Не лезь, оно тебя сожрёт.
Snusmumriken
Обычные здоровые дедушкины методы а ля curl http://some.url/some_executable --output some_executable some_executable --param1 --param2 Работают многократно проще и эффективнее. Просто подгрузка при запуске.
RussianServiceDrop
Вы случаем не знаете какие то библиотеки, для того что бы soшки грузить из оперативы сразу в lua и на месте работать с ними ( подобие loadlib ) Ну что бы лишний код в движок не прописывать
Snusmumriken
Можешь написать свой loader для require, оно само будет это делать и условно раз в 10 минут проверять, не изменилась ли либа.
RussianServiceDrop
Можешь написать свой loader для require, оно само будет это делать и условно раз в 10 минут проверять, не изменилась ли либа.
Могу, я этого не отрицаю Просто если уже готовые релизы есть, то зачем тратить время
RussianServiceDrop
Ладно я погуглю
RussianServiceDrop
Спасибо
Александр
Вы случаем не знаете какие то библиотеки, для того что бы soшки грузить из оперативы сразу в lua и на месте работать с ними ( подобие loadlib ) Ну что бы лишний код в движок не прописывать
там лишнего кода - меньше десяти строк, если ты просто внутри интерпретатора это отрегулируешь в духе того, что бы dlopen и пр. в случае например удалённого пути подргужала в память, отображала её mmap и грузила, всё остальное за тебя доделает уже существующий код
Александр
альтернативно да, можно отдельный загрузчик из си написать
Lucky
Хороший вариант всё нае*ть при поломке интернетов.
Tony
@Snusmumriken
Ярослав
@Snusmumriken приехал Playdate)
Ярослав
Выпустил игрушку, +$300 https://whitebrim.itch.io/cranner
Inellok
Нихренашеньки))
Aqendo
Прикольно
Hell
Есть ли человек который знаком со структурой АИО lua на World of Warcraft 3.3.5 - нужен человек для реализации скриптов, есть куча примеров если нужно. Готовы все это оплатить, или на постоянку как работу
Snusmumriken
Ну собсно структура тут )) https://wowwiki-archive.fandom.com/wiki/World_of_Warcraft_API Для 3.3.5 надо проверять патч добавления.
Денис
Ребят, пока болею, есть вариант почитать... Кто-то обладает статьей про корутины для непонимающих нихрена? знаком только с тредами, есть задача мудрить такие же треды, как к этому вопросу подойти?
Денис
Грубо скажем, есть необходимость работать с сетью, там по любому будут зависания...
Igor
Т.е., нет никакого способа избежать простоя?
Есть библиотееи типа lua-lanes, которые создают реальные потоки
Денис
Есть библиотееи типа lua-lanes, которые создают реальные потоки
Они создают потоки на стандарте? Я имею в виду, принимается только один аргумент?
Igor
Они создают потоки на стандарте? Я имею в виду, принимается только один аргумент?
можно несколько аргументов в потоки передавать, но есть ограничения по передаваемым данным
Igor
т.к. каждый lanes-поток - это новый ПОЛНЫЙ lua_State, передача данных является обычным копированием из одного стейта в другой
Alexey
Всем привет, Судьба свела меня с Lua. Теперь думаю, а есть ли перспектива. Пытался использовать Luci + Lua для Embedded linux Пока что-то не получается, но это вопрос больше к Luci + портация, все же она для Open WRT. Куча зависимостей, что то не все ставлю наверно. Есть новая вертка Luc2 возможно там меньше проблем, но все равно на сервере используется Lua. Вопрос к гуру, насколько Lua востребован желательно в разрезе IOT и Embedded железяк, кто ниб имел опыт? Насколько перспективный язык?
Snusmumriken
Всем привет, Судьба свела меня с Lua. Теперь думаю, а есть ли перспектива. Пытался использовать Luci + Lua для Embedded linux Пока что-то не получается, но это вопрос больше к Luci + портация, все же она для Open WRT. Куча зависимостей, что то не все ставлю наверно. Есть новая вертка Luc2 возможно там меньше проблем, но все равно на сервере используется Lua. Вопрос к гуру, насколько Lua востребован желательно в разрезе IOT и Embedded железяк, кто ниб имел опыт? Насколько перспективный язык?
Ну во-первых, луа встраивают во всё подряд потому что это не питон с 40мб рантаймом и не нода с 20мб рантаймом. А ещё нормально встраивается. Во-вторых, это не forth и тут не такое количество дикого количества несочетающихся друг с другом реализаций всего подряд. В третьих, тут есть сборка мусора, что может быть как плюсом (не надо морочиться) так и минусом (лучше не плодить объекты без необходимости для сохранения реалтайма). В четвёртых, смотря подо что, минимальные системки для того чтобы не офигеть от тормозов это примерно 4-10мб оперативной памяти. Эмбед вроде совсем микро микрух (esp) всё таки обычно лучше прогать сишкой-асмом, на роутерах и прочих бортовых компьютерах уже луа норм.
Alexey
спасибо, почти все тоже самое в инете начитался, остался не удовлетворенным . мало информации по lua, мало где встретил в железяках , может плохо искал . только начал
Alexey
Embedded сейчас много что и ARM с Linux тоже Embedded
Snusmumriken
и не джава с 80мб минимальным рантаймом
У жавы есть жизнеспособные сборки на эмбед, твоя стиральная машинка скорее всего на жаве.
usernameak
я про Java SE
Snusmumriken
Ну и очевидно, луа замечательно встраивать в полноценные приложения. Не знаешь что встраивать в твой музыкальный проигрыватель, чтобы управлять всем подряд? (допустим, захотелось тебе чтобы пользователь проигрывателя мог написать автоматическую паузу музыки когда звук идёт из другого приложения на этом же устройстве) — пихай луа, не прогадаешь.