Pavel
Snusmumriken
Есть ffi-биндинги к clipper, либам матриц и ещё кой чего вот тут: https://luapower.com/
Раздел 2D Geometry.
Snusmumriken
Клиппер я в своё время довольно активно использовал, это булеановы операции над многоугольниками типа обрезки/объединения.
Snusmumriken
Надо попробовать накатать на коленке биндинг к clipper'у. Можешь и сам попробовать, это просто.
Snusmumriken
Вот эта штука: http://www.angusj.com/delphi/clipper.php
Хорошо если её будет достаточно.
Snusmumriken
Ну ты тут меньше суток, завтра будут работать ссылки
Snusmumriken
А как их читать? Там есть прерывания?
Snusmumriken
Вот я ровно про то, что залоченное приложение не прочитает сообщения, например, пока есть идёт условный синхронный хттп-запрос. Я потому спросил про прерывание.
Snusmumriken
Чтобы остановить дочерний по таймеру или событию, которые могут наступить в любой момент. А в дочернем считай что исполняется пользовательский код (других разрабов, в том числе не шибко хорошо написанный, с таймаутами того же хттп в миллиард лет).
Лепикоршев
А тред как убить в момент, когда понял, что тред неработоспособен?
Snusmumriken
Вот это можно было бы интераптами запилить, но интераптов в пользовательском пространстве, помнится, под вендой нема. Вот в досе они были!
Snusmumriken
Вот в iponweb, помнится, делали свою реализацию луажыта с фишками для корутин, чтобы можно было ограничивать время их исполнения. Насколько я понимаю, в качестве примера можно предложить такое, что в корутине сидит пользовательский код (хоть бесконечный цикл или io-операции), а его надо прервать через пять секунд работы.
Snusmumriken
В целом, os.execute обычно возвращает одно значение (0 или 1). Ковырни io.popen, оно надёжнее.
Александр
popen нужен для перехвата stdout
Лепикоршев
local script = [[...]]
local pipe = io.popen("...", "w") pipe:write(script) pipe:close()
Лепикоршев
os.execute(... ) вообще при этом не используете.
Лепикоршев
В io.popen - утилита, которую хотите запустить.
В script - тексты и аргументы.
Лепикоршев
Вместо "..."
Лепикоршев
Если вам что-то возвращается, сделайте перед pipe:close() - pipe:read()
Лепикоршев
Если не поддерживается вывод в тот же pipe, связывает пару - один на запись, второй на чтение.
ㅤ
Напиши скрипт, который берёт код возврата и возвращает его в stdout. :-)
Лепикоршев
ㅤ
https://stackoverflow.com/questions/7607384/getting-return-status-and-program-output
Тут говорят, close должен что-то возвращать.
ㅤ
io.popen("bash -c 'your_command; echo $?'", "r")
Лепикоршев
"return x%256"?
mva
exit-code не может быть равен 256
mva
ну, точнее, раньше не мог быть
Snusmumriken
А тут он будет от 0 до 255. Плюс под вендой, помнится, бывают страшные коды выхода типа 5239560
mva
сейчас все дружненько отдают int, и линупсоядро спокойно воспринимает большие числа там
mva
а, не, не совсем так
mva
это меня zsh запутал
mva
mva ~ (return 1234567); echo $?
135
mva
просто у меня в RPS показывается exit-код и оно там спокойно воспринимает большие числа без переполнения :)
Igor
Вопрос такой возник
Нету ли способа полную юзердату отправить в стек по поинтеру? То есть у меня хранится в некоей переменной указатель на юзердату на стороне Си, так вот, нужно чтобы по этому указателю можно было отправить юзердату в стек. Просто как-то ну очень лень для этого дела делать таблицу в регистре луёвом с сопоставлениями.
Igor
В документации порылся и вроде как ничего такого не нашёл. Таргет lua 5.3.5, если что.
Igor
Хм, спасибо, попробую, но это похоже на какой-то жуткий хак
Snusmumriken
fgntfg
S3RL - Topic: Fan Service (DJ Edit)
Snusmumriken
Жуть какая ))
Snusmumriken
Кусь оказался фальшивомонетчиком.
Тоня
#вакансия #офис #backend #cпб #tarantool #spb #Lua #офис #python #nodejs #работа #job
Backend developer (Python / Lua) – Ready for Sky 🚀
📍 Работа в офисе полный день с гибким графиком (приход до 12:00), Спб, м. Нарвская
Мы ищем в команду Backend developer, который будет разрабатывать сервис удалённого управления техникой на Lua / Tarantool;
🔧🎺 Stack: Lua / Tarantool; MQTT; Postgres; GraphQL.
📡 Hard Skills:
- уверенное владение одним из языков: Python / JavaScript / Lua;
- понимание и опыт реализации non blocking IO / CPU bound services.
Плюсом будет:
- опыт использования MQTT, Tarantool;
- опыт разработки навыков для Голосового помощника.
💊 Предлагаем:
Работу в профессиональной команде;
Полностью белая ЗП от 150 до 250 тыс. руб. на руки
После Исп. срока: ДМС/компенс.спорта, английский, китайский в офисе;
Перекусы, молочко и овощи сразу. 🍰🍕
📬 Пиши мне, Тоня: @tonika1206
Anatoliy
Мдяя прямо не работа а сказка и выспаться можно, главное до обеда прийти, и напоят и накормят и спорт оплатят и акуенную зарплату отвалят 😂😂😂
Tom
Tom
А туалетная бумага нынче в дефиците
Snusmumriken
Зачем это тут?
И вообще, кто все эти люди? Не боты ли часом?
Snusmumriken
Доброе Утро, @typicallyu, Шляпник, привет! Расскажите немного о себе.
Шляпник
я не бот, если что )
Snusmumriken
Ну вот и хорошо : )
Но ДобреУтро и ЯМолодой — довольно подозрительные.
Шляпник
вообще сам я nodejs бэкэндер, но вот решил посмотреть чем живут lua разрабы
Шляпник
если не против )
Snusmumriken
А то этот чат входит в продаваемые базы спамеров "бизнес-чатов в телеге", поэтому тут регулярно вылезают то торговцы биткоенами, то фальшивомонетчики то ещё кто-то.
Да без проблем : )
Я, и значительная часть работающих луа-программистов сами луа-бекендеры, и ещё куча игрунов-моддеров (на луа полно движков-фреймворков) и всяких таких.
Шляпник
этот чат входит в продаваемые базы спамеров "бизнес-чатов в телеге", поэтому тут регулярно вылезают то торговцы биткоенами, то фальшивомонетчики то ещё кто-то
так прикрутите какого-нить бота к админам, который проверяет всех новых вступивших в чат
Snusmumriken
Такие есть, но не все фильтруются. Некоторые ботовладельцы логинят ботов самостоятельно. Есть затея написать бота который даёт простенький пример кода на луа и даёт десять минут на вписывание того что выведется (самый простой способ решить — загуглить online-интерпретатор и вбить результат его работы, но ботовладельцам это сложно).
fgntfg
Бедные новички. У них уже есть своя проблема, а ты им ещё одну
Pavel
Taras 🦀
Snusmumriken
Вольфрам, кстати, не является интерпретатором всех языков, так что матан он решит а код — нет : )
Ну и новеньким можно подсказать загуглить онлайн-интерпретатор, их довольно много включая официальный.
Anonymous
Snusmumriken
Совсем тупые вопросы можно из серии:
Что выведет следующий код:
print( 10 + 10 .. "20" )
Такие вопросы не должны принести проблем новичкам.
Snusmumriken
Anonymous
Я недавно поставил рут права на свой телефон, прошел через окирипичевание телефона, но в итоге всё работает идеально + зарядка стала меньше тратиться.
Просто делюсь своей радостью.
Snusmumriken
Еее рокЪ!
Snusmumriken
А у меня проблемсы: надо писать биндинг raylib, а лучший друг загрузил административной работой в виде руления игровым кланом. И это на самом деле ужасно.
Anonymous
Pavel
Snusmumriken
Необходимость затачиваться под конкретный чат.
Snusmumriken
Один чат никому не нужен, особенно когда есть база с сотней тысяч категоризированных чатов, которые нужно пакетно обработать.
Snusmumriken
Есть популярные антиспам-боты на которых легко заточиться по отдельности, но точить под уникальных ботов никто не будет :)
fgntfg
Заставить их писать бинды
Snusmumriken
Слишком необразованные для этого ))
Pavel
ну отправь их толпой чо нить фармить, а сам в это время пиши бинды
🐅🤦♂️
Пробую изучать сопрограммы и столкнулся с непониманием coroutine.status().
В документации написано, что может возвращать "suspended", "running", "normal", "dead". Но как я не пробовал проверять статус корутины, то никаких значений кроме "suspended" и "dead" мне получить не удалось. "suspended" - до запуска, "dead" - если выполнение завершилось. Можете привести примеры, когда status() возвращает "running" или "normal"?
Snusmumriken
Потому что её можно вызывать внутри корутины, для проверки самой себя, например.
🐅🤦♂️
А, я по невнимательности использовал переменную корутины из замыкания, исправил. Передал параметром и нормально получил "running" статус.
🐅🤦♂️
local yield = coroutine.yield
local status = coroutine.status
local resume = coroutine.resume
local c2 = coroutine.create(function(c)
print("status from body", status(c))
yield()
print("status from body", status(c))
yield()
print("Oops")
end)
print(status(c2))
resume(c2, c2)
print(status(c2))
resume(c2)
print(status(c2))
resume(c2)
print(status(c2))
Андрій
Всем привет. В общем, загорелся написать простенький гм для гмода, и почти сразу же столкнулся с ошибкой "attempt to index global 'ConCommand' (a nil value)". Может кто сталкивался или знает, как решить?
Если что, я пытался добавить команду в консоль гмода ConCommand.Add("сама команда", функция)
Андрій
Не совсем понял если честно)