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
серьезный человек пришел )
Это лучше чем товарищ майор в чате-)
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
сейчас попробую в скрипт перенести из интерактивной консоли
Super
😂
Sergey
Какое враньё безбожное
Sergey
Боженька вас накажет
fgntfg
Pavel
Согласен
Кажется у меня волосы начали расти во всех местах. И зарплата расти начала. И отрещанный палец вырос. И таблица в луа начала с 0-лч начинаться. А вот папка npm modules наоборот скукожилась.
Sergey
Источник обс заслуживает доверия конечно же
Sergey
Делаю ставку - это из чатега натаникса
Sergey
Сам максимка небось инсайд выложил
Super
а для кликхаус есть луа адаптер?
fgntfg
Там для всего были, кажется
Super
вроде не вижу в списке
Mark ☢️
Super
ну да, можно по хттп
mva
гадство >_>
mva
сделал так, что указанный выше кейс решается
mva
зато теперь скрипт фейлится на данных, где такого мусора нету >_>
Egor
Здесь вопросы по математике котируются? -)
fgntfg
Здесь не уважают только вопросы про трейдинг и спам
Maxim
Здесь вопросы по математике котируются? -)
- Мойше, сколько будет дважды два? - А мы-таки покупаем или продаём?
Maxim
для тебя бесплатно=)
Вы очень любезны, тогда дайте два! А лучше три, чтоб четыре влезло
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
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)