Snusmumriken
Вызов луёвых функций из сишки — вообще неблагодарное дело, кстати, наоборот быстрее в тыщу раз (ибо нет всяких pcall).
Anton
я вариант про наборот lua -> c func
Snusmumriken
То есть, луа вызывает сишную функцию, а эта сишная функция думает как ей работать, оперируя собственным именем с луёвой стороны?
Snusmumriken
Зачем? Перегружать что-то?
Snusmumriken
А теперь смотри:
local foo = mylib.func
foo()
Всё, имя изменилось на непредсказуемое (как пользователь напишет). Вот тебе undefined behavior.
Anton
суть такая, есть lua скрипт. где десяток функций смотрит в одну С реализацию - си функция обращается за данными по сети и возвращает результат, а он потом в lua
Anton
я понял что геммор, просто думал не все так сложно, лучше тогда отдельно
Snusmumriken
Что происходит-то? Я может подскажу чего попроще.
Super
я что-то не понял, что у тебя происходит
Super
си функция возвращает результат, далее в луа его обрабатывай другой луа функцией
Anton
объясню. у меня реализия Cи функций будет происходит удаленно на другой машине вообще по сети
Anton
чтобы не копипастить - идея сделать одну функцию на си и потом в ней определить имя вызываемой, чтобы потом передать удаленно что нужно выполнить
Super
я бы это делал через апи (свое)
Super
у меня так работают скрипты - много серверов, один сервер запрашивает с разных
Super
возвращай json, а тот сервер. что запрашивает данные, уже пускай решает что с ним делать
Super
напиши просто там имя функции
Super
или так плохо?
Snusmumriken
объясню. у меня реализия Cи функций будет происходит удаленно на другой машине вообще по сети
Ага. Обычно, в таких случаях, сишка работает "тупым интерфейсом", а луа работает "мозгами".
Ты такой:
local msgs = mylib.func('getMessages')
Сишная функция уже делает, например, запрос за сообщеньками, как ей угодно, хоть вызовом удалённых процедур, хоть сетевыми взаимодействиями.
Потом ты такой:
local blabla = mylib.func('getUsers'), и сишная функция уже делает запрос за юзерами.
Это тупой пример.
Anton
ну да, типа того
Snusmumriken
Карочи, в функции можно передавать аргументы, пользуйся этим вместо "имени функции".
Anton
ну тут плюс - можно добавлять методы без пересборки клиента
Anton
можно добавлять функции уже не пересобирая билд с lua
Snusmumriken
Карочи, пили интерфейсы а не извращайся ))
Дедулькины способы всё ещё отлично работают.
Anton
понял, спасибо
Super
серьезный человек пришел )
Pavel
А вообще @Snusmumriken признавайся. что ты натворил?
раз чатиком САМ генерал заинтересовался...
Snusmumriken
Так, я быстро складываю свои полномочия и улетаю на угнанном вертолёте в закат
Andrey
Всем привет, привет!
Andrey
Подскажите есть ли на луа готовые библиотеки для работы с neo4j ?
Super
наверное ничего нету
Super
но мне кажется ее функции может выполнить тарантул
Super
и будет не хуже работать
Super
если бы они поддерживали какой-то стандартный протокол, то можно было бы просто использовать готовый от другой бд
Super
либо писать оболочку на си клиента самому, но это тяжело (мне по крайней мере)
Andrey
он. говорят у них есть REST api
Andrey
а есть библиотеки для коннекторов REST ?
mva
луа-чан, помоги решить проблему, пожалуйста:
есть, для примера, такой вот кусок строки: <a id="unclosed>Element and one>more">.
Внутри кавычек может быть сколько угодно >.
Кавычки могут быть любыми (и одинарными, и двойными)
Есть цель - заменить все > внутри кавычек (и только внутри них) на плейсхолдер.
В случае одного > всё довольно легко:
s:gsub(
[=[(=)(['"])]=].. -- only match attr.values, and not random strings between two random quoting marks
[=[([^%2]-)]=]..
"(>)"..
[=[([^%2]-)]=]..
[=[(%2)]=],
function(...)return g(4,...)end -- g() - заменяет указанный цифрой элемент на нужный плейсхолдер согласно тому, что именно сматчилось
mva
я уже всю голову сломал, как можно это переделать на возможность замены любого количества >
Super
а почему нельзя за 2 захода сделать?
Super
вырежи сначала все, что в кавычках
Super
потом покойно замени > на нужное тебе в этом куске
Super
для луа есть модуль pcre замен если что, там вроде как пошире функционал выходит
mva
mva
и я, кстати, кажется сделал
mva
сейчас попробую в скрипт перенести из интерактивной консоли
Anonymous
Anonymous
Super
😂
Sergey
Sergey
Боженька вас накажет
fgntfg
Pavel
Согласен
Кажется у меня волосы начали расти во всех местах.
И зарплата расти начала.
И отрещанный палец вырос.
И таблица в луа начала с 0-лч начинаться.
А вот папка npm modules наоборот скукожилась.
Sergey
Источник обс заслуживает доверия конечно же
Sergey
Делаю ставку - это из чатега натаникса
Sergey
Сам максимка небось инсайд выложил
Super
а для кликхаус есть луа адаптер?
fgntfg
Там для всего были, кажется
Super
вроде не вижу в списке
Mark ☢️
Anonymous
Super
ну да, можно по хттп
mva
гадство >_>
mva
сделал так, что указанный выше кейс решается
mva
зато теперь скрипт фейлится на данных, где такого мусора нету >_>
Egor
Здесь вопросы по математике котируются? -)
fgntfg
Здесь не уважают только вопросы про трейдинг и спам
Egor
Maxim
Наверное уже баян но вдруг кто еще не знаком с классификацией водки в стиле IT
0.1л - demo
0.25л - trial version
0.5л - personal edition
0.7л - professional edition
1.0л - network edition
1.75л - enterprise
3л - for small business
5л - corporate edition
Бутыль самогона - home edition
"На посошок" - Service pack
Рассол с утра - Recovery tool
Закуска - plugins
Пиво - patch
coca-cola, fanta, 7-UP - trojan viruses
Serezha
mva
спасибо за идею. Но я там уже всё переписал нафиг :)
Serezha
ок - она неочевидная но у меня пашет для вырезки фрагментов типа : <img src=".*?">
mva
вот я как раз модуль для облегчения тебе работы пилю
mva
https://luarocks.org/modules/mva/htmlparser
mva
(и это ещё админы Luarocks гусей просношали и пролюбили мне все даунлоды прошлой инкарнации, которая осталась завязана на них)
Serezha
полезное дело - в PHP активно пользовался такими либами
mva
лол
mva
-- templaters {{{
text=text:gsub(
[=[(=[%s]*?)(['"])]=].. -- only match attr.values, and not random strings between two random quoting marks
[=[([^%2<>]+)]=]..
[=[([^%2>]-)]=]..
[=[(%2)]=],
function(...)return g(4,...)end
) -- Escape "<" inside attr.values (see issue #50)