@ProLua

Страница 289 из 307
Насибуллин
09.05.2018
08:25:20
Ванильные руды

Марципановые копи

Snusmumriken
09.05.2018
08:25:58
С вкраплениями маршмэллоу.

*намайнил*

Google
Particle
09.05.2018
13:59:26
Подскажите пожалуйста, делаю так: dices, sides, taskA, taskB = string.match("4d2|math.ceil(k/2)+1", "(%d+)d(%d+)|(.+)k(.+)") print(dices, sides, taskA, taskB) i = 4 z = tostring(taskA.. i + dices - 1 ..taskB) x = loadstring("return ", z) x = x() print("=", x) как заставить его решать стринг?

Philipp
09.05.2018
14:00:06
“return” .. z

Particle
09.05.2018
14:00:18
о! точна)

Спасибо, что помогли слепому)

Philipp
09.05.2018
14:01:21
))

Particle
09.05.2018
16:17:25
19:15:59.367 For: 2d6>((5/2)*(3/k)+1) 19:15:59.367 19:15:59.367 Mean: 2.694 19:15:59.367 Deviation: 0.700 19:15:59.367 19:15:59.367 Normal: 19:15:59.367 2 41.667% 19:15:59.367 3 50.000% 19:15:59.367 4 5.556% 19:15:59.367 5 2.778% 19:15:59.367 19:15:59.367 At Least: 19:15:59.367 2 41.667% 19:15:59.367 3 91.667% 19:15:59.367 4 97.222% 19:15:59.367 5 100.000% 19:15:59.367 19:15:59.367 At Most: 19:15:59.367 2 100.000% 19:15:59.367 3 58.333% 19:15:59.367 4 8.333% 19:15:59.367 5 2.778% It works =)

bebebe
09.05.2018
16:18:40
Кстати, я может задавал уже такой вопрос, кто-нибудь на практике использовал какие либо библиотеки фаззи серча?

Particle
09.05.2018
16:20:24
Ура! =)
это точно)

Philipp
09.05.2018
16:20:30
Только зачем тебе время?

Particle
09.05.2018
16:20:52
это корона выдает сама

Philipp
09.05.2018
16:21:06
А

Google
Philipp
09.05.2018
16:21:11
А рандомизатор у Короны нормальный?

Дефолтный луашный не оч

Particle
09.05.2018
16:23:03
незнаю. Я использую свой, но не уверен, что это сильно лучше чем просто os.time. Тестировал немного, мне показалочь, что отличается результат math.randomseed( modAssay.genSeed( )) function modAssay.genSeed( ) local i, f = math.modf( os.clock( )) local clock = tonumber( tostring( i - f ):sub( 7, 9 )) if clock == nil then clock = math.random( 1, 999 ) end local time = tonumber( tostring( os.time( )):sub( 9 )) return clock + time * math.random( 1, 99 ) end

методом тыка пробовал разные сочетания =)

Philipp
09.05.2018
16:40:06
Проблема именно в math.random

Который не ОЧЕНЬ

Посмотри, вроде в короне свой рандомизатор быть должен

Particle
09.05.2018
16:41:39
ща гляну

в короне нет своего

Tverd
10.05.2018
06:48:08
https://github.com/linux-man/randomlua

Рома
10.05.2018
11:24:38
Привет! Не знаю зачем и почему захотелось это сделать, но есть один бенчмарк с кучей разного всякого, и луа там приуныла по позиции, и захотелось её приподнять И такая любопытная вещь: подключение к базе postgtres и mysql local time = gettime() for i = 1, 1000 do local sock = tcp() sock:connect('127.0.0.1', '5432') sock:send(auth_data) sock:receive(1) sock:close() end print(gettime() - time) Для postgres и ровно то же самое с другой строкой auth_data и портом для mysql В mysql идет больше данных, но почему-то подключение к myqsl почти в 200 раз быстрее! Как так? Что делать?

Tverd
10.05.2018
11:25:01
Привет, Рома!

бесполезный бенч... Имхо

Насибуллин
10.05.2018
11:26:10
само подключение или обмен данными?

обмена же не идет

Рома
10.05.2018
11:26:45
имено подключение чтобы подключиться к базе под логином, и это занимает больше времени чем обмен

