Ayrat
Dr. Friedrich
атомарные операции!
Это уже актор нужен, если InterlockedIncrement не нравится :)
Анна
Вот так вот господа мы и дожили до тех времён, когда нельзя просто так взять и заинкрементить число 😨
Анна
поскрипим старыми костями?
ну это конечно благодатная тема для флуда, но меня больше настоящее наше пугает 😂
Nikolay
А если я хочу в рекорде хранить всю эту кухню, как быть?
Vladislav
@Dolfik проверь говнокод
Vladislav
https://github.com/Dolfik1/ItMeetupCats/pull/3
Nikolay
сделай в рекорде мутабл поле!
Ваши советы доведут меня до инфаркта
Ayrat
Record expression жи
это что за зверь?
Ayrat
{ a with Value = a.Value + 1 } ?
Ayrat
ну вот и зачем?)\
Ayrat
т.е. это иммутабельность ради иммутабельности без преимуществ и кучей гемороя
Vasily
А рекорд мутабельным
Ayrat
😱
Nikolay
{ a with Value = a.Value + 1 } ?
Это гуд, но будет лок при записи нового рекорда
Vasily
Хотя по факту это стейт в рекурсивном лупе
Ayrat
Это гуд, но будет лок при записи нового рекорда
так в том и дело что ты можешь добиться локфри инкремента через атомарный инкремент над мутабл полем
Vasily
И да, пора вводить MailboxProcessor
Ayrat
и гопак
Vladislav
и гопак
и семестр обучения вместо митапа
Vladislav
Vasily
и акку
Не все сразу
Nikolay
https://github.com/Dolfik1/ItMeetupCats/pull/3
Вроде один и тот же котик будет два раза отдаваться тебе
Vladislav
ясен хрен
Nikolay
Была идея сделать так, что не отдавать котика, если уже отдали этому юзеру
Nikolay
И да, пора вводить MailboxProcessor
А на нем как будет?
Ayrat
Была идея сделать так, что не отдавать котика, если уже отдали этому юзеру
при большом размере кеша рандом будет достаточно хорошо отдавать неповторяющихся котиков
Vladislav
Была идея сделать так, что не отдавать котика, если уже отдали этому юзеру
я думал вся эта задача нужна чтобы твоего бота не задудосили
Vasily
А на нем как будет?
let rec loop state=....
Ayrat
Там всего в апи около 1.5к котиков
Лол, так все их выгрузи
Nikolay
Лол, так все их выгрузи
Так они рандомно отдаются
Ayrat
и забудь про это апи навсгеда
Ayrat
Тогда кэш надо сделать персистентным!
Ayrat
хыхыхыхы
Vasily
И внизу loop {state with Count=state.Count+1}
Vasily
И тормозить не будет
Vladislav
короче
Vladislav
я так и не понял какая проблема
Nikolay
А как стейт мэйлбокса получить?
Nikolay
Стейт вне функции
Vasily
PostAndReplyAsync
Nikolay
PostAndReplyAsync
Я сейчас делаю отдельного агента, который хранит стейт и отправляет в телегу по запросу, это норм?
Nikolay
Без reply
Vasily
Ну да
Vasily
Реплай тебе нужен только если ты что то хочешь отдать вовне
Vasily
А внутри лупа у тебя есть текущий Стейт, так что реплай не особо нужен
Nikolay
Получилось :)
Nikolay
Посмотрите код?
Nikolay
Щас запушу
Nikolay
https://github.com/Dolfik1/ItMeetupCats/blob/dev/Program.fs
Nikolay
@vshapenko Ayrat вы же у нас по акторам, посмотрите пожалуйста :)
Nikolay
Кстати, такой вопрос, как оно будет работать, когда в нём будет 100 сообщений? Он будет последовательно их обрабатывать?
Vladislav
>sprintf "%i 🐱 sended" sent
Ayrat
@vshapenko Ayrat вы же у нас по акторам, посмотрите пожалуйста :)
подожди, у нас срач в pro.net, прям поработать некогда
Nikolay
:D
Nikolay
Да
А это не будет тормозить?
Vasily
А это не будет тормозить?
Ну если стартовать асинк и идти на следующий луп,то нет
Vasily
Ну смотри
Vasily
У тебя есть receive
Vasily
Пока ты в следующий цикл не идёшь, считается, что ты обрабатываешь текущий стейт
Vasily
И сообщения копятся, естественно
Vasily
Но тебе надо всего лишь обновить стейт и запустить асинк отдачи котика
Vasily
Поэтому тормозить не должно
Vasily
Такс
Vasily
У тебя ошибка в коде
Vasily
Внутри асинка должен быть возврат messageLoop
Vasily
Иначе мейлбокс отработает один раз и сдохнет
Nikolay
Щас чуть правлю