Saphire
...ох бл
Artem
s:gsub('"0x(%x*)"', "0x%1"):lower()
вот так как-то лаконичнее
Saphire
Не
Saphire
Artem
да
Artem
%x: represents all hexadecimal digits.
Saphire
Мило
Saphire
...а разве жисон позволяет цифры хранить прямо в хекс формате?
Saphire
Вроде нет
Lucky
mva
только не символов, а байтов
Snusmumriken
http://uguu.org/sources.html
Не луа, правда, но тем не менее.
Lucky
Kirill
Lucky
https://4pda.ru/forum/index.php?showtopic=942448
Lucky
новый лаунчер движка Instead для зелёного робота
Mikhail
Всем привет. Есть внятные ТЕКСТОВЫЕ ресурсы по новому Roblox Studio (Lua) ?
https://www.youtube.com/watch?v=bLYBJwxNZtM
Mikhail
спасибо
не.... мне чужие текстовые бы очень помогли. Сэкономили время, я б мог бы их советовать.
у меня это ж хобби, а не работа.
Artem
может кто сталкивался или у кого-нить есть идеи
вводные данные:
есть транзакции, каждая транзакция имеет свой уникальный hash (256 бит) и идентификатор (64 бита)
под одним идентификатором могут проходить минимум 2 транзакции
задача:
построить индекс для максимально быстрого поиска транзакций по идентифиактору
транзакций в общей сложности может быть и миллиард (что составляет уже порядка 37 Гб информации)
Snusmumriken
Хмм, вроде для решения такого есть базы данных : )
Или тебе такое в текстовый файл надо записывать?
Artem
да вот БД не хотелось бы подключать на этом моменте
Artem
боюсь в ней это из 37 Гб превратится в 370 Гб
Snusmumriken
да вот БД не хотелось бы подключать на этом моменте
Хех, изи: берёшь какую-нибудь хеш-функцию на миллион возможных значений.
На каждое значение — создаёшь отдельный файлик.
При добавлении новой записи — хешируешь ID и записываешь в соответствующий файлик.
При поиске — перебираешь ~1000 значений из файлика, это быстро ))
Дополнительная плюшка: файлы человекочитаемы, открываются любым редактором ибо небольшого размера.
Минусы: смотреть лог транзакций по временнОму промежутку сложнее.
Snusmumriken
СЕРВЕРНАЯ ГЕЙМДЕВ ВАКАНСИЯ (отмодерированная)
Вакансия ведущего геймдев бэкенд-разработчика игровой механики (Lua) "Gaming Sense" (бывш MRG, спонсируемся mail.ru).
Задачи: игровая логика на языке Lua, и админские интерфейсы на PHP. Игровые клиенты на Unity, поэтому желательно отдалённо представлять что это такое.
Пишем логику на кастомном C++ сервере который вывешивает в луа сеть, бд и кой чего по мелочи, архитектурим логику и апи, мутим базы, пишем доки.
Требования: хорошо знать MySQL, уметь писать на PHP и Lua (или желание освоить Lua).
Условия: 5/2 10-18, белая зп 150-200к, офис рядом с м.Дмитровская, помощь с переездом из других городов, карьера-развитие.
Для связи пишите @ooprizrakoo или naumenko@corp.mail.ru
Artem
Saphire
...я уж готова была пинговать @Snusmumriken
Saphire
А это он и был
Saphire
Конечно интересно было бы самой потыкать.
Snusmumriken
Saphire
Но 8часовой рабочий день...
Saphire
Гм.
Snusmumriken
Но 8часовой рабочий день...
Тут объём работы приличный, так что не удивительно.
А нанимать двоих на пол ставки — страшное дело, разработают комитетом, и не будут полностью включаться в процесс за счёт продолжительных пауз между работой.
Saphire
Хотя я уже насиживаюсь на C# порт одной веселой серверной штуки...
Но с другой стороны "помощь с переездом" звучит заманчиво. Но таки гвоздь последний состоит в "мейл.ру". Ибо нет сильно гарантий насчёт того, что через месяц это всё не исчезнет.
Artem
а зачем им админские интерфейсы на пыхе? можно же было openresty тот же использовать и нормально написать api-centric
Saphire
Наоборот, он её вывесил/перепостил
Pavel
Я как раз с их HR как-то беседовал. (недавно) как раз мне эту вакансию предлагали
по деньгам обещали 150 - 200К
Если что
Pavel
Pavel
У самого когда-то бек на луа, фронт на пыхе.
и нормально. оно другого не аффектит. деплоится раздельно.
Либ под пыху больше.
Snusmumriken
Pavel
точно_)
Pavel
Насколько знаю - вышка пофиг_)
Snusmumriken
Архитектурам в вузах не учат ((
Разве что иногда — организовывать БД, но не объясняют почему так а не иначе, а ля "есть только один способ это организовать, мой и неправильный".
Pavel
черт_) сам с собой говорю
Pavel
Saphire
Чиркануть что-ли? Сыкуль и так приходится ковырять...
Snusmumriken
Saphire
Pavel
Saphire
Snusmumriken
Кстати, если кто-то активно юзает nginx/openresty — накатал скрипт, который автоматически перезагружает nginx.conf и попутно читает логи.
http://37.204.3.109:8080/drive/soft/reloader.zip
Тут экзешник — мод интерпретатора, который запускает main.lua в той же директории. Сама фигня — под венду, но легко модифицируется под линексы.
Maxim
Maxim
у нас OpenResty и Nginx используются в полный рост и все конфигурации сделаны таким образом что нет необходимости их перезагружать
Snusmumriken
Maxim
Нет, "длл" и "мир виндовс" ни на что не влияют. В мире линукса точно так же в процессе разработки надо регулярно перезагружать конфиг на изменениях, и эту задачу данный скрипт, с небольшой модификацией (sleep), так же может исполнять.
Да, при этом очищается кеш. Да, это не для прода.
так точно, в dev окружении мы обязаны иметь возможность рестартануть Nginx или OpenResty для применения изменений, без этого никуда, это же разработка ) Но вот sleep - реально удивил, ни разу не использовал
Snusmumriken
Слип можно из сокета выдрать, там то же самое но на сишной стороне.
Ну типа:
local sleep = require'socket'.sleep
Snusmumriken
Egor
€l
Maxim
€l
Как вам мануал? Получилось уделить время на чтение? )
Snusmumriken
эвонокак. не знал. а пытался использовать симафор с корутинами в место sleep?
Дык ты мутил в кастомном приложении. У тебя семафоры работали слипом, у них внутри вызывался сишный слип или аналог, плюс при обработке пулов потоков используются слипы. Карочи, это всё "не чистая луа".
А я в своё время на чистых луях делал что-то такое:
function sleep(sec)
local t = os.time() + sec
while os.time() < t do end
end
И оно жрало целое ядро проца, потому что ОС не знает что приложению в это время можно не выделять процессорное время : )
А надо-то просто вызывать системную функцию, которая запаузит исполнение.
Maxim
Maxim
x = coroutine.yield(step)
Maxim
или я вообще не о том и мимо?
Snusmumriken
yield и ожидание — ожидание тут — это sleep?
Или типа
function foo()
bla-bla
coroutine.yield()
bla-bla-bla
return 'ok'
end
local co = coroutine.new(foo)
local res
while res ~= 'ok' do
res = coroutine.resume(co)
-- sleep?
end
Если в "ожидании" есть кастомный слип то всё ок.
Если это просто цикл — нет, оно работает "на пределе возможностей", даже если об этом не просили.
Maxim
Snusmumriken
Особенно весело, например, с http-запросами: проц бешено работает, каждые пол наносекунды проверяет, пришло ли чего. Вместо того чтобы добавить паузу в одну сотую секунды, и проверять в миллиард раз реже но с почти тем же результатом.
Snusmumriken
Maxim
Saphire
Snusmumriken
в этой проверке есть параметр когда можно делать проверку, но нет команды sleep
Вот. Поэтому задача — получить слип, который будет именно говорить операционной системе что "приложение пора усыплять" и процу пора простаивать.
Я у себя на работе успел поучаствовать в цирке, когда чей-то набор луёвых скрипто-сервисов без слипа на куче серверов перегрузил электросеть ))
Выбило пробки, всё упало нафиг.
Dika
Saphire
Но у нас же не прода.