Highly Likely
Это неточно
Highly Likely
Короче в PiL'е всё есть, стопроц
Tony
Не использовать глобальные переменные, например
я пытаюсь как могу, вот серьёзно, все переменные в последнем файле объявил локальными (или не все? проверить не вручную пока не знаю как) но есть глобальные переменные, которые я объявляю в другом файле, и которые обязаны влиять на происходящее в последнем файле, и от них избавиться пока не знаю как
Highly Likely
Ну тогда выстраивать сэндбокс с метатаблицей на индекс _G, да
Highly Likely
(там вроде можно даже без метатаблиц, просто новый ENV передать)
Tony
Ну тогда выстраивать сэндбокс с метатаблицей на индекс _G, да
где можно прочитать про постройку сендбокса?
Highly Likely
где можно прочитать про постройку сендбокса?
https://stackoverflow.com/questions/1224708/how-can-i-create-a-secure-lua-sandbox Например
Tony
Благодарю, буду разбираться
Snusmumriken
Добрый вечер. Извиняюсь, что начинаю с проблемы, но очень уж капец какой-то. Есть у меня программа для КМ вычислений Quanty, по сути – интерпретатор LUA с большой узкоспецифической библиотекой. Есть код в нескольких файлах, который я вызываю в мастер-файле через dofile(). Первые три файла объявляют глобальные переменные, последний – главный кусок кода, который с этими глобальными переменными делает манипуляции, вычисления и сохраняет в соответствующие файлы. Выполнение последнего из этих файлов я пытаюсь взять в цикл. Но, судя по данным, что-то не так внутри этого кода, как будто некоторые переменные не обнуляются, а при каждом выполнении дополняются. Уже и прописал везде, где можно, local, но всё равно что-то где-то не так Вопроса два: 1) в статье про dofile написано: you may want to run the new chunk in a protected environment, to avoid unpleasant side effects when running the code . Каким образом это реализовать? 2) есть ли какая IDE для LUA, чтобы можно было увидеть, какая переменная локальная, какая глобальная, и что где происходит?
Пихай в цикл не только dofile на последний файл с кодом, а все файлы.
Wsevolod
В luacheck есть какой-то severity (error/warning/etc)?
Wsevolod
Вернее, есть, но можно как-то включить обозначение, warning это или error, возле каждой строки с месседжем, а не внизу?
Snusmumriken
Вывод в формате [filename:character:line message] сделано для редакторов кода, чтобы редакторы могли указывать конкретное положение ошибки.
Snusmumriken
Если твой редактор это поддерживает — пожалуйста )
Wsevolod
А о северити, например myfile.lua:420:69: warning: unused local ...
Snusmumriken
Так, а в каком смысле "возле каждой строки с месседжем"? Хммм.
Highly Likely
А о северити, например myfile.lua:420:69: warning: unused local ...
Я по крайней мере не помню такой функциональности в сорсе луачека
Snusmumriken
В смысле сам текст, варнинг это или что-то ещё?
Wsevolod
А то некруто, вим все в 1 цвет красит
Highly Likely
Можно почитать конфиг луачека
Wsevolod
Я по крайней мере не помню такой функциональности в сорсе луачека
Он как-то считает сумму внизу, значит где-то он хранит на каждую строку
Highly Likely
Highly Likely
Но в виде общих полей, а не построчно
Highly Likely
Это было почти год назад, когда я активно работал над луачеком, поэтому уже подзабылось
Highly Likely
Там можно в сорсе почитать, в целом, там никакого рокетсаенса в этом месте нет
Highly Likely
Кажется, на уровне парсера, что ли
Highly Likely
Он как-то считает сумму внизу, значит где-то он хранит на каждую строку
https://github.com/mpeterv/luacheck/blob/7360cfb4cf2c7dd8c73adf45e31a04811a745250/src/luacheck/format.lua#L88
Wsevolod
Жаль проект заброшен
Highly Likely
Жаль проект заброшен
Он не заброшен. Автор, к сожалению, умер несколько лет назад
Highly Likely
Если кто-то форкнет и продолжит его работу — всё коммьюнити скажет спасибо :-)
Highly Likely
Благо работы там на года вперед
mva
у меня были мысли форкнуть и начать допиливать. Вот только времени у меня отрицательное количество, увы
mva
ну и, к тому же, я и сам могу в любой момент кони двинуть, т.к. у меня диабет 🤷‍♂️ Стоит ли давать комьюнити ложную надежду - ...
mva
А у меня пока что НДА и запрет на работу над ним :-)
хороший работодатель, и условия интересные...
Highly Likely
Highly Likely
Для крупных галактических корпораций :-)
mva
ну, так-то, да
Highly Likely
Так-то там довольно легко свои проверки писать можно
Highly Likely
По крайней мере на уровне линтера
R
Та же фигня. Написал тут свой аналог луачека (с другим прицелом, правда), а выложить нельзя. Такова жизнь.
Highly Likely
Та же фигня. Написал тут свой аналог луачека (с другим прицелом, правда), а выложить нельзя. Такова жизнь.
Вообще, в целом, как будто бы переписать луачек с нуля чуть проще, чем его дописывать
Highly Likely
Ибо в луачеке очень много хвостов от MetaLua осталось
Highly Likely
И в целом коду от 3 до 10 лет
R
Вообще, в целом, как будто бы переписать луачек с нуля чуть проще, чем его дописывать
Ну как. Я в целом не боюсь легаси и умею его разгребать, просто времени обычно нет.
Highly Likely
Ну как. Я в целом не боюсь легаси и умею его разгребать, просто времени обычно нет.
уметь разгребать легаси это хорошо, но иногда времени на это уходит слишком много
R
Да и всё равно это промежуточный проект по сути, мы планируем свой язык с нормальным СА.
R
уметь разгребать легаси это хорошо, но иногда времени на это уходит слишком много
Вот да, это вопрос времени почти всегда. Одно дело для себя хобби пилить, другое - когда отвечаешь за результат/время.
Timur
вот тут продолжилась жизнь luacheck https://github.com/luarocks/luacheck
Timur
но как я вижу здесь собираются переехать в lunarmodules организацию
Andrey
Всем привет. Коллеги с шаблонами туго, подскажите где я здесь ошибся пожалуйста. local function isSelect(queryString) if type(queryString)~='string' then return nil end local pattern =';*[\s*\t*][Ss][Ee][Ll][Ee][Cc][Tt][^;]*;*$' if string.match(queryString,pattern)>0 then return true else return false end a="SELECT * FROM a;" b="INSERT INTO (a,b) SELECT a,b from C" c="select distinct a from b" d="INSERT INTO (a,b) SELECT a,b from C;select distinct a from b" print (isSelect(a)) print (isSelect(b)) print (isSelect(c)) print (isSelect(d))
Andrey
5: invalid escape sequence near '';*[\s'
Snusmumriken
Влепи туда прямой пробел и таб вместо \s и \t.
Andrey
аааа спасибо)
Snusmumriken
Ну или просто пробел, таб экранируется
Snusmumriken
И конструкция [ *\t*] будет искать один обязательный символ по списку: пробел, звёздочка, таб. [ \t]* — неограниченное количество пробелов и табов
Oleg
Влепи туда прямой пробел и таб вместо \s и \t.
ну это же полумера, разве нет?
Andrey
%s спасло
Andrey
забыл про процент
Snusmumriken
Да, экранирование пробела таки через процент.
Tony
как проверить, является ли некий член таблицы _ENV функцией?
Tony
хочу в лог-файл вывести все переменные, не выводя при этом функции
Tony
нашёл, как вывести globals, locals и upvalues
Snusmumriken
for k, v in pairs(_ENV) do if type(v) ~= 'function' then print(k, v) end end
fgntfg
Так тип можно же посмотреть
Tony
интересно, спасибо
fgntfg
СНУСЕК, давать готовый ответ не Ъ
Snusmumriken
Лень думать, проще выдать
Tony
Lua так отличается от всего, с чем раньше работал
Snusmumriken
Я не спал хрен знает сколько
fgntfg
Иди спи
fgntfg
чо ты
Tony
СНУСЕК, давать готовый ответ не Ъ
но проще и быстрее разобраться с примером
fgntfg
Правильнее читать доки
Snusmumriken
Lua так отличается от всего, с чем раньше работал
Только синтаксически, основные принципы те же что в JS и в целом в Python. > но проще и быстрее разобраться с примером Но провоцирует на задавание дурацких вопросов и разработку методом "сделайте за меня", без погружения в процесс )