Egor
Snusmumriken
Ух, только сейчас обнаружил что всякие dub init можно писать прям туда же. Читы. Командная строка встроенная в проводник. Хотя по сути, проводник и есть командная строка с визуалом. И при открытии .doc-файла в проводнике, на самом деле вызывается команда path/to/ms_doc.exe path/to/file.doc.
Anatoliy
Igor
Igor
stdin - это "файл"
Igor
Бывают ещё stderr - в него приложение записывает свой консольный вывод любой, в принципе не обязательно ошибки, stdout - это вывод, который может обрабатываться другими командами, которым будет передан вывод запущенной команды, а stdin - пользовательский ввод, ну или от другой команды
Igor
Например, когда ты выполнишь cat image.png | base64 -w0, програма cat в stdout передаст содержимое файла image.png, а система отправит его в stdin программы base64, которая в свою очередь в свой stdout запишет закодированное в base64 содержимое файла
Lucky
mva
https://www.sun.ac.za/english/Lists/news/DispForm.aspx?ID=6628
Вот так, общаешься с человеком, обсуждаете идеи по Lua и взаимные наработки кода, а потом он умирает.
И ты только после этого узнаёшь, что ему 73, а не 30-40, как складывалось впечатление по общению
Snusmumriken
fgntfg
Тоня
#backend #tarantool #spb #cпб #Lua #офис #python #nodejs #работа #job
Senior backend developer (IoT, голосовой помощник) – Ready for Sky 🚀
https://readyforsky.com/ru/career/
📍 Работа в офисе полный день с гибким графиком (приход до 12:00), Спб, м. Нарвская
Мы ищем в команду Senior Backend developer (Tarantool)
💡 для разработки облачного сервиса для интеграции с голосовыми помощниками и вендорами IoT устройств;
💡 и для разработки навыков для голосовых ассистентов для управления умной техникой (IoT);
💡 + участие в улучшении текущей архитектуры серверной инфраструктуры.
🔧🎺 Stack: Tarantool/Lua; MQTT; Postgres; GraphQL.
📡 Hard Skills: JS (backend) + Node.js ИЛИ Python 3.5+ asyncio
💊 Предлагаем:
Работу в профессиональной команде (Server side dept)
Полностью белая ЗП от 200 до 250 тыс. руб. на руки
После Исп.срока: ДМС/компенс.спорта, английский, китайский в офисе, перекусы, молочко и овощи. 🍰🍕
📬 Пиши мне, Тоня: @tonika1206
Snusmumriken
Чаво, таки не обращались по предыдущему запросу?
Тоня
Snusmumriken
Ну тут питерцев не очень много, думаю, и народ в хоббирует.
Snusmumriken
В чатах эффективнее искать удалёнщиков.
Lucky
С Кубы релоцироваться в этот ваш зябкий СПб? Нее.
RE
а как в os.execute() передать ""?
у меня вот такая колбаса есть:
os.execute( "str=$(tail -n 1 /data/file.txt); sed "2 a$str" /data/file2.txt > /data/file_tmp.txt" )
в str я помещаю вывод команды tail и потом str использую как параметр для sed
чтобы bash "развернул" переменную в значение - нужно ее в кавычки поместить.
но os.execute ругается -
/usr/bin/lua: ./send2:248: ')' expected near '2'
Igor
\"...\"
Snusmumriken
'kolbasa'/[[kolbasa]].
RE
спасибо!
vvzvlad
А можно как-нибудь изящнее проверять наличие значения в глубине таблиц?
Snusmumriken
1.
local function getTableValue(tbl, ...)
local t = tbl
for i = 1, select("#", ...) do
if type(t) ~= 'table' then
return nil, (i - 1) .. " element is not table"
end
t = tbl[select(i, ...)]
end
return t
end
local v = getTableValue(data, 'results', 1, 'series', 1, 'values', 1, 2)
2.
local v = ((((data or {}).results or {})[1] or {}).series or {})[1] or {}...
Snusmumriken
Первый способ норм для длинных цепочек, второй — для коротких.
vvzvlad
а еще можно вынести в функцию return data.results[1].series[1].values[1][2] и вызвать ее через pcall
Snusmumriken
А ещё можно на каждую таблицу по пути вешать метатаблицу с дефолтным значением.
Snusmumriken
Но я предпочитаю способы типа первого, потому что мне не нравится пользоваться исключениями, читы какие-то. А так — тут даже рекурсии нет, развёрнута рекурсия.
vvzvlad
local function getTableValue(tbl, ...)
local t = tbl
for i = 1, select("#", ...) do
if type(t) ~= 'table' then
return false, i .. " element is not table"
end
t = tbl[select(i, ...)]
end
return true, t
end
local table_data = {
results = {
{
series = {
{
columns = {"time", "value"},
name = "/boreas/0024138053/temperature",
values = {
{"2020-01-21T12:00:00+03:00", 25.01},
{"2020-01-21T13:00:00+03:00", 25.07}
}
}
},
statement_id = 0
}
}
}
function event_handler()
local get_value_status, value = getTableValue(table_data, 'results', 1, 'series', 1, 'values', 1, 2)
print(get_value_status, value) --false, 3 element is not table
end
vvzvlad
как-то не работает на такой таблице: 3 element is not table
Snusmumriken
Ой, очепятался : )
t = t[select(i, ...)]
И тут стоит пихнуть (i - 1), для точности позиции.
local function getTableValue(tbl, ...)
local t = tbl
for i = 1, select("#", ...) do
if type(t) ~= 'table' then
return false, (i - 1) .. " element is not table"
end
t = t[select(i, ...)]
end
return true, t
end
vvzvlad
а зачем тогда local t = tbl?
Snusmumriken
Шорткат. Можно и без него.
vvzvlad
а
vvzvlad
ды, так работает
Snusmumriken
Чот вокруг развелось нотпадоненавистников, придётся делать стикерпак.
Lucky
Чойта они? Норм софтина.
Anonymous
Атом?
Igor
Ага
Anonymous
Вскод же щас на волне
Anonymous
Хайп
Igor
Мне он не понравился
Igor
Неудобен для меня
Igor
А под себя настроить как-то не очень то и вышло
Igor
Атом в этом плане поддатливее чтоли
Roma
А дебаггер с брейкпоинтами кто-нибудь смог поднять на маке для atom или vscode? пробовал разные расширения, ни одно не работало
Roma
ну как, одно нашел, более менее работает на vscode, но может у кого был опыт еще
Igor
Igor
Если модули на Си пишу под Lua, то тут уже через VS дебажу, благо с ssd не так уж и долго запускается, но код только в атоме пишу
Igor
Мне студия не очень удобна, как редактор кода, только как дебаггер или сборщик проектов чьих-то использую
Roma
Т.е. для атома рабочий полноценный дебаггер с брейкпоинтами, выводом стека вызовов внутри атома ты не нашел и юзаешь для этого студию?
Igor
Типа того
Igor
Да и вряд ли есть C/C++ дебаггер для атома, по краней мере для Windows
Igor
Вот какой-нибудь gdb я думаю вполне реально прикрутить
Igor
Так оно и есть https://atom.io/packages/dbg-gdb
Igor
Нашёл ещё вот для луёв https://atom.io/packages/dbg-lua. Фронтенд для mobdebug, но lua мне всё равно через консоль проще дебажить, так что бесполезная штука. Для меня, по крайней мере.
RE
камрады, а есть ли какой-то способ выходить из цикла while через заданное кол-во секунд?
вот у меня в цикле читается serial port и считанное значение сравнивается с стоп-кодом.
но этот стоп-код может и не приехать - такова селяви..
так вот - как можно сказать - делай цикл, но через 30 сек заверши его по любому?
RE
я пока выход нашел - иcпользую тулу timeout - она крешит процесс по заданному таймауту..
но креш меня не устраивает походу..
надо выполнять инструкции после цикла еще
mva
сохранить время запуска цикла перед его запуском и внутри цикла проверять текущее, например
RE
брать системное время и парсить секунды..
mva
зачем парсить
mva
os.time(*t) тебе на что?
RE
эм... там можно просто start - current делать?
RE
я хз что это) но погуглю
спасибо
mva
а, не time, а date
mva
я перепутал
mva
RE
22:55:00
а sec == 4
mva
я же не одновременно эти команды вводил :)
RE
aaa это cli
RE
и как обратиться к sec в итоге, чтобы сделать сравнение
RE
типа if sec >= 30
mva
вообще...
mva
лучше забей таки на os.date для этого дела
mva
так-то, да, можно было бы start=os.date"*t"[sec] и current так же
mva
вот только при переключении минут ты бы получал говно
mva
поэтому бери os.time()
RE
а точно..
mva
оно в виде unix timestamp