@ProLua

Страница 40 из 307
Marina
14.01.2017
14:40:01
все сработало отлично! а есть какие-то стайл гайды для кода?

Octo@dshacks
15.01.2017
15:06:01
как-то можно в hex перевести?

нашел

Alejandro
15.01.2017
23:52:31
Фига нафлудили )))

Google
Arsen
18.01.2017
21:51:47
всем привет.

вопрос возник. как экранировать просто все двойные кавычки в строке?

(json объект и там очень много string полей)

пока решил загрузкой объекта из файла.

всем спасибо.

Alexey
18.01.2017
23:34:19
regular expressions

fox.lua
19.01.2017
02:47:22
вопрос возник. как экранировать просто все двойные кавычки в строке?
можно использовать синтаксис с квадратными скобками print([==[ ... ]==])

знаков равенства может быть столько, сколько нужно

в т.ч. и ноль штук

главное, чтобы их количество и справа, и слева совпадало

Alexander
23.01.2017
14:45:44
мне в Lua не хватает подлинных констант. Чтобы написал const ZZZ=Y (вместо local ZZZ=Y) и не боялся, что нечаянное присваивание испортит эту переменную один из выходов - сделать неизменяемую таблицу (http://lua-users.org/wiki/ImmutableObjects = Immutability of tables (read-only tables)). но она ж будет медленнее работать?

Snusmumriken
23.01.2017
14:46:05
setfenv на что?

Alexander
23.01.2017
14:48:43
setfenv на что?
это для ускорения таблицы что ли?

Google
Snusmumriken
23.01.2017
14:49:28
Пардон, setfenv - переключение глобального пространства, чтобы не затирать то что уже есть в глобале.

Alexander
23.01.2017
14:49:45
дыык

так если я в глобале определяю константные переменные?

Snusmumriken
23.01.2017
14:51:23
..То провешиваешь линк на константы в маленькую свёрнутую вселенную, определённую через setfenv. А так - можно запилить отдельную условно глобальную табличку "const": local const = {} const.xxx = yyy Константы традиционно объявляются в начале файла. Мне сложно придумать задачу, для которой их необходимо дополнительно объявлять где-то посередине. А пока все константы наверху - легко увидеть что что-то затираешь.

Marina
23.01.2017
14:51:39
а в чем сложность написать local?

Snusmumriken
23.01.2017
14:54:00
https://ilovelua.wordpress.com/tag/require/ Тут довольно популярно описано применение setfenv, и модулей на их основе. Лично мне лень с этим морочиться, ибо объявить кучу локальных, а потом выгрузить фабрику - удобнее.

Alexander
23.01.2017
14:54:07
а регексы в стиле (foo|bar) делаем через Lrexlib ?

Snusmumriken
23.01.2017
14:54:15
lpeg.

Alexander
23.01.2017
14:54:36
ага, видел и это

интересует именно практика сообщества

Snusmumriken
23.01.2017
14:54:46
Оно, правда, сравнительно сложное, но могучее и быстрое. На освоение уйдёт много времени.

Для моих задачек всегда хватало стандартных регулярок, там нет сложного синтаксического анализа. Всю дорогу нужно было что-то выдрать, поэтому если не нужна оптимизация - string.match, а если нужна - string.find + string.sub: связка работает примерно в 15 раз быстрее match, и зависимость нелинейная, то есть, длиннее обрабатываемый текст - быстрее работает find + sub.

Alexander
23.01.2017
14:58:03
прикольно про ~15 раз

Snusmumriken
23.01.2017
14:58:46
Ну, для обработки пользовательского ввода можно не париться, человек медленно печатает : 3

Alexander
23.01.2017
14:59:10
а если у меня этих обезьян на входе бота 1000 человек? :)

насколько я усвоил дух языка, то можно провести аналогию с RISC-процессорами по сравнению с CISC: упрощенный набор инструкций, которые выполняются очень быстро (в жертву приносятся такие алгоритмы, которые нужны редко, и лучше их самому писать)

