Snusmumriken
Ну, у меня у самого древние данные, например от разраба MyReflection, у которого были большие проблемы с рекламой своей игрушки и с набором бабосов с кикстартера.
🐅🤦♂️
У меня есть скрипт, который работает как сервер однопоточный - слушает порт, присоединяется, обменивается данными. Я хочу переписать его с корутинами, что-бы он передавал файл на телефон одним потоком, принимал лог с телефона другим потоком. Запускать
./server.lua
, а потом отсылать команды типа ./server.lua push_file path2zipfile Как мне наладить межпроццессное взаимодействие те проверять, что запущен экземпляр и отправлять ему команду, типа там в файл писать какой временный?
mva
ты путаешь корутины и мультитрединг
mva
наверное, открою тебе секрет, но сами по себе корутины многопоточности не добавляют
🐅🤦♂️
На телефоне - мультитрединг, несколько потоков слушают порты сокетом. А на малинке их обрабатывать через корутины, по очереди.
Serezha
В общем, полистывая стаковерфлоу и ожидая что бабосики будут капать — далеко не укатишься, даже в зарубежном стартапе.
Вообще речь шла о том что в офисе ты можешь спросить совета у коллег, а на удаленке у тебя только стек. И вот как Снус все извратил :) Я понимаю что все здесь молодые и модные а во время оно бывало кодишь и без коллег и без стека - есть мануал на процессор, есть таблички регистров и флагов - и сидишь ты такой и бьешься над какой нибудь загогулиной днями и неделями. Да в целом весь научный мир так и работает. Когда решаешь сложные задачи никто не ждет что ты будешь тикеты каждые два часа закрывать
Serezha
Лично меня стек делает продуктивнее в разы. Это рабочий инструмент, очень мощный, позволяет быстро находить ответы и готовые решения
Totiks
Здравствуйте, в lua я начинающий, есть задача , считать выбраный адрес из таблицы, и воспроизвести его в mpv , написал вот такой код :
n={'http://jazz128.streamr.ru/','http://radio.adds.su:8020/radioj','http://195.78.93.18:8000/jazz','http://91.190.117.131:8000/live'}
print("1.>> jazz_89.1")
stat=n[1]
print(stat)
os.execute("mpv --volume 45 stat ")
io.read()
но код явно неправильный, поскажите пожалуйста как написать правильно, в чем ошибка и закавыка? Заранее спасибо!
Snusmumriken
Ух ты какая приколюшка.
Snusmumriken
А я как раз сравнительно недавно что-то похожее писал. Только воспроизведение в игровом фреймворке love2d.
Snusmumriken
I wrote online audio stream player.
Snusmumriken
Здравствуйте, в lua я начинающий, есть задача , считать выбраный адрес из таблицы, и воспроизвести его в mpv , написал вот такой код :
n={'http://jazz128.streamr.ru/','http://radio.adds.su:8020/radioj','http://195.78.93.18:8000/jazz','http://91.190.117.131:8000/live'}
print("1.>> jazz_89.1")
stat=n[1]
print(stat)
os.execute("mpv --volume 45 stat ")
io.read()
но код явно неправильный, поскажите пожалуйста как написать правильно, в чем ошибка и закавыка? Заранее спасибо!
И тут вопрос не столько в луа или в чём-то ещё, сколько в понимании, как работает командная строка и её инструменты, потому что лично у тебя — все манипуляции через неё, и луа просто запускает команды а не скачивает/декодирует.
mva
Здравствуйте, в lua я начинающий, есть задача , считать выбраный адрес из таблицы, и воспроизвести его в mpv , написал вот такой код :
n={'http://jazz128.streamr.ru/','http://radio.adds.su:8020/radioj','http://195.78.93.18:8000/jazz','http://91.190.117.131:8000/live'}
print("1.>> jazz_89.1")
stat=n[1]
print(stat)
os.execute("mpv --volume 45 stat ")
io.read()
но код явно неправильный, поскажите пожалуйста как написать правильно, в чем ошибка и закавыка? Заранее спасибо!
>os.execute("mpv --volume 45 stat ")
вот тут вот ошибка. В том, что ты слово "stat" передаёшь текстом, а не значение переменной
Snusmumriken
И ещё, кажется есть ошибка в том, что оно не качает файл. Скачка файлов под линуксом/виндовс-10 делается в командной строке с помощью курла. Но курл не отпустит управление пока не скачает файл полностью.
mva
(а ещё не очень понятно зачем запускать lua-скрипт и из него mpv, если mpv сам линкуется с liblua(/jit)
mva
Snusmumriken
А, mpv типа сам подрубится?
mva
он хочет mpv скормить ссылку, но вместо это скармливает "stat"
Snusmumriken
Оки
mva
Totiks
а как передать stat как переменой
Snusmumriken
Здравствуйте, в lua я начинающий, есть задача , считать выбраный адрес из таблицы, и воспроизвести его в mpv , написал вот такой код :
n={'http://jazz128.streamr.ru/','http://radio.adds.su:8020/radioj','http://195.78.93.18:8000/jazz','http://91.190.117.131:8000/live'}
print("1.>> jazz_89.1")
stat=n[1]
print(stat)
os.execute("mpv --volume 45 stat ")
io.read()
но код явно неправильный, поскажите пожалуйста как написать правильно, в чем ошибка и закавыка? Заранее спасибо!
Ну в общем, тогда оно должно выглядеть примерно так:
local list = {
'http://jazz128.streamr.ru/',
'http://radio.adds.su:8020/radioj',
'http://195.78.93.18:8000/jazz',
'http://91.190.117.131:8000/live'
}
for i, v in ipairs(list) do
-- чтобы по красоте
local str = ('%10d %s'):format(i, v)
print( str )
end
local i, station
while true do
print("Select station")
i = io.read('*number')
station = list[i]
if station then break end
print("No station on " .. i .. " position")
end
print('Selected station: ' .. i .. ' ' .. station)
os.execute("mpv --volume 45 " .. station)
io.read()
mva
В твоём конкретном случае - поможет и конкатенирование ("mpv blablabla "..stat)
mva
но(!)
mva
чтобы ты лучше понимал суть происходящего - советую сделать так:
mva
("mpv blablbalba %s"):format(stat)
Snusmumriken
Блин, а у меня в WLS не работает mpv (((
Мб обновиться надо.
mva
mva
где он тебе интерфейс будет рендерить? :)
Totiks
аж всплакнул. спасибо вам!
Snusmumriken
mva
но можешь попробовать скормить ему там -vo null ;)
Totiks
mpv вроде консольный ,
Totiks
?
mva
mva
mva
я даже и не ожидал, что оно на венде заработает
mva
надо полуркать другие аудиовыводы :)
mva
// но ты уже решил забить :)
Snusmumriken
Ставлю pulseaudio ))
Totiks
ребятки спасибо уже второй раз помогаете
Egor
Я же правлиьно понимаю все таки, что если хочу передавать именнованные аргументы, то только через таблицы?
mva
mva
ну, или другой вариант - явный порядок и предефайн имён в объявлении функции
Egor
Egor
как печально получается.... fun a(var1, {}, var2)
Egor
Snusmumriken
Ух как страшно. Ты зачем обычные строковые ключи загоняешь в ['bla']? Там же нет спецсимволов, можно просто bla.
Snusmumriken
Всё ровно так, как написано на упаковке
Snusmumriken
У луёв даже сахарок есть, что функцию с таблицей можно вызывать без круглых скобок, как раз для именованных аргументов. Но злоупотреблять этим не советую, потому что таблицы создаются в оперативной памяти а не в кеше, и разметка стоит довольно дорого (а потом ещё мусор собрать), если тебе это важно.
Egor
Snusmumriken
Ну ругнулся потому что ты дефолты внутри функции не прописал. Да, если какая-то переменная булеанова, и дефолт — true — проверяй тип.
Snusmumriken
Ну типа
local b = type(t.bool) == 'boolean' and b or true
Обычный or решит, что если передали false, то это фигня полная, и принудительно укажет true.
Snusmumriken
Snusmumriken
Пришло время мемов про булы.
fgntfg
Какая-то хрень
Snusmumriken
Окей.
vector<bool> это явно фигня для замены флагов. Ну, типа передача куда-то набора флагов для чего-нибудь, мол "если первый флаг выставлен в true — то делаем какую-то фигню". Нормальные люди передают char, где выставляет флаги битовыми сдвигами типа char |= 1 << 1; для выставления второго бита в 1, или v = (char >> 1) & 1; для чтения. А вектор (динамический массив) — это офигенный оверхед, проще уж тогда структурой фигачить.
unordered_set<bool> — это вообще хтоническая фигня. Если у вектора мы могли определить, что значит тот или иной бул по соглашению в программе и порядковому номеру, то тут НЕ МОЖЕМ, потому что он НЕ УПОРЯДОЧЕН )))
mva
ну, эт
mva
vector<bool> не только для флагов, но и если хочется побайтоважествовать
Snusmumriken
Но не умеешь в битовые сдвиги. да?
Ах да, каждый элемент vector<bool> это всё ещё short, то есть для хранения одного бита расходуется целый байт. Если компилятор это не оптимизирует, он гипотетически может.
Snusmumriken
Вот в луях — хорошо, тут типы принципиально довольно жирные, но ты не паришься на эту тему просто потому что с этим ничего нельзя сделать.
fgntfg
Сделать можно
Snusmumriken
Грабануть ffi или сишные либы, да. Но в базовой поставке — нет.
fgntfg
Нужно идти глубже
Ivan
Snusmumriken
Ivan
Max
Igor
У mpv интерфейс луями делается
Igor
С помощью ASS
Igor
Можно свой интерфейс написать