Иван
lua
Иван
в названии
Иван
Иван
iua - IUA
Aydar
ну вот ПОЧЕМУ, ПОЧЕМУ ВЫ ВСЕ ПИШЕТЕ "Lua" КАПСЛОКОМ, А?!?!?!?!?!?!?!?!
Потому что они не знают как правильно? Они и не должны знать, если ты хочешь указать человеку на ошибку это можно сделать вежливо, что-то вроде: "Название этого языка не принято писать капсом"
mva
никто из них не пишет капсом название других языков, поэтому и это тоже причиной быть не может
🐅🤦‍♂️
ага... вы ещё JAVA пишите
Я произношу Джава как "Жява"
mva
питон всего на две буквы (в русской транскрипции) длиннее :)
mva
ну и Аду никто капсом (надеюсь) не пишет, например
Aydar
питон всего на две буквы (в русской транскрипции) длиннее :)
Именно три буквы наталкивают на мысль о том что это сокращение, моя версия такова
Aydar
ну и Аду никто капсом (надеюсь) не пишет, например
Часто ли здесь упоминают Аду чтобы сделать такие выводы?
mva
почему не на мысль что это "Луна" по-португальски?
mva
Часто ли здесь упоминают Аду чтобы сделать такие выводы?
а я не только здесь вижу написание луны капсом :)
Aydar
почему не на мысль что это "Луна" по-португальски?
Потому что сначала надо узнать где придумали язык?
mva
Потому что сначала надо узнать где придумали язык?
ну, перед тем как думать что это аббревиатура - как бы тоже неплохо бы немного узнать о языке, наверное? :)
Aydar
ну, перед тем как думать что это аббревиатура - как бы тоже неплохо бы немного узнать о языке, наверное? :)
Чтобы подумать что это не аббревиатура - надо лезть читать, это уже сложно для некоторых.
Джифорсович
Roman
лол
Tony
Снова я в отчаянии, прошу помощи Работаю с программой, которая является интерпретатором Lua со встроенной библиотекой функций. Проблема возникает в поведении одной из стандартных функций. Она возвращает список из списков типа {int, int, float} . Если вызвать эту стандартную функцию res = foo(arg), затем мою функцию bar(res), затем снова foo(arg), то она возвращает список, где вместо всех float стоит -1.QNAN. Пытался посмотреть, меняется ли _G после вызова bar() – нет, не меняется. Что вообще может привести к такому поведению? Как можно подойти к ловле ошибки?
fgntfg
А что bar делает?
fgntfg
Не портит ли?
fgntfg
bar(foo(arg)) что делает?
Tony
bar(foo(arg)) что делает?
Он делает сложные вычисления над результатом foo и возвращает несколько чисел.
Tony
Точнее, он использует результат foo как один из параметров
mva
Он делает сложные вычисления над результатом foo и возвращает несколько чисел.
без точного кода опираясь только на твой пересказ дебажить невозможно
mva
но раз эмпирически ты выяснил что без вызова bar ничего не ломается, то, можно предполагать что ломает таки bar
Oleksandr
Посмотри не модифицирует ли bar, что-то в таблицах которые как параметры возвращает ему foo.
Tony
но раз эмпирически ты выяснил что без вызова bar ничего не ломается, то, можно предполагать что ломает таки bar
Как понять, что именно он ломает? Такое ощущение, что сама функция ломается, причём частично
Tony
Наборы int, int те же, в том же порядке
mva
пополам?
mva
ещё раз, проблема либо в коде одной функции, либо в коде второй функции, либо в окружаещим их вызовы коде
mva
без кода что-то конкретное сказать невозможно
Tony
что значит "сама функция ломается"?
Возврат foo() «До»: { {2, 0, 0.1542}, {4, 0, -.2451}, {4, 4, 0.053}, {4,-4, 0.053} } Возврат foo() «после»: { {2, 0, -1.#QNAN}, {4, 0, -1.#QNAN}, {4, 4, -1.#QNAN}, {4,-4, -1.#QNAN} }
Tony
Не могу понять, что такого может сделать bar(), чтобы foo() так изменила свой возврат
Tony
И что вообще искать в bar()
Oleg
Не могу понять, что такого может сделать bar(), чтобы foo() так изменила свой возврат
если обе функции используют какую-то одну общую глобальную переменную к примеру
Oleg
воспользуйся отладчиком
Tony
если обе функции используют какую-то одну общую глобальную переменную к примеру
Глобальные переменные я просматривал через for, делал hard-копию _G до вызова и сравнивал с _G после вызова, ничего не меняется
Oleksandr
Возврат foo() «До»: { {2, 0, 0.1542}, {4, 0, -.2451}, {4, 4, 0.053}, {4,-4, 0.053} } Возврат foo() «после»: { {2, 0, -1.#QNAN}, {4, 0, -1.#QNAN}, {4, 4, -1.#QNAN}, {4,-4, -1.#QNAN} }
Судя из того, что представлено, целые числа остаются в норме а вещественные "ломаются", я, бы, обратил внимание на обработку этого вида данных.
Александр
Возврат foo() «До»: { {2, 0, 0.1542}, {4, 0, -.2451}, {4, 4, 0.053}, {4,-4, 0.053} } Возврат foo() «после»: { {2, 0, -1.#QNAN}, {4, 0, -1.#QNAN}, {4, 4, -1.#QNAN}, {4,-4, -1.#QNAN} }
Можно ещё посмотреть на то, как выглядят NaN'ы "после" в побитовом представлении
Александр
А как это можно сделать?
В чистом луа - не знаю. В си - очень просто (если актуально, могу набросать код)
Anonymous
добрый день. чтобы использовать ev необходимо его собрать в cmake?
Snusmumriken
Ну там есть инструкция по сборке через cmake
Anonymous
я просто не очень шарю за эти низкоуровневые штуки, ну и вообще луа в целом. На выходе получится скомпиленный в lua файл?
Snusmumriken
На выходе получится сишная dll/so-библиотека которую ты подключишь через require. Ты на линуксе?
Snusmumriken
Поставь luarocks и через него установи ev. Оно более-менее автоматизировано.
Vlad 👁‍🗨
Есть кастомный пикер даты и времени. Я выбираю дату, время и исходя из этих данных получаю unix stamp. Сам unix stamp я формирую через os.time: local stamp = time({ year = picker.year, month = picker.month, day = picker.day, hour = picker.hour, min = picker.min, sec = 0, }) Всё работал корректно, пока я не столкнулся со сменой часовых поясов. Проблема состоит в следующем: 31 октября идет перевод времени на 1 час назад. Системные часы тикают и в 3:59 перебрасываются на 3:00. Если в это время я использую пикер(после 3:00) то не могу получить корректное время. К примеру сейчас 3:30, я включаю пикер, выбираю 3:30 и мне выдаёт некорректный unix stamp. А некорректный он потому что в нём присутствует 1 лишний час(3600 секунд). Я так понимаю это происходит из-за того, что после 3:00 система считает время уже с новым часовым поясом и добавляет к этому времени час, хотя у меня на устройстве перевод времени ещё не произошёл. Перевод произойдёт в 3:59:60. После того как произошёл перевод всё работает.
Vlad 👁‍🗨
Пробовал убирать лишний час(вычитал разницу часовых полюсов), и время получалось корректным. Вот только отображение потом не совсем логичное. Я добавил время в 3:30 к примеру, а сейчас 3:05(5 минут назад был переход) и как будто время из будущего добавилось. Как же можно более-менее красиво обойти эту ситуацию🤔 Пробовал отслеживать переход и задавать принудительно(через разницу полюсов) но тогда все unix stamp прыгают в зависимости от часового пояса, что выглядит не очень. Например, было 3:30 а стало 2:30, вроде логично, но вчерашний unix stamp 30 октября тоже перепрыгивает на час назад, что не очень понятно для пользователя. Буду благодарен за любые мысли по этому поводу🙏
mva
Есть кастомный пикер даты и времени. Я выбираю дату, время и исходя из этих данных получаю unix stamp. Сам unix stamp я формирую через os.time: local stamp = time({ year = picker.year, month = picker.month, day = picker.day, hour = picker.hour, min = picker.min, sec = 0, }) Всё работал корректно, пока я не столкнулся со сменой часовых поясов. Проблема состоит в следующем: 31 октября идет перевод времени на 1 час назад. Системные часы тикают и в 3:59 перебрасываются на 3:00. Если в это время я использую пикер(после 3:00) то не могу получить корректное время. К примеру сейчас 3:30, я включаю пикер, выбираю 3:30 и мне выдаёт некорректный unix stamp. А некорректный он потому что в нём присутствует 1 лишний час(3600 секунд). Я так понимаю это происходит из-за того, что после 3:00 система считает время уже с новым часовым поясом и добавляет к этому времени час, хотя у меня на устройстве перевод времени ещё не произошёл. Перевод произойдёт в 3:59:60. После того как произошёл перевод всё работает.
так со сменой часовых поясов, всё же, или с DST?
Vlad 👁‍🗨
так со сменой часовых поясов, всё же, или с DST?
DST если быть точнее, извиняюсь.
mva
вообще, если ты через os.time преобразуешь не текущее время, а выбранное в пикере, то как-то странно
mva
такого быть не должно
Vlad 👁‍🗨
Проблема заключается в том, что я нахожусь на 3м часу ДО перевода времени, а система считает 3й час как ПОСЛЕ перевода времени. Устройство ещё не перевело время, а os.time считает что уже перевело.
mva
во-первых, os.time ничего не считает (в смысле не делает никаких предположеий)
mva
во-вторых, если речь идёт о выборе времени из пикера, и преобразовании именно его - перевод СИСТЕМНОГО времени должен быть иррелевантен
Vlad 👁‍🗨
Почему тогда os.time() и os.time(пикер) имеют разницу в 3600 сек, когда на устройстве >3:00 ДО перевод?🤔
mva
а почему не должны?
mva
os.time(пикер) выдаёт время которое он получил от пикера
mva
os.time(nil) выдаёт текущее время
Vlad 👁‍🗨
Если я выберу другую дату и время на устройстве, укажу это время в пикере os.time() и os.time(пикер) будут одинаковыми.
Snusmumriken
Если ты наберёшь в пикере точное текущее время до секунд - оно будет равно.
Snusmumriken
Текущее - то что говорит устройство.
Snusmumriken
До секунд, опять таки.
Vlad 👁‍🗨
До секунд, опять таки.
Секунды для пикера я буду брать прямо из os.date("*t",os.time()).sec
Anonymous
просто есть либа lua-websocket, я на ней хочу слушать сервер на сообщения новые, делаю через цикл while, используя треды, но скрипт зависает.
Timur
Есть кастомный пикер даты и времени. Я выбираю дату, время и исходя из этих данных получаю unix stamp. Сам unix stamp я формирую через os.time: local stamp = time({ year = picker.year, month = picker.month, day = picker.day, hour = picker.hour, min = picker.min, sec = 0, }) Всё работал корректно, пока я не столкнулся со сменой часовых поясов. Проблема состоит в следующем: 31 октября идет перевод времени на 1 час назад. Системные часы тикают и в 3:59 перебрасываются на 3:00. Если в это время я использую пикер(после 3:00) то не могу получить корректное время. К примеру сейчас 3:30, я включаю пикер, выбираю 3:30 и мне выдаёт некорректный unix stamp. А некорректный он потому что в нём присутствует 1 лишний час(3600 секунд). Я так понимаю это происходит из-за того, что после 3:00 система считает время уже с новым часовым поясом и добавляет к этому времени час, хотя у меня на устройстве перевод времени ещё не произошёл. Перевод произойдёт в 3:59:60. После того как произошёл перевод всё работает.
тут одинаковые hour/min но разные зоны с учетом dst. У os.time есть еще атрибут isdst