mva
может, при дебаге из IDE какого, или профайлера?
fgntfg
а трейса нет?
Alexey
Ситуации 2
Loop
Error while require
Snusmumriken
Ну кароч, если вот так:
*module a*
local b = require'module b'
return {
foo = function() return 'bar' end,
bar = function() b.foo() end
}
*module b*
local a = require'module a'
return {
foo = function() return 'bar' end,
bar = function() a.foo() end
}
Возникает цикличность.
Snusmumriken
Потому что module a вызывает module b, который тут же вызывает module a.
Snusmumriken
А вот если делать так:
*module a*
return {
foo = function() return 'bar' end,
bar = function() require'module b'.foo() end
}
*module b*
return {
foo = function() return 'bar' end,
bar = function() require'module a'.foo() end
}
Цикличности не возникнет. Ибо пока мы не вызвали bar из модуля, другой модуль не подгрузится.
А если всё таки вызовем - цикла тоже не будет, потому что кеш.
Snusmumriken
Кароч, в циклично-опасных местах - подгружай модули когда они тебе нужны, благо кеш возвращает результат самого первого require этого модуля, но тут типа результат оказывается чуть-чуть дольше, как если бы мы вызывали глобальную функцию.
Snusmumriken
Ну ясное дело, всегда так. Просто прошариваешь все require в модуле, смотришь, какие модули там вызывают первый по цепочке.
Snusmumriken
А вот это уже неплохо : )
Правда, из-за того что у меня на работе активно используется гит, и модули пачками выгружаются "для конкретного пользователя" (т.е. для каждого разработчика, вся система работает так, как описано в именно его копии гита), я первым делом проверяю, тот ли файл подгружается.
Snusmumriken
Но это уже ваша, очень узкая специфика. Я просто объяснил чуваку как это работает.
B
господа как совмещать постоянную работу и потуги изучать программирование?
Alexey
очень просто
Alexey
баланс work/life заменить на work/education
Alexey
а если чуть серьезнее, то изучать программирование лучше на практике.
Alexey
и как можно скорее перепрыгнуть на жуниор-вакансию, например
B
я грубо говоря сутками на работе, в выходные на заочке, просто хочу свернуться калачиком и полежать, изучать все это дело охота но времени нет от слова совсем
Alexey
ну, тебе чем-то нужно будет пожертвовать, чтобы это время появилось. И тебе самому выбирать, что именно
B
прекрасно, но чем? без работы нету подушечки для существования, без учебы, пусть и заочной, возможно не будет каких то дальнейших перспектив
Alexey
А учеба дает тебе знания, которые тебе потом понадобятся в работе?
Alexey
типа там дискретной математики, или как расчитать алгогоритмическую сложность какого-то решения, или ещё чего-то?
Alexey
+ на работе необходимо быть именно сутками?
B
Учеба не особо, а зарплата зависит от выработки, условно говоря сколько сделал столько получил
Alexey
по-моему у тебя есть вся инфа для принятия решений
Anonymous
if not data or not string.match( (data or ''), "200 OK" ) then return nil end
—----------------------------------
— OK, handling SIP session... —---
local try = 1
while not string.match(data, "BYE\r\n") and try < 10 do
Anonymous
не понимат
Anonymous
тут иногда (!) ловится ошибка "bad argument to match: string expected, got nil"
Anonymous
но мы же проверяем, не пустая ли data!
Saphire
Anonymous
о, точно
Anonymous
надо больще спать %)
Anonymous
спасибо :3
Saphire
Ты всё sip пилишь?
Anonymous
смотрю, как работает
Anonymous
[2017/10/23 18:11:08] |anonymous@LMR02| [banIP] <source> = [159.203.64...] <target> = [62.210.203...] <reason> = [0114578737250] :: E_LUA_EXCEPTION libsip2.lua:199: bad argument #1 to 'match' (string expected, got nil) (took 2576.015 ms)
Anonymous
пару раз за день такое ловим
akamit
подскажите пожалуйста в redis-lua в set можно как-то задать ttl?
Yuriy
всмысле в SET?
Yuriy
у редис есть команда EXPIRE
Yuriy
ее можно навесить на ключ
akamit
только так? двумя командами?
Yuriy
Ну можно через commit одной
Yuriy
ну точнее собрать комманды и потом транзакцию сделать
akamit
я имею ввиду в redisl-cli можно сделать одной командой set key value EX
Yuriy
Есть вариант что это функционал какого нить REdis 2.5
и он в либе не реализован
akamit
не нашел такого в доках :( а как то вообще можно посмотреть из cli help на функцию/метод?
akamit
ну отдельной командой я сделал
akamit
а.. точно, не увидел что setex может и значение тоже выставить. спасибо)
MrSmith
xlsxwriter lua open file
MrSmith
Как заделать
MrSmith
Я понял что можно новый, но мне нужно текущий
Snusmumriken
xlsx - это xml excel.
Покопайся в форматах.
В чистый xls лезть не советую, он бинарный и хардкорный.
Snusmumriken
Доки вот тут: http://www.ecma-international.org/publications/standards/Ecma-376.htm
Alexey
xlsxwriter умеет только новый файл создавать
Alexey
я пользовался yoksel через LuaCOM но он умеет только xls
Snusmumriken
Через COM можно подрубить произвольную микрософтовскую программу и заставить её делать любую дрянь с файлами.
Он для этого и создан.
Alexey
Еще можно вот так я конвертил файл в XLS
local xls = assert(luacom.CreateObject("Excel.Application"), "Can not create excel application");
xls.DisplayAlerts = false
local doc = assert(xls.workbooks:open(fname))
doc:SaveAs(
newname -- file name
,18 -- fileFormat
,nil -- Password
,nil -- Write Password
,false -- ReadOnlyRecomended
,false -- CreateBackup
,nil -- AccessMode
,nil -- ConflictResolution
,nil -- WritePassword
,false -- AddToMru
)
doc:close(false)
xls:quit()
Alexey
LuaCOM имеет несколько проблем.
И по факту не поддерживается. :(
MrSmith
Черт, как всегда тривиальная задача превратилось в черт пойми что, просто потому, что создатели либы решили не делать дозапись в фаил ибо нафиг
Alexey
Это не тривиальная задача
MrSmith
https://openpyxl.readthedocs.io/en/default/
Alexey
Ну? посмотри на количество кода.
Python более популярен и велика вероятность что этот код используется в Production многоими компаниями.
В Lua мало пользователей и следовательно мало кто может реально развивать большие библиотеки.
Но ни кто не мешает порторовать ее на Lua. Несколько челевек скажут спасибо :)
Это не критика ни в чью сторону.
MrSmith
Ну видно, time to python. Я конечно могу намесить за пол часа на крестах, но меня не поймут
MrSmith
имеет 44k LOC.
Это при условии набора стандартных библиотек Python
ЗЫ. не пользовался и не изучал исходники. Но думаю за неделю две можно портировать под Lua
Ну дак я поэтому и крайне удивлен, что нет инструмента под lua. не то, что бы я ворчал, просто крайне не приятно делать руками такие вещи. Конечно, можно и плюсы подтянуть, но у меня чувство странно возникает в печени когда я думаю о том как я на c++ буду все это собирать, для парсинга пары страничек. крч, попробую освоить питон, вроде не сложный язык или сложный, не знаю, меня больше всего в питоне убивает отладка
Alexey
Так напиши на Lua библиотеку и ею будут пользоватся
ㅤ
А?
MrSmith
Она есть и причем нормальная
Elias
В Zenobrane можно и C++/Lua дебажить
Elias
Или руками через хуки и debug
Alexey
Print :)
Elias
Вот это чаще всего, да
И debug.traceback спасает
MrSmith
Elias
Не знал, что там Lua можно дебажить. Не пробовал
Yuriy
Добрый день
подскажите пожалуйста годный xml парсер на lua
Alexey
expat
Yuriy
Спасиб
Alexey
я использую lom и далее доработка результата напильником :)
Yuriy
против лома нет приема... )