Tverd
10.05.2018
11:26:54
А так - разные клиенты под постгрес и мускул, вот и разница. Оп, тупанул. Внутри авторизация разная в самих серверах

Насибуллин
10.05.2018
11:27:10
можно на родном постгрес клиенте проверить

если будешь вечером в сети

кинь мне линку на рабочий постгрес

Google
Насибуллин
10.05.2018
11:27:33
я с сишной либы аутентифицируюсь

Рома
10.05.2018
11:27:40
бесполезный бенч... Имхо
Я долго искал где именно бутылочное горлышко, и вот этот бенч его изолирует

кинь мне линку на рабочий постгрес
sock\connect('127.0.0.1', '5432') вот же она))

Tverd
10.05.2018
11:29:17
Вообще мускул быстрее постгреса на простых вещах, но на тяжелых - проблема, и тут постгрес на коне. Что касается коннекта, лично на мой взгляд проблема скорее всего в авторизации, если смотреть на данный бенч

Насибуллин
10.05.2018
11:29:51
у меня просто постгреса нет на виртуалке

Tverd
10.05.2018
11:29:56
в итоге - не луа проблема )

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

Насибуллин
10.05.2018
11:31:48
коннект пул обычный подойдет тоже)

который на тредах

Tverd
10.05.2018
11:32:00
ага, норм вариант

Рома
10.05.2018
11:33:03
Ну и да, это все во nginx в openresty, получается один коннект на одного юзера, которых может быть очень много

Насибуллин
10.05.2018
11:33:34
а с консольки значит в 200 раз медленнее?

или ты прям в опенрести замерял?

Рома
10.05.2018
11:34:50
Прямо в опенрести ngx.socket.tcp и отдельно require('socket').tcp - цифры такие же

Насибуллин
10.05.2018
11:35:18
а о каких порядках идет речь?

милисекунды против секунд?

просто вполне возможно, что постгрес аутентификация занимает например 500мс а мускл 2

тогда это было бы нормально

а вообще , мне кажется надо запилить коннекшн пул в сценарии с опенрести и не открывать больше 20-50 коннектов

остальные пусть в очереди ждут

Google
Рома
10.05.2018
11:41:08
странные дела, а сейчас всего в 2 раза, 3.12с vs 1.8с 1000 итераций, покопаю в сторону пула

Насибуллин
10.05.2018
11:41:37
3 секунды все равно дохуя

возможно создание 1000 tcp коннектов причастно

Рома
10.05.2018
11:46:13
То то и странно! 1 коннект 0.003с, как раз одна тысячная от 3с, и это очень много, когда mysql показывал 0.00004 за коннект И вот явно какая-то фигня происходит

Насибуллин
10.05.2018
11:47:15
3 миллисекунды не много

все таки через лупбек идет

если бы доменные сокеты то можно было бы подумать

Рома
10.05.2018
12:02:56
Может с опенрестей работали с базой? Смотрю код бенчмарка openresty lua, тут при каждом обращении к серверу создается новый инстанс, новый конекшн. И смотрю то же самое node js, один раз создался инстанс, один раз приконектился и все, все остальное время используется этот один и ему не надо никакой авторизации больше делать. При этом у ноды результат немножко лучше, если бы можно было так же в опенрести - была бы супер скорость

Насибуллин
10.05.2018
12:03:51
опенрести модулем nginx-а идет?

я просто не писал на луа, никогда

как луа участвует в опенрести?

Рома
10.05.2018
12:05:41
Насколько я понимаю, при каждом обращении к серверу создается поток, в этом потоке запускается lua и ответ сервера формирует

Насибуллин
10.05.2018
12:06:33
ну, не знаю

Рома
10.05.2018
12:06:35
я просто не писал на луа, никогда
советую) почему бы и нет?

Насибуллин
10.05.2018
12:06:42
я на си пишу

на работе на дотнете

времени не хватит на всё

Snusmumriken
10.05.2018
12:22:41
Насколько я понимаю, при каждом обращении к серверу создается поток, в этом потоке запускается lua и ответ сервера формирует
У опенрести - похоже но не совсем. Если отключено кеширование - да, создаётся новый поток в котором всё инициализируется. При включённом кешировании - вроде бы луа-байткод заворачивается и сохраняется в оперативке, и по нему прогоняется обращение. При этом частично сыпятся всякие рандомы (тот сид при котором в первый раз был вызван math.randomseed), и ещё несколько косячков.

