Alex
Alexander
🦥Alex Fails
🦥Alex Fails
Кстаити. Груп батлер на луа
Alexander
Давай
(убрал имя бота, кому интересно - пишите в личку)
(он писался на коленке за час)
Alex
о, а я слышал про твоего бота вроде бы :)
🦥Alex Fails
Спс
Alexander
Alex
??
не помню от кого, но друзья шибко любят текстовые квесты :)
Anonymous
Добрый день!
Anonymous
Я изучаю Lua, я в правильной группе для знатоков и новичков?
Alex
Да. :) Привет, Марина.
Alexander
мне кажется, что да (хотя я сам тут неделю, стаж програмирования конкретно на Lua пару месяцев, а общий стаж программирования 20+ лет)
Anonymous
Урааа, какое счастье. В команде никто язык не знает, спросить некого, в интернетах не всегда понятно, тк не знаю, куда же идти)
Anonymous
Правила вижу, ругаться не намерена, торжественно клянусь не нарушать)
Alexander
а можно спросить название аэропорта на вашей аватаре? :)
Anonymous
Дюссельдорф)
Anonymous
Подскажите, пожалуйста, есть ли у Луа библиотечка, в которой можно проверить по строке, что она uuid? Я подключила вот эту http://tieske.github.io/uuid/ , но тут только генерация, а проверки нет. Если точно, мне нужен аналог джавового UUID.fromString(str)
Alexander
я б написал регекс простой
Anonymous
то есть готового нет?
Alex
А зачем?
Anonymous
Вроде штука популярная, обычно есть все. Но я на луа без году неделя, так что не знаю как тут принято. каждый сам пишет?
Alex
Anonymous
значит регулярка, спасибо)
Anonymous
все сработало отлично!
а есть какие-то стайл гайды для кода?
Marvin
как-то можно в hex перевести?
Marvin
нашел
Alejandro Jeditobe
Фига нафлудили )))
Loo
всем привет.
Loo
вопрос возник. как экранировать просто все двойные кавычки в строке?
Loo
(json объект и там очень много string полей)
Loo
пока решил загрузкой объекта из файла.
Loo
всем спасибо.
Alex
regular expressions
ГуНиСе️
знаков равенства может быть столько, сколько нужно
ГуНиСе️
в т.ч. и ноль штук
ГуНиСе️
главное, чтобы их количество и справа, и слева совпадало
Alexander
мне в Lua не хватает подлинных констант.
Чтобы написал const ZZZ=Y (вместо local ZZZ=Y) и не боялся, что нечаянное присваивание испортит эту переменную
один из выходов - сделать неизменяемую таблицу (http://lua-users.org/wiki/ImmutableObjects = Immutability of tables (read-only tables)).
но она ж будет медленнее работать?
Snusmumriken
setfenv на что?
Snusmumriken
Пардон, setfenv - переключение глобального пространства, чтобы не затирать то что уже есть в глобале.
Alexander
дыык
Alexander
так если я в глобале определяю константные переменные?
Snusmumriken
..То провешиваешь линк на константы в маленькую свёрнутую вселенную, определённую через setfenv.
А так - можно запилить отдельную условно глобальную табличку "const":
local const = {}
const.xxx = yyy
Константы традиционно объявляются в начале файла. Мне сложно придумать задачу, для которой их необходимо дополнительно объявлять где-то посередине. А пока все константы наверху - легко увидеть что что-то затираешь.
Anonymous
а в чем сложность написать local?
Alexander
"Константы традиционно объявляются в начале файла." согласен
Alexander
Snusmumriken
https://ilovelua.wordpress.com/tag/require/
Тут довольно популярно описано применение setfenv, и модулей на их основе.
Лично мне лень с этим морочиться, ибо объявить кучу локальных, а потом выгрузить фабрику - удобнее.
Alexander
а регексы в стиле (foo|bar) делаем через Lrexlib ?
Snusmumriken
lpeg.
Alexander
ага, видел и это
Alexander
интересует именно практика сообщества
Snusmumriken
Оно, правда, сравнительно сложное, но могучее и быстрое. На освоение уйдёт много времени.
Snusmumriken
Для моих задачек всегда хватало стандартных регулярок, там нет сложного синтаксического анализа.
Всю дорогу нужно было что-то выдрать, поэтому если не нужна оптимизация - string.match, а если нужна - string.find + string.sub: связка работает примерно в 15 раз быстрее match, и зависимость нелинейная, то есть, длиннее обрабатываемый текст - быстрее работает find + sub.
Alexander
прикольно про ~15 раз
Snusmumriken
Ну, для обработки пользовательского ввода можно не париться, человек медленно печатает : 3
Alexander
а если у меня этих обезьян на входе бота 1000 человек? :)
Alexander
насколько я усвоил дух языка, то можно провести аналогию с RISC-процессорами по сравнению с CISC: упрощенный набор инструкций, которые выполняются очень быстро (в жертву приносятся такие алгоритмы, которые нужны редко, и лучше их самому писать)
Snusmumriken
Тоже можно.
Человек, в среднем, печатает сообщение в пол минуты. Тысяча сообщений в пол минуты - 33.(3)с/сек. Это довольно мало : 3
Snusmumriken
Alexander
да-да, моя максимальная нагрузка в самые жесткие моменты была не больше 2-3 человек в секунду, это оооочень мааааааало )
ГуНиСе️
Snusmumriken
Не в курсе точно, не лез в корни регулярок. Просто тесты.
Alexander
Alexander
мне, кстати, и нравится. в интерпретаторе есть только то, что нужно и о чем ты знаешь
Snusmumriken
Хех, как раз сегодня утром про goto вспомнил.
Snusmumriken
Alexander
БОЛЬШОЙ АДРОННЫЙ ХУЕСОСНЫЙ КОЛЛАЙДЕР
Snusmumriken
Есть отличная библиотека для lua, решающая сложную коллизию между полигональными объектами.
Называется hardon collider. Нет, это не опечатка. Тут примерно тройная игра слов.
Alexander
а, фу
Alexander
там же еще else
Snusmumriken
not succ - значит коллизии совсем нет, и это можно пропускать.
Snusmumriken
https://psv4.vk.me/c810130/u75175715/docs/97ca6e4f02d8/AABB.gif
Дрожание - в старой версии, так что на него можно забить.
Alexander
короче завернул бы все это в наружний if/then или вынес весь if a.dynamic в подфункцию
Alexander
Snusmumriken
Alexander
ооо, красота
Alexander
похоже на эскиз для игры с физикой