Snusmumriken
Таки в полтора-два : )
Roman
Помогите пазязя, как расшифровать строки? \u041c\u0430\u0440\u0438\u044f
Roman
http://www.online-toolz.com/tools/text-unicode-entities-convertor.php
Roman
Decode/Unescape Unicode Entities вот это
Roman
надо то же самое, только в луа
Roman
Мне надо было большой файл починить от корявости, https://r12a.github.io/apps/conversion/ отлично справился
Snusmumriken
local utf8 = require'utf8' str = '\\u041c\\u0430\\u0440\\u0438\\u044f' print(str:gsub('\\u(%x%x%x%x)', function(c) return utf8.char(tonumber(c, 16)) end) > https://github.com/starwing/luautf8
Snusmumriken
Хотя если тебе достаточно юникода (utf16 be) то можно и так: print(str:gsub('\\u(%x%x)(%x%x)', function(a, b) return string.char(tonumber(a, 16))..string.char(tonumber(b, 16)) end) Для le - меняем местами a и b. Конвертить utf16 в utf8 - довольно напряжно, хм.
Roman
Подкиньте описание опций jit.opt.start пожалуйста jit.opt.start(2) -- same as -O2 jit.opt.start("-dce") jit.opt.start("hotloop=10", "hotexit=2") это то, что на офсайте, не написали ни что такое -dce, ни hotloop, в гугле другие параметры встречаются
Roman
это тюнинг луаджита
Roman
я в этом ничего не понимаю, но вдруг его можно затюнить ещё больше, чем из коробки!
Anonymous
добрый вечер
Snusmumriken
Добреутро
Snusmumriken
Тупые вопросы можно задавать мне! Не очень тупые - тоже.
Snusmumriken
Нашёл момент, когда прямое сравнение на равенство с math.huge работает корректно. > print(1/0 == math.huge) true Его можно использовать как проверка делений на ноль.
mva
технически, 1/0 таки и получается бесконечность в какой-то степени :)
Snusmumriken
Ну, я к тому что прямое сравнение работает. Это довольно неплохо.
Snusmumriken
Хотя вот такое тоже пашет, например. > print(2^100500^100500 == math.huge) true Хм.
mva
а вот это плохо :)
Snusmumriken
Я вот сейчас развлекаюсь, вычисляя значение перехода )))
Snusmumriken
> print(2^1023.99999999999994315658114) inf > print(2^1023.999999999999943156581139) 1.7976931348622e+308
mva
знакомое число
mva
либо я тоже этим занимался ранее, либо это как-то связано с интом :)
mva
@Snusmumriken вообще, кстати, вроде, был то ли патч, то ли либа для lua с нормальной математикой
mva
ну, не считая торчей всяких
mva
:)
Snusmumriken
Ты к тому что ответ не тот?
Snusmumriken
У тебя какая версия luajit? 32/64
Dika
Ты к тому что ответ не тот?
Скорее всего, он просто более точен. Это в nodejs.
Snusmumriken
С чего ты взял что более точен? : ) Откуда инфа о точности? Ты на бумажке посчитал?
Dika
1.7976931348623157e+308
в жс есть константа Number.MAX_VALUE, она равна этому числу
Dika
Но я давно вычислял сам максимальное число в node.js, оно было немного больше этого.
Snusmumriken
Понимаешь ли в чём проблема, твой ответ некорректен по самой постановке ответа. Я ищу максимальное число в lua. Не в node.js. И мне интересны причины этого, почему именно так а не иначе. Какое мне дело до ноды?
Snusmumriken
Практически такое же, но не такое же. Видишь разницу? "Почти" = "ложь". "Может быть" = "ложь". Это "научный подход", если что.
Snusmumriken
В ноде может быть другое количество бит под мантиссу. Типа, в луа - 12 бит (52 - под целую часть).
mva
17:59:36 mniip │ % ("%1.f"):format(2^1023 * (2-2^-52)) 17:59:36 yalb │ mniip: "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" 17:59:49 mniip │ (it's a whole number)
mva
см. IEEE754
Snusmumriken
Во, вот это уже похоже
mva
Во, вот это уже похоже
это число таки равно 1.7976931348623157e+308
Dika
> print(2^1023.99999999999994315658114) inf > print(2^1023.999999999999943156581139) 1.7976931348622e+308
> print(1.7976931348622e+308); 1.7976931348622e+308 > print(1.7976931348623e+308); 1.7976931348623e+308
Snusmumriken
Ну это уже похоже на ответ. Вадим малаца. Ссылка на IEEE оказалась самым годным вариантом.
vvzvlad
у меня есть библиотека lua-mqtt, которая хочет блокировать программу своим mqtt_client:handler(). Можно ли как-то малой кровью запустить эту функцию в отдельном "потоке", так, чтобы программа продолжала крутиться дальше?
Snusmumriken
lanes, или найти вариант где оно не блокирует.
mva
ну, вообще-то, есть
mva
если posix/ffi прилепить :)
mva
из коробки, да, нету
mva
но это же Lua. Тут сама суть в том, чтобы в коробке лежал только набор "сделай сам"
mva
в Lua нет многопоточности из коробки
mva
если заюзать luaposix или FFI - хоть обфоркайся
Alexey
многопоточность вполне себе работает. проблема только в общих данных но этот вариант не единственный
Snusmumriken
Lanes открывает несколько luaState в нескольких os-тредах. Оно работает на нескольких физических процессорах. Что это, если не многопоточка?
Snusmumriken
Подробнее.
Snusmumriken
В одном процессе, но в нескольких os-тредах.
Snusmumriken
Общение через shared-memory у linda. Это типа особый тип данных, в которые можно пушить луа-данные. Строки/числа/плоские массивы.
Snusmumriken
Внутри оно передается как строки, да.
Snusmumriken
Хе, да это заебись. Учитывая что изначально многопоточность не рассчитана на передачу между потоками больших объемов данных.
Snusmumriken
Вот если бы у луа была бы изначальная многопоточка, можно было бы запрашивать труъ shared-memory objects, с локами и прочей фигнёй. А так - и так сойдет.
Snusmumriken
В lanes постарались. Но для настоящих расшаренных объектов должна быть более сложная организация памяти у самой луа.
Мерль
Каналы, правильно сделано более-менее
Мерль
Каналы, правильно сделано более-менее
Но они там блокирующие, так что надо быть осторожным
Мерль
Хотя там они с таймаутами
Snusmumriken
Ну, я еще иногда на openCL что-то считаю (биндинг, да), так что мне было бы неплохо и с истиной многопоточкой, чтобы проц был на 100% загружен в течение двух суток. Lanes это дает.
Мерль
Пока другой не примет сообщение, да
Мерль
или таймаут не стукнет
Snusmumriken
Тайм-аут в нуль и вот тебе неблокирующий шедулер.
Мерль
Ещё не вздумай передавать таблицы с циклическими связями
Snusmumriken
'плоские таблицы'.
Мерль
Там сделано через жопу ой то есть через сериализацию
Мерль
Так что передавать лучше по-меньше
Snusmumriken
Хех, openCL - это апогей многопоточности. Загрузить каждое из сотен микро-ядер твоей видяхи.
Snusmumriken
Очень удобно считать сопромат и коллизии. Скорость - неимоверная.
Snusmumriken
Хм, хз ))
Snusmumriken
Noita - Reveal Trailer: http://youtu.be/ZBLoffoZLH8
Snusmumriken
То что можно делать на openCL.
Мерль
На самом деле поверх lanes интересно было бы построить work stealing шедулер
Мерль
Пул потоков, которые жрут очереди
Мерль
Не слишком сложная задача сама по себе