Bit
@Racsicofalapatorius , а можно примеры кода и комментарии, что именно не так? Просто я тоже не понимаю, в чем конкретно претензии, и чем глобальные переменные мешают.
vvzvlad
Трешняк они, сказали же. "Ты что, дальтоник, красный от зелёного отличить не можешь?")
Валентин
фу, какие вы токсичные
Bit
Ну, видимо мне, простому смертному, не понять ))
Vlad
Использовать луа как конфиг файл для движка норм, или кринж?
Bit
Почему бы и нет?
Vlad
Просто синтаксис явно удобнее чем у какого нибудь .cfg
mva
ну, тут, точнее, вопрос в том, чего хочется от конфига
mva
если нужен именно конфиг, декларативный, то да, почему не json
mva
а если хочется возможность применять логику в конфиге, то норм
Vlad
Ну, тут, под дальнейшее расширение больше.
Vlad
Вдруг я когда то захочу запилить поддержку скриптинга.
Ivan
Использовать луа как конфиг файл для движка норм, или кринж?
Пока ты живешь только в луа, то норм. Но вот когда (и если) система разрастается и из этого конфига нужно читать не только программам на луа, то тогда наступает жопа. Так что если вероятность что когда-нибудь этот конфиг нужно будет читать из других языков программирования, то лучше так не делать. А если будет только луа и всех в команде устраивает конфиги в луа, то почему бы и нет =)
Ivan
Огонь решение. В другой язык программирования тащить луа только чтобы прочитать конфиг.
Парсер подмножества языка, а не весь Lua.
Чисто как JSON. Видел для JS такое.
Александр
Огонь решение. В другой язык программирования тащить луа только чтобы прочитать конфиг.
"тащить луа" - ужасы какие. А часто одни и те же конфиги читаются из программ на множестве разных языков, где аналог import lua будет значительным изменением?
Ivan
Во-первых где гарнитии что в конфиге используется только какая-то часть луа? Как только конфиг становится на языке программирования сразу начинается что туда можно впихнуть if-чик какой-нибудь и еще небольшую логику — это же конфгиу относится
Ну и нет проблемы встроить для потенциально сложных конфигов Lua, который, на минуточку, для того и нужен.
Это не такое извращение, как Electron. Давайте поговорим про Electron.
Ivan
"тащить луа" - ужасы какие. А часто одни и те же конфиги читаются из программ на множестве разных языков, где аналог import lua будет значительным изменением?
Ты куда в странную сторону пошел. Я же и говорю — "когда (и если) ... нужно читать не только программам на луа," Я не говорю часто это бывает или не часто. Я говорю что если такое планируется в проекте — то лучше так не делать.
Ivan
Это не такое извращение, как Electron. Давайте поговорим про Electron.
Да что про электрон говорить — все понятно, отличная система.
Александр
Ты куда в странную сторону пошел. Я же и говорю — "когда (и если) ... нужно читать не только программам на луа," Я не говорю часто это бывает или не часто. Я говорю что если такое планируется в проекте — то лучше так не делать.
Да, возможно. Я попытался представить себе конфиг, который читается сразу множеством программ и представил себе некий сложный программный комплекс. Соответственно, если он уже сложный, добавить в него лишнюю зависимость не будет проблемой (тем более, если это луа). А раз уж это сложная система, то и конфиги с логикой в ней наверняка пригодятся. Но это так, полёт фантазии.
Да что про электрон говорить — все понятно, отличная система.
А, ты не был против использования Lua для конфигов, перепутал.
Ivan
Не думаю что мой васянский клон вульфа обрастёт такой большой экосистемой, чтобы это стало проблемой.
Если это вообще твой пет проджект, то делай как тебе нравится и никого не слушай =)
Vlad
Если это вообще твой пет проджект, то делай как тебе нравится и никого не слушай =)
Собственно я использую луа, просто потому что он удобно парсится в то что мне нужно. Пример кода на С++: void readConfig(GameData& data, ControlState& ctrls) { LuaScript script("conf.lua"); if(!script) return; // Then defaults will be loaded. std::string filename = script.get<std::string>("config.map"); data.initMapFromFile(filename.c_str()); screenWidth = script.get<int>("config.screenWidth"); screenHeight = script.get<int>("config.screenHeight"); screenBits = script.get<int>("config.screenBits"); .... }
Tom
Да что про электрон говорить — все понятно, отличная система.
> отличная система Слишком толсто. В телегу не пролизает
Snusmumriken
не нравится - пиши на питоне
Там тоже глобальная фигня
fgntfg
Хмм. А что если сделать глобальный void*, выделить память и использовать только его?
Snusmumriken
Поздравляю, ты только что изобрёл глобалспейс ))
Snusmumriken
1. Её нет в луях, если очистить весь глобалспейс и подгрузить глобальные таблички в локальную фигню (то же — со всеми остальными скриптами); 2. Этого почти нет в жаве, и в прочих пакетно-модульных языках;
mva
в похапе, кстати, вроде, по умолчанию переменные локальные, например :)
mva
но мне кажется ОПу не нравится что в луне объекты/классы=таблицы
mva
просто оне не смог по-человечески это объяснить
fgntfg
Хмм. Надо посмотреть как в lua на прямую с памятью работать.
Snusmumriken
Ffi. malloc, ffi.copy etc.
fgntfg
ff.uckthis
fgntfg
Через ffi не ощущения не не
Snusmumriken
Igor
Судя по всему iuplua.so он нашёл, но не нашёл какую-то его зависимость, ldd посмотри, понятно станет
Igor
Через LD_PRELOAD_LIBRARY можешь, указав путь до libiup
Igor
Проверь ещё ld.so.conf
Igor
И выполни ldconfig
Igor
Может с кешем что-то не так
Igor
И поэтому не ищет
Igor
На линуксе вообще линкование динамики - это отдельная эпопея
Igor
Долго со всем этим разбирался
Igor
в ld.so.conf можно пути указать, по которым ищет
Igor
Но ты же, как я понял, в lib64 сунул
Igor
Так что видеть должен в любом случае
Igor
Как знаешь, но в принципе да. С переменными окружения - это q&d решение
Igor
Можно в принципе libiup скопирнуть в папку с luaiup, тоже сработает, зависимости сначала ищутся в в корневой папке файла, который запросил зависимость
Igor
А можно вообще iuplua собрать сразу же без линкования, зашив libiup в него
Igor
Много решений есть
Igor
Меня вообще подбешивают эти скрипты configure и ему подобные, эти автотулзы оюычно обладают никакущей переносимостью, если только автор проекта не подзапарился над всем этим
Igor
Я make и configure файлы использую только в большущих проектах, по типу nginx, а если собирать вручную всякую мелочь типа iup, можно и самому команды написать
Snusmumriken
(прямо сейчас "развлекаюсь" с таким, кошмар)
Igor
Переносимость конф гурационных скритов не столько проблема собираемого ПО, сколько самого линукса, от дистра к дистру ну очень многое меняется
Snusmumriken
Под виндовсом тоже много чего приятного :)
Igor
Ну да, даже больше местами
Igor
Но в целом на винде попроще со сборкой
Igor
По крайней мере тех проектов, которые не GNUтые
Snusmumriken
Только если есть VS и проект этой самой студии. Тут всё сравнительно шоколадно. Если нет — придётся кочать cmake и пытаться состыковать с VC/MinGW или ещё чем.
Igor
Ой, cmake под вин я избегать вообще пытаюсь как можно сильнее
Igor
Что тут, что в unix-like это жуть жутчайшая
Igor
Куча зависимостей, удовлетворение которых может занять немало времени
Igor
Я тех разработчиков, которые в мультиплатформу sln проекты суёт расцеловать готов
Snusmumriken
Хех, следующий уровень — это запихнутый в репозиторий компилятор tcc со всеми либами, и bat + sh для сборки. Правда, только для сишки. Типа самосборка.
Anonymous
В рамочку: [удовлетворение зависимостей]
Tom
Но в целом на винде попроще со сборкой
Эт че, венде-не-капец штоле?
Lucky
Удовлетворение зависимостей
Igor
Эт че, венде-не-капец штоле?
Этот вендекапец уже фиг знает сколько лет наступить пытается, да вот что-то не выходит
Lucky
ну, у мну вендекапец наступил с очередным мегаапдейтом, сложивший систему в перманентный синий экран смерти
Igor
Я бсоды в последнее время ловлю разве что от очень крутого драйвера на сетевую карту, которые асусы впихнули в мать
Igor
В общем если не считать бсоды в модуле tcpip.sys, то в последний раз проблемы с виндой у меня были во времена семёрки