Aqendo
Aqendo
Попробуй так
Snusmumriken
Я делал ровно это. И у тебя подсветки не видно.
Aqendo
А у меня видна моя, но не видна твоя
Snusmumriken
Aqendo
Видимо клиент старый
Aqendo
Snusmumriken
За что? Ты всё равно его сможешь использовать только с https://github.com/luapower/libcurl
Aqendo
Ну и ладно
Aqendo
Мне же не на работе бот нужен
Snusmumriken
В целом можно и с lcurl, но под него надо чутка адаптировать. У себя на работке уже адаптировал.
Snusmumriken
Примерно до этого состояния https://pastebin.com/MCHDYScb И тоже имеет ключ async.
Snusmumriken
Карочи. От знаний корутин ты ничего не потеряешь но только научишься куче асинхронных подходов в куче языков.
Snusmumriken
Вообще, понимаешь зачем они нужны?
Snusmumriken
Потому что как бы можно и без них всё то же самое.
Aqendo
Если честно мне недавно сказали что я не знаю как работает асинк в питоне
Aqendo
Поэтому я уже не уверен
Aqendo
ну вот в боте корутины чтобы от большого кол-ва пользователей бот не задерживался на одном юзере и выполнял запросы всех подряд одновременно
Snusmumriken
Можно и без этого, но придётся городить для каждого юзера по табличке со списком операций и курсором: текущая операция выполнена? Да? Переходим к следующей. Примерно как конечный автомат. Корутина позволяет удерживать состояние в теле самой функции, выходя из неё по необходимости, и возвращаясь к той же позиции когда её вызовут ещё раз.
Aqendo
Как дома буду лучше почитаю про корутины
Aqendo
Такая важная вещь, а я ничего про них не знаю
Snusmumriken
Ну грубо говоря, у тебя где-то болтается список активных в данный момент корутин, ты их запускаешь по очереди, и они возвращают или конечный результат, типа закончили работу, или говорят что "ещё не время" и ты дёргаешь следующую.
Aqendo
Просто по каждой корутине из списка проходиться постоянно и если закончили удалять из списка
Snusmumriken
Snusmumriken
Собственно, это вся архитектура асинхронного бота, лол кек.
Snusmumriken
Там ещё есть цикл. Вот такой. И всё. И просто вся блокирующая фигня yield'ит пока не разблокирует.
Snusmumriken
Операция getUpdates, которая как бы должна являться корнем всего бота — всего лишь одно из событий завёрнутое в корутину, и оно же плодит другие события. И после завершения работы — дублирует себя же, превращаясь в новое событие. И пока один клиент ждёт события крутясь корутинкой — getUpdates его когда-нибудь пропихнёт.
Igor
Узнали — согласны?
Кхе...) Буквально день-два назад ровно так же и сидел, синяки под глазами, рядом монстр, дебажил свою либу
polioan
Зырь
либа?
Snusmumriken
Igor
Офк
он наверное спросил какая именно
Snusmumriken
Моя, лол )) Кто ещё будет такое делать?
Igor
Ну я так и подумал, не видел вообще адекватных либ на корутинах для телеги в паблике
Snusmumriken
В 99.9% случаев хватает синхронного бота.
Snusmumriken
Мне просто было интересно впилить ту самую хрень как waitForEvent, чтобы не морочиться с конечными автоматами.
polioan
Офк
я бы почитал код
Igor
Мне просто было интересно впилить ту самую хрень как waitForEvent, чтобы не морочиться с конечными автоматами.
Ну я в корутины долго не лез, потому что тупо не хотел, как работают знал, но не хотел. Но чет сел недавно писать простенький http сервер и тааак кайфанул))
Igor
В итоге сейчас сам ими интересоваться побольше стал и применять их
Snusmumriken
Та же фигня. Я такой лет пять назад думал, мол "ну типа нафига если можно без них", а потом ка-а-а-ак понял.
Snusmumriken
Что стейт в функции это в тысячу раз удобнее чем стейт в таблетосе
Igor
Да-да
Snusmumriken
я бы почитал код
Будет но после фиксов
polioan
ура
Snusmumriken
require'snus_curl'))))
Но вот это, на самом деле очень интересная концепция нанесения имён. Когда я только начинал прогать, я думал, мол "вот кодеры высокомерные ублюдки, встраивают своё имя в либы", а потом внезапно обнаружил, что я начинаю просирать кучу своих либ в тоннах других похожих либ, они где-то там затеряны и я хрен когда их достану если не буду перерывать по одной. И require"snus_curl" это лучше чем require"curl", "lcurl", "fficurl" или другой десяток разных вариаций одной и той же либы, имя которой я мог бы написать. Туда же — фильтрация и поиск конкретно своих либ.
Igor
Вопрос немного не по теме, кнеш, но знает кто как на низком уровне хранятся в крестах лямбда-функции? Я, типа, хочу знать, использовать их в качестве коллбеков ок или нет. А то чет читаю и нигде особо не пишут, как они хранятся, либо я слепой.
Igor
Я видел, как их в курле коллбеками использовали, но тот, грубо говоря, в одном контексте всю магию делает, а у меня тут цикл бесконечный, который может уже сотни раз тикнуть после вызова функции и передачи ей лямбды в виде коллбека.
Igor
Ага, я слепой. Если вдруг кому интересно, то вот
Snusmumriken
Я видел, как их в курле коллбеками использовали, но тот, грубо говоря, в одном контексте всю магию делает, а у меня тут цикл бесконечный, который может уже сотни раз тикнуть после вызова функции и передачи ей лямбды в виде коллбека.
Емнип, компилятор их кеширует. То есть компилирует один раз, и каждый раз подставляет или разный стек, или разный набор замыканий и так далее. То есть разницы как бы нет, лямбда всё ещё будет указателем на лямбду.
Igor
Емнип, компилятор их кеширует. То есть компилирует один раз, и каждый раз подставляет или разный стек, или разный набор замыканий и так далее. То есть разницы как бы нет, лямбда всё ещё будет указателем на лямбду.
Ну у меня по специфике проект тупо не может использоваться за пределами MSVC, так что конкретно с этим (слава б-гу), мне не приходится возиться с мультиплатформенностью и можно искать инфу только по виндовому компилеру))
Snusmumriken
Ну просто в противном случае, пришлось бы встраивать компилятор лямбд в рантайм, так что все так должны делать )0
0xSU
Чё сделОл. text2url buttons. * медленно потому что инет говно :( *
🇺🇦daSXam🏴󠁧󠁢󠁳󠁣󠁴󠁿
Зырь
Елдить...
Snusmumriken
Так и есть
Aurora
just use your own
Aqendo
Мужики, тут такое дело, трактор похудел
B
Гиротрактор
polioan
трктр
Snusmumriken
Hello, World! 🎄
polioan
можете подсказать кто умный
Aqendo
Снус
polioan
если делать real time игру на js, lua love2d
Igor
можете подсказать кто умный
Опять метавопросы, умных тут много, но сразу лучше вопрос задавать
polioan
сервер - nodejs
polioan
что делать чтобы нельзя было изменить запросы?
polioan
(чтобы исключить мусорные запросы и читеров)
Aqendo
Шифровать, придумывать сервер-сайд ключ
Igor
что делать чтобы нельзя было изменить запросы?
Шифровать их. И то не то чтобы отсеять читерков-диллетантов, а просто усложнить им работу.
Aqendo
Но кому надо те дойдут
Igor
Нет универсального способа защиты
polioan
мне вот было интересно как устроены io игры
polioan
змейка
Igor
Кроме закрытой платформы
Igor
Но в целом да, основа их на socket.io в большинстве своём
polioan
та же самая же проблема?
polioan
не?
Aqendo
Нет