Насибуллин
10.05.2018
12:23:31
т.е. это не модуль нжинкса?

Snusmumriken
10.05.2018
12:23:43
Модель нджинкса, где луа встроена в ядро. Это, собсно, лёгкая переделка нджинкса.

Google
Snusmumriken
10.05.2018
12:24:28
Но у нджинкса собственное довольно мощное кеширование.

Рома
10.05.2018
12:26:43
Да модуль 100%, добавляет директивы, луа там обратывает реквесты То что оптимизирует и кеширует это здорово, но мы тут про sock:connect обсуждали, поток nginx на каждый реквест создает и это переиспользование сокета усложняет

вот есть ngx_postgres модуль, там наверняка не создается на каждый реквест новое соединение с базой, а для использования из луа из content_by_lua оно бесполезно, слишком оверхед большой

Snusmumriken
10.05.2018
12:30:19
Везде написано, что нгинкс использует N потоков для обработки запросов, при авто - соответствующие количеству процов. Видать не пересоздаёт поток при каждом новом запросе, это слишком медленно.

Значительно быстрее гонять одну lua-state на поток, переинициализируя начальные данные/вычищая глобалспейс после выполнения скрипта, хм.



Рома
10.05.2018
12:36:28
Везде написано, что нгинкс использует N потоков для обработки запросов, при авто - соответствующие количеству процов. Видать не пересоздаёт поток при каждом новом запросе, это слишком медленно.
при авто - соответствующие количеству процов Есть воркеры - это процессы, один на ядро компа, чтобы комп всеми ядрами думал И есть треды - один на клиента, чтобы они не в очереди стояли, а параллельно обрабатывались Вот Вася зашел в первый воркер и ждет данных с БД, а в это время Петя в тот же воркер зашел, пока Вася ждет, и этих потоков в nginx можно хоть десятки тысяч делать

Snusmumriken
10.05.2018
12:36:52
Типа, у нас есть список соединений. Кто-то что-то прислал? Записали его запрос в список событий. Воркер закончил работу? Загрузили его новым запросом из списка событий.

При отсутствии кеширования - воркер каждый раз создаёт новую LuaState на запрос, при наличии - использует ту которая в нём была ранее.

Рома
10.05.2018
12:38:37
Там скорее один луа стейт на воркер, Вася зашел и поставил глобальную переменную, а Петя потом её прочитал, если они в один воркер попали

При том что они в разных потоках были

Snusmumriken
10.05.2018
12:39:15
Нельзя использовать один луастейт в разных потоках.

Рома
10.05.2018
12:39:33
Почему?

Snusmumriken
10.05.2018
12:40:18
Точнее, технически возможно, но будет бешеная каша вроде той которую ты сейчас описал, плюс одновременные попытки чтения/записи приводят к неопределённому поведению, всё равно что взять случайный участок памяти и попробовать оттуда что-нибудь считать.

Рома
10.05.2018
12:41:25
> но будет бешеная каша вроде той которую ты сейчас описал так это глобальные переменные, это нормально! для реальных задач они глобальные трогать не будут и все хорошо

Snusmumriken
10.05.2018
12:42:01
Карочи, копай либы вроде Lua Lanes. Оно позволяет из луёв открывать дополнительные LuaState'ы и работать с ними. И там много мороки с мьютексами/семафорами даже внутри местных связок между потоками.

Рома
10.05.2018
12:44:04
рести прекрасно их спавнит и у него есть семафоры

Snusmumriken
10.05.2018
12:44:15
> но будет бешеная каша вроде той которую ты сейчас описал так это глобальные переменные, это нормально! для реальных задач они глобальные трогать не будут и все хорошо
У луа-стейта есть собственный индекс содержимого. Луа-таблички автоматически реаллокаются, например. Что будет если два потока одновременно реаллокнут даже разные таблицы, как это распределится в памяти?

Рома
10.05.2018
12:44:43
какой-то это сделает раньше

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