Не Анна
Сначало разговор)
Не Анна
Я не отказываю в деньгах мне нужен человек который будет заинтерисован
mva
вот заняться людям нечем :)
mva
кстати, @RussDragon, что думаешь? https://github.com/msva/lua-htmlparser/blob/master/src/htmlparser.lua#L36-L58
mva
алсо, куда нажать гитхабу чтоб вимовые коммандлайны в комментах понимал? 😃
mva
а то восьмипробельный таб слишком уж широко
Roman
с путями и предзагрузкой помогите плиз!
Roman
я такой пишу в консоле луа: for k in pairs(package.loaded) do print(k) end и он выдает все загруженые среди них нет table.clear print(package.loaded.table.clear) -- nil а теперь я такой смотрю package.path > print(package.path) ./?.lua;/home/romeo/.lua/lib/?.lua в этих папках нет никакого table/clear и теперь реквайрю: require('table.clear') и все в порядке! Откуда он там берется?
Roman
проблема в том, что в openresty я его использовал во многих местах и теперь после установки torch он недоступен, ищу как его вернуть
Roman
а в обычной консольке луа доступен
Snusmumriken
package.path - список путей загрузки. Это строчка, где пути перечислены через точку с запятой.
Snusmumriken
Просто дописываешь туда места, откуда брать скрипты. Вопросительный знак - имя скрипта (require'script' -> 'script' подставится вместо него) Пути абсолютные.
Roman
table.clear это такая штука, которая прямо в самом луаджите встроена, у неё вроде нет отдельных lua файлов неоткуда брать этот скрипт :(
Snusmumriken
Нет функции table.clear.
Roman
> print(table.clear) function: builtin#97
Snusmumriken
Roman
require('table.clear') сперва
Roman
появилась так?
Snusmumriken
Ничось. Кстати внезапно да. Но не проще ли делать так: t = {}?
Roman
оптимизация должна быть оптимальной!
Snusmumriken
Не говори глупости, эта штука создаёт таблицу, а сборщик мусора вычищает старую, когда придёт её время. И да, зачем тебе это?
Roman
Создание таблицы - самая дорогая операция в луа. Уже давно использую clear, а из-за торча оно отвалилось. Не переписывать же обратно, надо выяснить как оно могло отвалиться
Snusmumriken
Ну, ясное дело что вычищает таблички ))) Типа, создать таблицу и удалить старую - жутко дешевле чем очистить, хотя хз
Roman
for k, v in pairs tab tab[k] = nil это, только оптимальным путем
Roman
чтобы новую таблицу не создавать
Snusmumriken
Карочи, Ром, что ты пишешь такое, что тебе это критично?
Roman
критично!
Snusmumriken
Давай рассказывай, ты небось оптимизируешь то, что не нужно оптимизировать ))
Roman
мне важно и интересно знать, почему этот require работает в консоли и не работает теперь в resty, когда вчера работал
Snusmumriken
Потому что выведи в лог resty package.path. И package.preload, уж заодно. Мб когда ты реквайришь торч, он перезаписывает эту лабуду.
Roman
я его не реквайрю, я его только установил чтобы почувствовать себя владыкой нейросетей, и в процессе установки пришлось все конфиги луа, луарокса, кучу всякого менять
Snusmumriken
Ну и радуйся что станешь сильнее )))
Roman
> print(require('inspect')(package.preload)) { ffi = <function 1>, ["jit.profile"] = <function 2>, ["jit.util"] = <function 3>, ["table.clear"] = <function 4>, ["table.new"] = <function 5> } да, круто, это явно лазейка к решению
Roman
и в рести нужного нет
Roman
значит... там другой луа стоит!
Roman
как теперь узнать что за луа стоит?
Roman
LuaJIT 2.1.0-beta2 вот такое чтобы получить
Roman
Lua 5.1 - не то
Roman
надо полное имя
Roman
ну это LuaJIT 2.1.0-beta2
Snusmumriken
В рести - свой билд луаджита, если что. Там другой интерпретатор и всё такое.
Roman
ну не совсем, это я один файл переименовал вчера, вот рести его и не находило и использовало системный
Roman
можно пруф что у них luajit пропатченный?
Snusmumriken
можно пруф что у них luajit пропатченный?
Кто сказал "патч"? Свой билд = свой билд. Кстати, там есть встроенная ngx-фиговина. Она в ядре ))
mva
Рома $ for v in 5.{1..3} jit; do echo lua${v}:; lua$v -e 'f=require"table.clear"; print(table.clear)' 2>&1 | grep -v 'no f'; echo '==='; done lua5.1: lua5.1: (command line):1: module 'table.clear' not found: stack traceback: [C]: in function 'require' (command line):1: in main chunk [C]: ? === lua5.2: lua5.2: (command line):1: module 'table.clear' not found: stack traceback: [C]: in function 'require' (command line):1: in main chunk [C]: in ? === lua5.3: lua5.3: (command line):1: module 'table.clear' not found: stack traceback: [C]: in function 'require' (command line):1: in main chunk [C]: in ? === luajit: function: builtin#95 ===
mva
JFYI
mva
это есть ТОЛЬКО в luajit
mva
обв. в твоём торче не jit
mva
В рести - свой билд луаджита, если что. Там другой интерпретатор и всё такое.
в рести всё патченное, но там ничего в сам джит не добавляется. А вот что за говно в торче - тот ещё вопрос.
mva
LuaJIT 2.1.0-beta2 вот такое чтобы получить
ptint(jit.version and jit.version or 'говно какое-то')
Snusmumriken
> $ for v in 5.{1..3} jit; do echo lua${v}:; Что это? Кусочки php?
Roman
Roman
в остальных местах beta-2
Roman
а в рести обычный всеми любимый luajit, но во время запуска рести его ищет непонятным образом: libluajit-5.1.so.2 вот такую штуку ищет, почему именно .so.2 - непонятно, что за суффикс .2 часто всплывает - тайна
Roman
ptint(jit.version and jit.version or 'говно какое-то')
хм, а как насчет print(jit.version or 'говно какое-то') ? and тута неоптимальный!
mva
хм, а как насчет print(jit.version or 'говно какое-то') ? and тута неоптимальный!
ну, в оригинале я думал написать jit and jit.version, но посмотрел, что jit там есть :)
mva
алсо, beta1 - старьё
Roman
никому случайно не приходилось из рести емейлы отправлять?
bebebe
если бы и нужно было, я бы это делал через sockexec
Roman
нельзя же все подряд в шелл системы перенаправлять
bebebe
конечно нельзя, а вот почту можно
bebebe
и даже нужно
Roman
почему? у меня получается отправлять письма через gmail с помощью обычных resty сокетов, проблема что глючит сраная гугл почта, через раз отправляет
bebebe
Роман, вы пытаетесь сделать MTA на lua в openresty
Roman
Multi Theft Auto?
Roman
Maryland Transit Administration?
bebebe
да, если вы родились после 95 года MTA = mail transfer agent
Roman
я до родился, спокух
Roman
а нет, блин, я после родился :(
Roman
с какой стороны посмотреть :)
Roman
по сути, это такая древняя устаревшая апишка, к которой через сокет обращается, шлешь данные авторизации, само письмо и вуаля MTA на lua в openresty не должно звучать как что-то невероятное
bebebe
в SMTP есть код "придите попозже", он вам возвращается, нужно поместить письмо в очередь и попробовать попозже
bebebe
вы будете поддерживать такой функционал?
Roman
надеялся, что за меня уже сделали либу если бы времени свободного побольше было - почему бы и нет
bebebe
респект таким пацанам
Roman
то, что в openresty встроен таймер - это великолепно просто, очереди становятся элементарными
bebebe
ага, вперед
bebebe
крута! очереди и таймеры