mva
я так в цикле делал
Snusmumriken
Тогда совсем не понятно )
Snusmumriken
У рести вон тоже смешанные блоки. И оно просто лоадстрингает.
mva
впрочем, кстати, там вроде и цикл, но...
mva
local hs = {
["mva.name"] = "mva's server";
...
["alpha-llc.org"] = "Alpha LLC";
}
for h,n in pairs(hs) do
VirtualHost (h)
name = n
ssl = {
key = "/etc/shared/certificates/"..h.."/"..h..".key";
certificate = "/etc/shared/certificates/"..h.."/fullchain.cer";
capath = "/etc/ssl/certs";
options = { "no_sslv2", "no_sslv3", "no_compression", "no_ticket" };
}
Component ("conference."..h) "muc"
name = "Конференции"
modules_enabled = { "pastebin", "muc_log", "muc_log_http" };
...
Component ("proxy."..h) "proxy65"
name = "Прокси"
...
end
mva
т.е., похоже, оно и правда, как-то разворачивается каким-то лодером, а потом выполняется loadstring'ом
mva
а, хотя...
mva
мне казалось что эти вот скобки мне пришлось только из-за использования переменных использовать
mva
а так, типа, даже без кавычек можно было объявлять
mva
но нет, посмотрел дефолтный конфиг, там, всё-таки кавычки
mva
так что это просто функции, никакой магии
mva
правда вот это вот блочное объявление тоже не совсем понятно. объявленные в блоке переменные относятся ведь к этому хосту.
mva
так что немного магии, всё же, есть
Snusmumriken
Ну значит оно использует луа как препроцессор, знаешь как с хтмл-шаблонами?
Маркеров отдельных блоков не видно, значит оно на ключевые слова реагирует или преобразуя их в луёвые конструкции, или ещё что.
Egor
Хочу перегрузить функцию isKeyPressed. В первом варианте тип аргумента char, во втором — const char*.
windowType.set_function("isKeyPressed", sol::overload(static_cast<bool(Window::*)(char)>(&Window::isKeyPressed), static_cast<bool(Window::*)(const char*)>(&Window::isKeyPressed)));
Код луа:
if window:isKeyPressed('a') then
...
end
if window:isKeyPressed("esc") then
...
end
Первое работает хорошо, а второе не работает вовсе, "esc" воспринимается, как 'e' Как это можно исправить?
Использую библиотеку sol2
Александр
Egor
Luсky
боты драные
Wsevolod
на шилду парсеры на каждом углу уже есть
Wsevolod
+ очено много ботов в которых капчу люди проходят, а дальше скрипт уже
Aydar
Wsevolod
Aydar
например?
Ну вот ты же выше написал, сначала люди решают а далее скрипт. Вариант с уникальными узкоспециализированными вопросами лучше так как шанс что кто-нибудь захочет написать парсер именно под эту группу маленький.
Wsevolod
Wsevolod
Ну и локальный реестр, если в одном чате репортят, акк вылетает с остальных чатов сети бота
Aydar
Да, против такого другие методы, типа CAS, но хотя бы 100% отсеять скрипты
Что толку отсеивать 100% скрипты если написать бота который обходит обычную капчу тоже очень просто? Спамеры быстро адаптируются, если я правильно помню там затраты небольшие что-то в районе 1$ за решение 1000 капч.
Капча короче не особо спасет мне кажется.
А реестры всякие это уже сложности, помимо бота-защитника надо будет ещё и на серваке БД хранить.
Wsevolod
Все таки скриптов пока большинство, по моим наблюдениям
Александр
добрый день. а есть ли знатоки prosody? отлаживал тут работу одного транспорта, мне теперь при каждом подключении 2000 запросов на подписку прилетает откуда-то. Транспорт уже выключил, клиента снес переставил , не могу понять откуда берется
Snusmumriken
Александр
я это себе все представляю. но мне подписки от моего собственного транспорта летят . на моем собственном сервере
Александр
то есть я отрубаю prosody все внешние линки, оставляю только локальную сеть, цепляю к нему gadjim с снесенным профилем и мне каждый коннект 2000 одних и тех же контактов на подписку. я их всех закрываю, офлайн-онлайн и они снова прилетают
Александр
где бы почистить?
Александр
/var/lib/prosody смотрел, пусто. mysql смотрел, тоже ничего такого
Александр
где могут быть эти pending request накоплены?
Александр
там суть в том что я код транспорта переписывал и от него похоже прилетели запросы с нарушением форматирования
Александр
и про них теперь где-то не ставится отметка что они уже доставлены до клиента
Александр
нашел. параметр roster типа json в таблице prosody
Александр
у этого json внутри секция pending которая корректно не удаляется
Александр
возможно потому что просто слишком дохрена контактов в одном запросе
Andrey
Всем привет! Можете накидать ссылок где подробно разжевывается про "встраиваемые языки программирования" и lua там сравнивается с другими?
Lucky
Lucky
белка и ангел, руби, гдскрипт
Lucky
это всё мало и слабо
Lucky
мегамонстр js
Aydar
Aydar
мегамонстр js
Ну у этого мегамонстра есть хорошие встраиваемые реализации.
Я например duktape юзал, вроде годно. У руби есть mruby сам не юзал но говорят тоже неплохо.
Aydar
белка и ангел, руби, гдскрипт
Белку и ангела я точно видел в паре опенсорсных проектов, утверждать что они слабые я б не стал (хотя может ты из личного опыта говоришь)
Andrey
Andrey
Vlad 👁🗨
Привет всем! Хочу сделать такой же пикер, что и в iOS. Я создал квадраты, используя перспективу, искажаю их в зависимости от положения. Из-за этого создается ощущение, что квадраты расходятся. Застрял на этом месте. Подскажите, куда двигаться дальше? За что цепляться, высота, координаты?
Snusmumriken
Пробовали сделать мешем, но там куча матеши с коррекцией uv-искажений.
Andrey
Подскажите, кто в теме, какая тут версия ? (ZBS)
Aydar
Andrey
да, точно, спасибо
Andrey
не могу понять почему для 5.1 print(_ENV) выдает nil
Andrey
для остальных таблицу
Aydar
не могу понять почему для 5.1 print(_ENV) выдает nil
Потому что в 5.1 нет _ENV
В 5.2 как-то переделали механизм окружений, тут подробно расписано http://lua-users.org/wiki/EnvironmentsTutorial
Из того что я понял в 5.1 у каждой функции было свое окружение а в 5.2 окружения стали отдельными таблицами и теперь уже функции можно выполнять в контексте выбранного окружения.
P.s палками не бейте если неправду сказал, читал не вдумчиво
usernameak
Andrey
а, все понял. книжка издана в 2016, lua5.2 появилась раньше
думал что это более менее свежие версии
Andrey
Andrey
Подскажите, как организовать вызов функции с условием что если оно не успело отработать за определенное время - то возвращается ошибка.
Например я запускаю функцию foo() и ограничиваю время ее выполнения - не успела вернуть return за 5 секунд -поднимается ошибка.
Andrey
не хочу просто велосипед изобретать, скорее всего решение стандартное
Wsevolod
Andrey
Andrey
есть examples ? с кодом
Andrey
можно внутрь функции запихнуть счетчик который по завершению отвалится ?
Andrey
Wsevolod
С тредами я не работал, но кмк єто на сишке проще написать и забиндить
Snusmumriken
Например так:
function coroutine_sleep(timeout)
timeout = timeout + os.clock()
while os.clock() < timeout do
coroutine.yield()
end
end
function call_routine(func, timeout, ...)
local routine = coroutine.wrap(func, ...)
timeout = timeout + os.clock()
local result
while not result and os.clock() < timeout do
result = routine()
end
return result
end
function foo()
coroutine_sleep(3)
coroutine_sleep(5)
return 10
end
print("1", call_routine(foo, 5))
print("2", call_routine(foo, 10))
Snusmumriken
Функция call_routine блокирует, сделаешь себе свой менеджер параллельных задач.
Sergei
добрый вечер, глупый вопрос:
for x = 1, 9, 1 do
print("srv_%d" % x)
end
Sergei
как это сделать?:)
Snusmumriken
("srv_%d"):format(x)
Andrey
Anonymous
привет всем! есть ли тут люди которые делают моды для Warhammer Total War 2 используя LUA?