Snusmumriken
Да я вроде тебе калякал, что там не то?
Слава
vitaly
Можно я?
Конечно можно - денег сколько - могу предложить 100 ВМЗ
Слава
В лс
Snusmumriken
У меня сейчас весёлая задачка с экспериментами: таск-шедулер, которому можно через командную строку/вебморду указывать пути до папок/скриптов, которые должны заворачиваться в корутины и асинхронно выполняться.
И самое забавное: у каждой задачки, по хорошему, должен быть свой энвайрнмент, со своими путями к require (директория с таской) и т.п.
Вот сейчас придумываю копировать в новый энвайрнмент содержимое _G, но со своим package.
Карочи, вот тут надо попотеть, потому что require смотрит не в package.path текущего окружения, а в некоторую "глобальную" табличку, которая находится изначально на позиции package.path. Надо переопределять require, хм.
mihacooper [МСК -2]
mihacooper [МСК -2]
Snusmumriken
Ты её как меняешь? Удаляя "дефолтные" пути или нет?
Конечно, не заполняя дефолтные пути, ибо нефиг : )
Пущай скрипт сам в своей директории держит все свои либы.
> можно же просто для каждого таска отдельно добавить путь к нему
Можно-то можно, но если таски будут хотеть разные версии библиотек - может быть немного грустно.
Плюс крутится допустим шедулер сутками. Таски появляются и исчезают, и package.path засоряется. Под конец он может быть таким длинным, что лог с ошибкой "не найден скрипт там-то и там-то" не будет влезать в дверь : )
Yuriy
mihacooper [МСК -2]
mihacooper [МСК -2]
Snusmumriken
Yuriy
Snusmumriken
Проблема - сделать так чтобы таски видели только свою директорию как сборник модулей. Ладно, продолжаем развлекаться : )
Snusmumriken
Кстати, мб можно ещё просто модифицировать searcher'ы.
mihacooper [МСК -2]
mihacooper [МСК -2]
Надо уже написать полноценны sandbox, который вижу здесь подобную проблему)
Snusmumriken
Pure-lua виртуальная машина : )
mihacooper [МСК -2]
Ну pure lua возможно не получится)
Vladislav
Mark ☢️
Mark ☢️
Co(n)stantine👨🔬
Mark ☢️
Co(n)stantine👨🔬
Попробуй
Я не хочу тратить время зря
Alexey
Alexey
И каждый поток асинхронно на базе libuv крутился
Snusmumriken
Ой, а вот libuv - это же не "многопоточка", это однопоточная фигня, кооперативная многозадачность.
Alexey
несколько потоков икаждый со своим циклом
Snusmumriken
Хе, а зачем? Отдельные инстансы одинаковых тасков?
Alexey
у меня были разные.
а асинхронность в потоке чтобы можно было управлять пока идут io операции в потоке
Alexey
У меня каждый поток обрабатывал отдельные задачи
а главный поток маршрутизировал
Alexey
задачи типа отконвертировать файл
получить статус железяки
сделать осходящий звонок
Alexey
Щас думаю надо было делать просто очередь:)
Snusmumriken
Ну вот у меня примерно такая же задача, но на корутинах.
Если libuv даст мне асинхронный io без колбеков (кастомный цикл или ручное управление "колбеками") - будет прям круто. Хотя там есть возможность кастомить, хех.
Snusmumriken
UPD: То что я прочитал - libuv не даст мне просто так (без нехилых модов) делать что-то такое:
function http_request(url, body, headers)
local hnd = async_http_request(url)
while hnd.status ~= 'done' do
coroutine.yield()
end
return hnd.response, hnd.status, hnd.headers
end
Придётся обойтись без асинхронных чтений/записей в файл и dns-резольвов, плюс переписать http(s)-клиент/сервер на асинхронно-корутиновый манер (это у меня даже практически есть).
Snusmumriken
Почему всё это лучше колбеков-промизов - можно почитать у Leafo:
http://leafo.net/posts/itchio-and-coroutines.html
Snusmumriken
Saphire
Мне тут недавно скучно стало, и решила посмотреть, почему там пустой клиент у SSH ключей, хранимых в gpg.
Мимокрокодилом написала парсер для s-expression
Snusmumriken
SEXP - мне нравится как звучит
Saphire
sexps
Snusmumriken
Это уже множественное число
Saphire
Милые массивы в которые можно положить байтики или ещё такие же массивы
Snusmumriken
А как связаны ssh в gpg и sexp'ы? : )
Saphire
Тем, что ключи приватные в них хранятся
Saphire
И поле с комментарием там же
Saphire
А вообще это всё началось с того, что мне надо было добавить ключ в authorized_keys.
Snusmumriken
Ничоси, а я сломался на парсере форматов пакетов из текста RFC в protobuf :<
Saphire
Snusmumriken
Типа вот такую фиговину (текст) трансформировать в прототип буфера для этой фиговины. Слишком сложно.
Saphire
Скобка ( - делаешь объект. цифра - читаешь до : и потом читаешь столько байт, какое у тебя десятичное число, результат ложить в объект.
Saphire
А на ), ложишь этот объект в родительский
Snusmumriken
Перебор каждого символа + автомат или регулярки?
Saphire
Saphire
Snusmumriken
Хехе, монстрячно : )
Saphire
Я так всегда делаю
Saphire
Никогда не подводило
Saphire
https://gitlab.com/Saphire/smirc/blob/master/config.c :P
Snusmumriken
Кстати, лайфхак: луёвый string.gsub принимает функцией второй аргумент, он может делать что-то помимо ретурна заменяемого значения, например заполнять структуры. Парсеры на gsub'ах - имхо ничо так затея.
На гматчах тоже
Saphire
Да знаю
Saphire
Так можно gsub(".")
Alexander
Всем привет! Нужны доклады и докладчики на Lua in Moscow'19 3-го марта (пройдет в Москве в офисе MRG на английском, будет Роберто). Пишите заявки на agladysh@lua.moscow, задавайте вопросы в личку.
Alexandr
Вечер добрый подскажите пожалуйста. Плагин emmyLua for idea. Подключил модулю socket. А потом когда делаю socket. не подсвечиваюся методы. Кто нибудь сталкивался с этим?
Maxim
slair
для любого языка нужна иде?
разве нельзя писать в блокноте?
slair
тем более всякие платные типа идеи
Alexandr
slair
и денег может не оказаться на такую иде, или ресурсов