Snusmumriken
23.01.2017
15:02:05
Тоже можно. Человек, в среднем, печатает сообщение в пол минуты. Тысяча сообщений в пол минуты - 33.(3)с/сек. Это довольно мало : 3

Google
Alexander
23.01.2017
15:03:14
да-да, моя максимальная нагрузка в самые жесткие моменты была не больше 2-3 человек в секунду, это оооочень мааааааало )

Snusmumriken
23.01.2017
15:04:03
Не в курсе точно, не лез в корни регулярок. Просто тесты.

Alexander
23.01.2017
15:04:06
Просто match сильно грузит сборщик мусора постоянно пересобирающимися цепочками из букв. Конечный автомат с возвратом, хуле.
ну, не только регексы ) вообще алгоритмический подход. нет continue (ну, сделали goto, но это чуть не то)

мне, кстати, и нравится. в интерпретаторе есть только то, что нужно и о чем ты знаешь

Snusmumriken
23.01.2017
15:05:13
Хех, как раз сегодня утром про goto вспомнил.

Alexander
23.01.2017
15:06:18
БОЛЬШОЙ АДРОННЫЙ ХУЕСОСНЫЙ КОЛЛАЙДЕР

Snusmumriken
23.01.2017
15:07:00
Есть отличная библиотека для lua, решающая сложную коллизию между полигональными объектами. Называется hardon collider. Нет, это не опечатка. Тут примерно тройная игра слов.

Alexander
23.01.2017
15:08:08
а, фу

там же еще else

Snusmumriken
23.01.2017
15:08:23
not succ - значит коллизии совсем нет, и это можно пропускать.

https://psv4.vk.me/c810130/u75175715/docs/97ca6e4f02d8/AABB.gif Дрожание - в старой версии, так что на него можно забить.

Alexander
23.01.2017
15:09:40
короче завернул бы все это в наружний if/then или вынес весь if a.dynamic в подфункцию

ооо, красота

Snusmumriken
23.01.2017
15:11:11
короче завернул бы все это в наружний if/then или вынес весь if a.dynamic в подфункцию
Так и было, пока не вспомнил про goto. Меньше вложенность - удобнее чтение. Это тот случай где continue (или его goto-аналог) более чем оправдан. А комментарий для веселья.

Alexander
23.01.2017
15:11:57
похоже на эскиз для игры с физикой

Snusmumriken
23.01.2017
15:15:43
Ну, физики тут особо нема. Над ней надо поработать, да и вообще переделать систему под классовые коллайдеры на колбеках. Пардон, большие гифки.

Alex Фэils?︙
23.01.2017
15:16:19
крутяк, а у меня физика была такая ?

(Это я во флеше анимировал давно когда-то. все равно не въехал до конца в то, как бы это красиво сделать с моментами инерции и пр.)

Google
Alexander
23.01.2017
15:17:16
большой адронный взбалтыватель

Snusmumriken
23.01.2017
15:17:18
Ну, он хоть ПОВОРАЧИВАЕТСЯ : 3 Значит уже не AABB. Другое дело что для всяких платформеров с прочими 2d-игрулями супер-реальная физика не нужна.

Admin
ERROR: S client not available

Snusmumriken
23.01.2017
15:18:10
Вот тут - физон абсолютно упругих столкновений + несколько шейдеров. Но за счёт простоты формы, нет никаких сложных пертурбаций. Факт коллизии считается тупо как сумма радиусов, вектор выхода - сумма радиусов - дистанция между объектами.

Alexander
23.01.2017
15:18:29
абсолютно упругие столкновения - боже упаси

некорректный обсчет абсолютно упругих столкновений может же приводить к казусам, когда ты чуть-чуть толкнул автомобиль у стены, на сантиметр, а он взлетел на десять метров вверх

в игрушке типа carmageddon такое весело, но когда у тебя симулятор городской среды, с цивильными пешеходами и зданиями и прочим, чешешь репу

