Александр
Нет)
А что там на Lua? БД? Nginx?
Ekaterina
А что там на Lua? БД? Nginx?
В этом вопросе, к сожалению, не компетентна)
Денис
В целом, очистка строки escape-последовательностью это вот так: io.write("\27[F\27[K") Или так: io.write("\27[K"), надо чекнуть скриптом, вручную в терминале — первый вариант.
Что-то я тут нечаянно выпал на дела бытовые... Спасибо! Почекаю. А то меня тут раздраконили на тему "А вы так не можете", я попробовал через мой способ, и он не сработал.
Денис
"Вы так не можете" — "вы" это кто и "где" это где?
Ааай, та... Местные питонясты 😂
Snusmumriken
Нет разницы между луа и питоном, ввод-вывод одинаковый. Сишный.
Snusmumriken
То что они там нацепляли библиотек — не значит ровно ничего.
Денис
Нет разницы между луа и питоном, ввод-вывод одинаковый. Сишный.
Так мне тоже также показалось, но у человека тот вариант работал, а у меня почему-то - нет.
Денис
Поэтому я и спросил
Snusmumriken
Что за ОС? Венда?
Денис
Что за ОС? Венда?
В том конкретном случае - да.
Snusmumriken
os.execute'chcp 65001' и у тебя начинают работать escape-последовательности в cmd. Если десятка и выше.
Денис
os.execute'chcp 65001' и у тебя начинают работать escape-последовательности в cmd. Если десятка и выше.
У нас вообще зашла речь об отпечатывании процентов какого-либо процесса типа "Copying file (35% done)" последней строкой в выводе, чтобы та оставалась одна, а проценты в ней менялись.
Snusmumriken
У нас вообще зашла речь об отпечатывании процентов какого-либо процесса типа "Copying file (35% done)" последней строкой в выводе, чтобы та оставалась одна, а проценты в ней менялись.
os.execute'chcp 65001' for i = 1, 100 do print("\27[KReady " .. i .. "%\27[F") require'socket'.sleep(0.1) end print("\nDone") Собственно только что проверил, замечательно работает в cmd.
Sergei
Всем привет Либа andremm/lua-parser (точнее lpeglabel в ней) работает под JIT или я зря стараюсь понять, почему lpeglabel падает?:)
R
5.3+
Null
5.3+
[I] dev-lua/lpeglabel [1] Доступные версии: (**)9999*l{xpak:3} {LUA_TARGETS="lua5-1 lua5-3 lua5-4 luajit"} Установленные версии: 9999*l{xpak:3}(10:51:46 13.11.2021)(LUA_TARGETS="luajit -lua5-1 -lua5-3 -lua5-4")
Null
УМВР
Null
ну, единственное что, с небольшим патчем
Timur
Всем привет Либа andremm/lua-parser (точнее lpeglabel в ней) работает под JIT или я зря стараюсь понять, почему lpeglabel падает?:)
FWIW в Tarantool c LuaJIT lpeglabel работает и есть среди стандартных роков на тарантульном роксервере.
R
https://github.com/andremm/lua-parser Вопрос был про эту либу. Смотрим название. А подхачить можно, да.
Timur
https://github.com/andremm/lua-parser Вопрос был про эту либу. Смотрим название. А подхачить можно, да.
потому и FWIW было написано. lpeglabel сам по себе работает в LuaJIT окружениях. Не вижу особых причин почему lua-only решение как lua-parser могло бы вылетать (разве что по рекурсии или подобному)
Timur
но… стоит оговориться, что в тарантуле не апстрим LuaJIT и всякое может быть. (Ну и я на x86, что тоже важно)
R
Или работает, но я уже не помню тонкостей...
Sergei
Поподробнее проблему опиши
#2 0x00007f1bee8d1e46 in lj_alloc_free (msp=0x7f1beb706010, ptr=0x7f1beb658af0) at lj_alloc.c:1376 #3 0x00007f1bee8d1c60 in lj_alloc_f (msp=0x7f1beb706010, ptr=0x7f1beb658af0, osize=40, nsize=0) at lj_alloc.c:1481 #4 0x00007f1bee8b5925 in lj_mem_free (g=0x7f1beb7063d8, p=0x7f1beb658af0, osize=40) at ./lj_gc.h:120 #5 lj_cdata_free (g=0x7f1beb7063d8, cd=0x7f1beb658af8) at lj_cdata.c:83 #6 0x00007f1bee81977c in gc_sweep (g=0x7f1beb7063d8, p=0x7f1beb658c10, lim=18) at lj_gc.c:406 #7 0x00007f1bee819ae8 in gc_onestep (L=0x7f1beb706378) at lj_gc.c:637 #8 0x00007f1bee81982c in lj_gc_step (L=0x7f1beb706378) at lj_gc.c:689 #9 0x00007f1bee83abc9 in lua_pushlstring (L=0x7f1beb706378, str=0x7f1beb658be6 "some string", len=8) at lj_api.c:639 #10 0x00007f1beb6b786d in pushnestedvalues (cs=0x7fff3d23a7f0, addextra=1) at src/lpcap.c:89 #11 0x00007f1beb6b7ba6 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:481 #12 0x00007f1beb6b8413 in tablecap (cs=0x7fff3d23a7f0) at src/lpcap.c:173 #13 0x00007f1beb6b7cb7 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:517 ... много pushcapture/tablecap/foldcap #35 0x00007f1beb6b7cfb in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:521 #36 0x00007f1beb6b86e4 in foldcap (cs=0x7fff3d23a7f0) at src/lpcap.c:209 #37 0x00007f1beb6b7cfb in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:521 #38 0x00007f1beb6b78ab in pushnestedvalues (cs=0x7fff3d23a7f0, addextra=0) at src/lpcap.c:95 #39 0x00007f1beb6b7c80 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:509
Sergei
Происходит всегда на 3 вызов луашной функции из плюсов, в которой вызывается parser.parse (из lua-parser). В parser.parse и падает, т.е. мой луашный статический анализатор вроде не причем
Igor
#2 0x00007f1bee8d1e46 in lj_alloc_free (msp=0x7f1beb706010, ptr=0x7f1beb658af0) at lj_alloc.c:1376 #3 0x00007f1bee8d1c60 in lj_alloc_f (msp=0x7f1beb706010, ptr=0x7f1beb658af0, osize=40, nsize=0) at lj_alloc.c:1481 #4 0x00007f1bee8b5925 in lj_mem_free (g=0x7f1beb7063d8, p=0x7f1beb658af0, osize=40) at ./lj_gc.h:120 #5 lj_cdata_free (g=0x7f1beb7063d8, cd=0x7f1beb658af8) at lj_cdata.c:83 #6 0x00007f1bee81977c in gc_sweep (g=0x7f1beb7063d8, p=0x7f1beb658c10, lim=18) at lj_gc.c:406 #7 0x00007f1bee819ae8 in gc_onestep (L=0x7f1beb706378) at lj_gc.c:637 #8 0x00007f1bee81982c in lj_gc_step (L=0x7f1beb706378) at lj_gc.c:689 #9 0x00007f1bee83abc9 in lua_pushlstring (L=0x7f1beb706378, str=0x7f1beb658be6 "some string", len=8) at lj_api.c:639 #10 0x00007f1beb6b786d in pushnestedvalues (cs=0x7fff3d23a7f0, addextra=1) at src/lpcap.c:89 #11 0x00007f1beb6b7ba6 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:481 #12 0x00007f1beb6b8413 in tablecap (cs=0x7fff3d23a7f0) at src/lpcap.c:173 #13 0x00007f1beb6b7cb7 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:517 ... много pushcapture/tablecap/foldcap #35 0x00007f1beb6b7cfb in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:521 #36 0x00007f1beb6b86e4 in foldcap (cs=0x7fff3d23a7f0) at src/lpcap.c:209 #37 0x00007f1beb6b7cfb in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:521 #38 0x00007f1beb6b78ab in pushnestedvalues (cs=0x7fff3d23a7f0, addextra=0) at src/lpcap.c:95 #39 0x00007f1beb6b7c80 in pushcapture (cs=0x7fff3d23a7f0) at src/lpcap.c:509
Это ошибка либо класса use-after-free, либо free-after-free
Igor
Скорее всего второе, раз уж падает на функции lj_alloc_free
Igor
Какой-то кусок памяти освобождается два раза
Igor
Это нужно уже по коду библиотеки смотреть, а судя по тому, что там за 600 с лишним строчек кода, я этим заниматься особым желанием не горю, можешь сам поискать. Проблема скорее всего внутри сишной библиотеки.
Igor
Крашится в момент выполнения шага сборщика мусора, значит надо __gc метаметоды из lpcap.c курить, видимо где-то код сам освобождает память, принадлежащую Lua
Dinar
решил изучить lua. есть документация на русском языке или учебник?
Dinar
из-за того что анг.яз плохо знаю. читаю долго...
Null
(а так, Programming In Lua от Роберто Иерусалимски
Null
из-за того что анг.яз плохо знаю. читаю долго...
а при переводе на русский переводчики косячат в 500% случаев из 100
Dinar
чтож попробую на анг.яз начать, спасибо
Igor
из-за того что анг.яз плохо знаю. читаю долго...
Если честно, в программировании без знания английского делать особо нечего. Практически все первоисточники на английском, так что если хочешь иметь последние знания по технологиям, то английский так и так нужен.
Sergei
Это ошибка либо класса use-after-free, либо free-after-free
Разобрался, я криво выделял память под 3д массив:)
Luсky
Книжка на русском
Александр
Даже кривоватый перевод для начала лучше чем самая прямая книжка на неродном языке. И этому есть куча причин.
Да, только есть +- ровный перевод от ДМК пресс от 2016-ого года, собственно, которую можно найти и в бумажном виде
Luсky
Думается, если бы были косяки, то для специалистов не составило бы труда отредактировать и залить патченую версию.
Koto
Что-то я тут нечаянно выпал на дела бытовые... Спасибо! Почекаю. А то меня тут раздраконили на тему "А вы так не можете", я попробовал через мой способ, и он не сработал.
По-правде говоря, после 2 месяцев на Lua, я офигеваю, насколько у неё короткие руки. Пришёл из JS, и это немного дико, что даже клиента к Socket.IO нету... и много чего нету, складывается впечатление, что все луа-девелоперы это или системщики, или же они решают вопросы исключительно внутри какой-то интегрированной платформы - роблокс, resty, wow... Как самостоятельный язык пока не едет.
Koto
кто Pluto запускал? подскажите, почему после luarocks install pluto, происходит segmentation fault при любом вызове pluto? платформа Jit2.0.x, Jit2.1.x или Luvit - короче везде одинаково.
Koto
это из-за arm64, да? если да, то какие шансы заставить это заработать? есть ли backport Eris на Lua5.1?
R
Является, причём великолепным.
Koto
а вот это типа самостоятельный язык или это ещё глубже в железо? :)
Null
а вот это типа самостоятельный язык или это ещё глубже в железо? :)
похоже на какой-то диалект Lua с FFI и свистоперделками
Timur
похоже на какой-то диалект Lua с FFI и свистоперделками
ну так там и написано, что это не Луа, а Терра https://terralang.org/
Null
потому что, вон, Lua там никуда не делась, добавили своих свистоперделок просто
Null
и FFI в коробку положили (или от LuaJIT'а унаследовали, лень смотреть)
Koto
смысл вброса - moonscript является самостоятельным языком? а typed lua? а Shine? а Fennel? хоть что-то на основе луа заточено под "пишешь код - получается ПО" без бубнов? =)
Koto
а что ты называешь бубнами?
стэк на компилируемом языке, сам парься о портабельности, сам поддерживай всё что не имеет (готовой) обёртки для Lua
Null
По-правде говоря, после 2 месяцев на Lua, я офигеваю, насколько у неё короткие руки. Пришёл из JS, и это немного дико, что даже клиента к Socket.IO нету... и много чего нету, складывается впечатление, что все луа-девелоперы это или системщики, или же они решают вопросы исключительно внутри какой-то интегрированной платформы - роблокс, resty, wow... Как самостоятельный язык пока не едет.
Lua - это язык для эмбеддинга (встраивания) во всё и вся. Под неё всё есть, но не в коробке. В этом и сама суть языка. В коробке только то, что нужно чтобы сделать всё, что понадобится. И ничего лишнего. Нужно что-то - ставишь либу с этим (или пишешь сам, если либа слишком жирная или не существует). Если тебе это не нравится - ты ошибся с выбором языка. В общем, вспоминая одного моего знакомого: Python tries to give you as much as possible, while Lua tries to give you as less as possible.
Snusmumriken
Это очень известная цитата )
Timur
смысл вброса - moonscript является самостоятельным языком? а typed lua? а Shine? а Fennel? хоть что-то на основе луа заточено под "пишешь код - получается ПО" без бубнов? =)
да, да, да - это всё отдельные языки. (Даже LuaJIT - язк отличный от Lua 5.4, хоть максимально на него похожий) Как TypeScript - отдельный от JavaScript. Или например C++17 и C++98. Не понял про бубен - как это относится к тому что вы говорите про языки отличные от Луа?
Snusmumriken
Ещё можно заметить, что у луа во встроенной библиотеке совершенно мизерное количество вещей, которые могут зависеть от платформы. Разве что кусочек io, но он забинжен напрямую из сишки.
Snusmumriken
И тоже напрямую бинд стандартного сишного функционала. А стандартные функции, даже require — можно без проблем прописать так, чтобы они не использовали это самое io/os, допустим, подгружая модули по сетке если пихнуть такой функционал. Т.е. само базовое поведение языка программирования "перепрограммируется" под нужды.
Timur
с другой стороны, я согласен с посылом, что спартанская либа и малое количество пакетов в луарокс являются препятствием для вхождения новых людей в экосистему, и вообще ограничивают популярность. И с этом надо что-то делать
Koto
ну как только ты сам билдить начинаешь, ты уже или юзаешь кросс-компиляцию, чтобы затаргетить какой-то условный андроид или нинтендо, или нет, и это уже далеко не такая же простая кухня как "написал код, обновил только этот код у клиентов - считай справился".. мы на вебе чертовски много времени на этом экономим - тебе не сильно важно какой девайс у клиента... а тут портабельность вынесена за скобки типа... Луа портабельный язык, но приложения портабельные сделайте сами ;)
Timur
с другой стороны, я согласен с посылом, что спартанская либа и малое количество пакетов в луарокс являются препятствием для вхождения новых людей в экосистему, и вообще ограничивают популярность. И с этом надо что-то делать
(ну и фрагментация экосистемы на несколько реализаций с отсутствием поддержки препроцессора или чего-то похожего не облегчает жизнь разработчикам роков и не позволяют поддерживать сразу несколько версий)
Null
я мейнейню долбаную прорву луа-пакетов и все совместимы со всей пятёркой