Snusmumriken
Метатаблица с типом в __index ))
Snusmumriken
Это первое что пришло в голову.
Alexey
Ты понимаешь что метатаблица устанавливается одна для всех lightuserdata в Lua state?
Snusmumriken
Как работает luasocket? Посмотри сурцы, они отлично написаны.
Alexey
Lua-cURL использует light userdata на статические объекты. Твой __gc получит на вход этот указатель Как ты узнаешь что его не надо удалять?
Alexey
luasocket не использует lightuserdata вообще
Snusmumriken
А что там?
Alexey
https://github.com/diegonehab/luasocket/blob/master/src/tcp.c#L200 p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); Ушел работать
Snusmumriken
Ну значит меня глюкнуло, пардон : ) Вот товарищу Айдару сурц отличной либы, в которой он может научиться!
Snusmumriken
Ты так бы и сказал: "Мой скудный ум не способен осознать величие твоего разума, поэтому я недостоин зваться товарищем"
Snusmumriken
Да ладно, я же шучу : ) Это настолько гротескно что очевидно, нет?
Snusmumriken
Ох, какие мы сложные ))
Snusmumriken
Как будто гиперболу изобрели позавчера : )
Snusmumriken
Пардон, 17 лет - и не разбирается в современном юморе : ) Ну ладно, ладно, прекращаю стебать. Все мы люди, и всем нам когда-то было (или даже будет) семнадцать. Я вон, в семнадцать, думал на тему "таньку за ляжку".
fgntfg
хмм, в 17 я думал о... наверное об поступлении в институты, лёгких алкогольных напитках и вот таких вот вещях
Snusmumriken
Я калькулятор.
fgntfg
Я экстраполировал, так как тоже не помню
Snusmumriken
Ух. У меня, до момента окончания университета, была довольно насыщенная жизнь, поэтому хорошо запомнилась. Хм. Там была такая танька, которую за ляшку, что прям страшно становится. Много впечатлений : )
Чтобы быть категоричным и агрессивным — тоже.
Ни на кого не намекаю, просто мимо проходил.
brestows
Всем привет, подскажите, как в Lua в регулярном выражении указать длину совпадения, типа подобного pcre {2,2}
Snusmumriken
lua_newuserdata - автоматом пушит в LuaState юзердату. Дальше делаешь с ней всякие грязные вещи.
Snusmumriken
brestows
т.е. Вот таую регулярку 18\d{2,2} штатно не заменить на родную?
Snusmumriken
Всем привет, подскажите, как в Lua в регулярном выражении указать длину совпадения, типа подобного pcre {2,2}
Да, дефолтные луа-регулярки довольно убогие, и годятся только для простых вещей. Поэтому можно что-то такое: local patt = ('%d'):rep(5)..('%d?'):rep(5) print(('12456we71231238ewr'):match(patt)) -- '%d{5, 10}' Есть библиотеки, добавляющие PCRE.
brestows
А как тогда искать например четырехзначное число начинающееся на конкретную цифру?
brestows
Печально
Snusmumriken
Хм. ('12456we71231238ewr'):match'4%d%d%d' Или ('12456we71231238ewr'):match('4'..(%d):rep(3))
brestows
Да, только вот проблема что у меня есть в базе куча регулярок pcre
Snusmumriken
Тогда ставь либу.
brestows
Да
brestows
А что то посоветуете?
brestows
А то я с lua только начал работать
Alexey
pcre
brestows
Так и называется?
Snusmumriken
Например. https://luarocks.org/modules/rrt/lrexlib-pcre http://rrthomas.github.io/lrexlib/manual.html
Alexey
https://luarocks.org/modules/rrt/lrexlib-pcre
brestows
Это я и нагуглил
brestows
Разобраться бы еще с ней, спасибо.
Alexey
На моих простых тестах работает чуть чуть быстрее Lua
Alexey
это просто pcre. Вот если соберешся lpeg ..... :)
Snusmumriken
Разобраться бы еще с ней, спасибо.
Мануал я скинул же. Вторая строка.
brestows
Да, его я тоже нашел
brestows
Все нашел, всем спасибо :)
Snusmumriken
Свободная страна, вспоминаем что хотим. Но правила демагогии еще никто не отменял :3
Snusmumriken
Прости Айдар, как ни странно, но большая часть нелестного от меня направлена на повышение гибкости мышления окружающих, и исправление косяков. Даже демонстрация моего чсв - чтобы увидеть реакцию окружающих, и умилиться от 'О боже мой, они аргументированно разносят мою чушь, они думают! Оно научились думать!'. Я в курсе, что раскрывая карты ты перестаешь воспринимать меня всерьез, но у тебя уйдет много времени чтобы понять. Я не ругаю и не обижаю, просто так сложилось.
Snusmumriken
Поэтому столько демагогии. Все мои манеры идут отсюда.
vvzvlad
а как в луа вывести цветной текст в терминал? пытаюсь так, и не полуается. print("\033[7m RPL-router version\n \033[0m")
Alexey
https://github.com/moteus/lua-log/blob/master/lua/log/writer/console/color.lua Там проверяется несколько библиотек
vvzvlad
только не ansicolors, пожалуйста. я не хочу тащить ради этого либу
vvzvlad
не верю. цвет — это просто управляющая последовательность. ты еще скажи, что без либы нельзя выдать /r, чтобы в начало строки вернуться.
vvzvlad
луа может произольные данные в stdout слать, значит можно туда и нужную последовательность выдать
vvzvlad
print(string.char(27,91,51,49,109)) --красим текст в красный print("Red text\n") print(string.char(27,91,48,109)) -- возвращаем настройки обратно
vvzvlad
спасибо, если бы ты не сказал, я бы скорее всего забил бы.
Snusmumriken
Хех, а я всё ещё рою SCI-последовательности, благо когда-то давно безумной скопипастенной магией на чистой сишке делал что-то такое:
Snusmumriken
vvzvlad
ох, епт.
Snusmumriken
Там тоже SCI-последовательности, типа печатаем в консольку ^!@#*!^$%!(*#&@text и получаем то что надо.
Snusmumriken
Хм, только что как-то получил, а теперь не могу повторить )))
Snusmumriken
Всё, раскусил. Дёргаем os.execute'' и escape-последовательности начинают работать. Под линексами, помнится, примерно то же самое.
Snusmumriken
С принтами тоже работает, многоцветность на месте. А вы говорите что без либы никак )))
Snusmumriken
Ну, ты такой большой, что скоро меня догонишь. Можно и как ко "множественному числу" обратиться ))
Snusmumriken
Я тут ещё побаловался. В общем, развлекайся, тут можно оболочку над этим замутить.
Snusmumriken
Красоту, очевидно.
Snusmumriken
У CSI немножко больше возможностей чем тебе кажется. Установка курсора в произвольное место, чтобы, допустим, перерисовать "экран" с человеческой скоростью, а не через "cls + print ещё раз". Можно устанавливать произвольный цвет по RGB, чтобы жизнь казалась мёдом. Есть несколько "планов текста", так что я бы не отказался от полноценного консольного модуля : ) Рогалики, чел. Рогалики. А ещё, если извратиться, думаю, можно прифигачить мышку вне осей, и перехват клавиш без ввода. Красота, в общем.
Snusmumriken
У меня была надежда, но ты её не оправдал. Мой первый полноценный рогалик - uMoria, и мне было тринадцать лет. Рядом были морувинды и герои, а я задрачивал морию, потому что мог.
Snusmumriken
Типичная мория : )
Snusmumriken
Айдар, ты играл в дьябло?
Snusmumriken
А в дум?
Snusmumriken
Хе. Ты знаешь, какая игра была прародителем и той и той? Причём официально. Я только что кинул её скриншот : )
Snusmumriken
У ДФ немножко другой рендер. Там opengl который рисует буквы тайликами.
Snusmumriken
Жабе было лень изучать SCI ))) На самом деле, в ascii не влезают символы морд дварфов. Режим приключенца - да. Режим крепости - слеттерс + симс + данжн-кипер.
Snusmumriken
Я решил что DF жрёт слишком много времени, поэтому чутка переключаюсь на oxygen not included. Именитые разрабы. Двухмерный мир, правда, но зато в жизненно необходимый ресурс впилен кислород, который постоянно кончается, и тут чуть больше микроменеджмента/устройств для механизмов : ) Автомат тьюринга, правда, построить нельзя, как и логические гейты, но можно балансировать газы в астероиде. Физон на месте, тяжёлые и холодные газы спускаются вниз, горячие/лёгкие - наверх, жидкости со связанными сосудами и т.п. Но за счёт простоты механизмов - на их реализацию уходит меньше времени. Когда особо играл в миникруфт и DF, ещё не умел программировать, но основная цель - всякая механика стрёмная. Пушки стреляющие лавой под давлением (df), или саморазворачивающаяся крепость на поршнях (mc). Было клёво, но о-очень долго.
Tverd
Парни, а в lanes есть возможность создавать канал между тредом и основной прогой с возможностью туда сюда... ну или другой какой-нить вариант обмена?
Alexey
да. Называется это там linda
Tverd
ага, спасибо, гляну
Anonymous
if groups_table.error and groups_table.error.error_msg then ...
mva
if groups_table.error and groups_table.error.error_msg then ...
ты же прочитал мой ответ, да? :)
mva
получилось? :)
Anonymous
Важно понять, что при AND если первое выражение вернёт FALSE (ключа нет), то второе даже не будет рассматрится