Snusmumriken
23.01.2017
15:20:46
Ты можешь увидеть на гифке, как сильно отскакивает самый мелкий камушек. Импульс - масса * вектор движения. Масса и размер, в данном случае - одно и то же (по экспоненте, но всё же). Очень большие объекты - очень, очень инертные.

Alexander
23.01.2017
15:21:24
ага, очень реалистично отображено

Snusmumriken
23.01.2017
15:24:44
Ну, по сути, это простенький решатель коллизии, когда мы передаём собственное ускорение. Всё из рукипедии.

Офигенно. Давай без этого, лады?

Alexander
23.01.2017
15:41:27
разложение вектора импульса по координатным осям, проведенным через центры круглых тел. получается, в общем случае (для тел произвольной формы) вдоль нормали и касательной плоскости соударения.

и что если нормаль не проходит через центр масс тела, то образуется вращательный момент

это увлекательно и я понял, но в моем ближайшем будущем задачек по физике твердого тела не предвидится :)

Alexey
23.01.2017
15:45:29
Так и было, пока не вспомнил про goto. Меньше вложенность - удобнее чтение. Это тот случай где continue (или его goto-аналог) более чем оправдан. А комментарий для веселья.
Это сейчас "меньше вложенность" удобнее, чем "бешено искать глазами по всему файлу мудацкие метки" было продекларировано, верно? :)

Snusmumriken
23.01.2017
15:50:07
Да, именно так : 3 В луях встроены ограничения на метки, из серии 'нельзя ссылаться на метки вне области видимости', плюс говорящие имена. Вдобавок, тут промежуточный вариант: он будет заменен на вызов колбеков, и метка будет ниже точки перехода на три-пять строк.

Alexey
23.01.2017
15:51:32
Тут самый кейс для if. :)

Если это — тогда итерация выполняется.

Snusmumriken
23.01.2017
15:53:03
Хех, меня слегка напрягают люди, которые бросаются из крайности в крайность. "Дейкстра сказал что goto - говно, значит все кто его используют - говно". Хехе. Goto, равно как и любой оператор - инструмент. И я лучше использую его, чем буду мутить такие конструкции: if a > b then if c < b then if e > 25 then if c < 25 then if k > 35 then if d > e then a = 10 end end else if k > 22 then if d > e then a = 15 end end end end end

Google
Snusmumriken
23.01.2017
15:56:24
Конструкция для примера. На моей практике, хорошо воспринимается вложенность до трёх уровней.

Snusmumriken
23.01.2017
15:56:36
Ну что поделать, какой есть : )

Alexey
23.01.2017
15:56:41
Напрягают люди в интернете и я почему-то только за то, что имею своё мнение — сходи подрочи.

А в твоём примере сейчас — это всё объединяется в пару простых условий.

Snusmumriken
23.01.2017
15:57:09
> Конструкция для примера. Это чисто демонстрация вложенности. Мне лень придумывать примеры, где это было было бы обосновано и сокращалось через goto, благо подобный пример я приводил выше. На тему напряжения по поводу чужого мнения - аналогичное утрирование, ибо я просто не имею личных дел с такими людьми : ) Спасибо за совет, но я нахожу его неудачным: мастурбацией снимается возбуждение цнс. Напряжение - другими способами.

Alexander
23.01.2017
16:02:27
У меня такой вывод, что любое средство хорошо, если оно понятно

Snusmumriken
23.01.2017
16:02:32
Да. Обычно, понятными являются традиционные приёмы, но можно сделать так чтобы что-то необычное было понятным. Например, оставив комментарий, или используя говорящие имена. Я использовал три тонкости, используя goto: 1. Объективная польза; 2. Говорящая метка, по имени стандартного оператора во многих языках, с соответствующим поведением; 3. Хвост метки в области видимости даже небольшого монитора, отдельно выделен на собственной строке.

Alexander
23.01.2017
16:04:15
Тем более, что в луа goto не бездумный опасный jump как в Си setjmp, а структурно ограниченный

Страница 40 из 307