Nikolay
Ayrat
ну банально в массив складывай) тебе даже тредсейф не нужен
Ayrat
как закончится длина массива с начала перетирай
Ayrat
чтобы старые замещались картинки и кэш не распух
Ayrat
массив на 500 строк любой калькулятор потянет
Ayrat
а твой инстанс может вероятно и 500000 строк легко тянуть
Ayrat
ин мемори
Nikolay
Т.е. мы запускаем, и выгружаем 500 котиков?
Nikolay
А потом отдаём их?
Vasily
Угу
Ayrat
Не, мы запускаем и каждый успешный запрос к апи заносим в кеш если запрос к апи долго идёт, отдаём из кешика чтобы пользователь не ждал
Ayrat
ну чот типа того
Ayrat
под словом кэш мы имеем в виду просто статический мутабельный нетредсейф массив конечной длины
Ayrat
но вот поинтер последнего замененного элемента надо будет инкрементить атомарно чтобы не перелезть через границы))
Ayrat
ну ты придумай чо-нить
Nikolay
Надо посмотреть, если апи может вернуть 100 котиков за раз, то проще брать 100 котиков, и отдавать из кэша, а потом снова брать 100 котиков
Ayrat
тебе только ссылки надо хранить, а их в память можно засунуть ОЧЕНЬ много
Ayrat
можно вообще только с кешем бота работать тогда он вообще скоростной будет шоппц
Ayrat
а на фоне обновлять из апи в отдельном потоке
Ayrat
чтобы картинки не застаивались
Hog
А - Архитектор
Nikolay
А если кэш закончится?)
Vladislav
Éminence grise
Причем можно одну и ту же картинку разным клиентам отдавать по несколько раз. То есть отдал 1, пометил, отдал 2
Vladislav
Боже
Vladislav
Ну и хуйня
Vladislav
Пардон
Ayrat
А если кэш закончится?)
ну если у тебя кэш размера 100к, то очень маловероятно что какой-то пользователь заметит что у него стотысячепервый котик ТОТ ЖЕ САМЫЙ
Ayrat
ну и опять таки я уже привёл пару вариантов обновления кэша
Nikolay
Ну если кто сделает, буду благодарен)
Nikolay
Код в репозитории
Éminence grise
Ну или перезаписывать каждфй час кеш, готовить в другой нити
Ayrat
вытеснением самых старых картинок (заполняем кэш-массив по кругу, старые будут уходить естественным путём), или просто постоянно дёргаем апи в отдельном потоке и обновлять его насильно
Nikolay
Надо презентации пофиксить ещё
Nikolay
Действительно разумным будет сделать реюзабельность
Nikolay
Одну картинку отдавать юзерам нескольким
Ayrat
подожди. Я начал вроде как читать про шаблоны, а закончил generic кодом
Ayrat
Видимо от любителей плюсов!
Vladislav
перевод родной, автор то русский
Vladislav
Éminence grise
их путают. переводят иногда одинаково generic и template
Nikolay
Ну что, будет кто кэширование делать? :D
Vladislav
Ну что, будет кто кэширование делать? :D
Так сделай мемоизацию с лимитом после которого все из кеша
Ayrat
Ну что, будет кто кэширование делать? :D
я если только завтра, сегодня уже спать пора)
Nikolay
И надо в логи выводить, интересно сколько людей потыкает)
Éminence grise
перевод родной, автор то русский
У него и листы переводятся как динамические массивы. С языком проблема.
Éminence grise
И это наиболее яркое использование generic. Боюсь читать, что он про LINQ написал.
Ayrat
Ссылку на код
https://github.com/Dolfik1/ItMeetupCats/
Nikolay
Будет круто ещё запилить команду, которая выведет сколько котиков за день было отправлено, и уникальных юзеров
Nikolay
:)
Nikolay
Посмотрим, сколько человек на митапе потыкает
Ayrat
тебе надо чтобы на митапе не залипал бот, поэтому точно надо кэш прикрутить
Ayrat
ты ж не хочешь чтобы люди думали что на F# тормозит
Ayrat
!!!1
Nikolay
Ну я пока занят, разве что за 4 часа до митапа запилить
Vladislav
ты ж не хочешь чтобы люди думали что на F# тормозит
Фронтенд на фшарпе, бэкенд на C++ через pinvoke
Ayrat
а когда митапчик?
Nikolay
В субботу
Nikolay
А что в минусы F# можно записать, как думаете?
Nikolay
Непопулярность?
Éminence grise
nameof
Ayrat
nameof
с козырей зашёл
Éminence grise
с обиды
Hog
прикольно было б nameof theRose
Hog
let it be = :)
Nikolay
FSI и вперёд
Ayrat
Отлаживать сложно.
да, соглашусь. Но я приучил себя писать код который не надо отлаживать именно потому что это сложно
Éminence grise
Тип модуля достать нетривиально.
Ayrat
все эти операторы и async-all-the-way с билдерами и монадами выводят дебагер из себя