Ayrat
Комиксы чтоле 🤔
тут внутрях всё называется в чесь какого-то гомикса
Shub
не просто гомикса. а прям компании-производителя гомиксов
Shub
в частности по авенджерс и люди Х. есть два персонажа из готэма
Shub
кросс овер такой
Vladislav
Оказывается так можно
Anonymous
Vasily
Dmitry
FiraCode или Iosevka
Не Фира 100%
Андрей
sosevka
Андрей
это ж жесть модуль на всю ассемблю открывать, не?
Ayrat
Doge
Ну по меркам jvm так себе стэктрейс. У спринга бывает сильно веселее
Doge
Да, вот как раз про эту картинку и вспомнил
Андрей
Ayrat
Нормас, да
Андрей
после трудного дня с крудами и ефами, думал почитаю про любимый лунный F#, а тут спринги
Ayrat
после трудного дня с крудами и ефами, думал почитаю про любимый лунный F#, а тут спринги
Я вот сегодня на любимом лунном фшарпе взял значит и ни строчки кода не написал. Но в целом знатно поебался с кафкой
Shub
пффф, это ты мне тут ребалансы устраивал?
Ayrat
Вообще это похоже на спорт. Всегда неожиданная развязка
Ayrat
пффф, это ты мне тут ребалансы устраивал?
Не, у меня своё. Решил я значит в прод вкорячить конфлуенс 1.0.0
Андрей
вместо чего?
Ayrat
На топик с 30ю лямами мессаджей потому что я рисковый
Ayrat
вместо чего?
Вместо 0.11.3
Ayrat
А ему больше 2х лет
Shub
там к тебе выехала делегация уже. с вилами и факелами
Vladislav
Shub
а мы тут развлекались с kafunk сегодня.
Shub
ведь фпшник попадая в проект с продом что делает в первую очередь?
Shub
правильно - начинает избегать успеха любой ценой используя генетические алгоритмы
Ayrat
там к тебе выехала делегация уже. с вилами и факелами
Все было почти хорошо пока один сервис не начал одновременно лагать всеми 16ю партициями на исте и весте одновременно
Ayrat
И причем лагал он моей ночью, кто-то в нуйорке сервис перезапускал, но он опять лагал через пару часов
Ayrat
Но я героически починил. Даже откатывать не пришлось
Shub
я эту историю настолько часто слышу, что предлагаю ввести дизайн-паттерн “лагающий консумер”. по аналогии с шагающим экскаватором
Ayrat
я эту историю настолько часто слышу, что предлагаю ввести дизайн-паттерн “лагающий консумер”. по аналогии с шагающим экскаватором
Тут дело было в размере буфера. Батч сайз (в количестве сообщений) не вырос, а вот ебаные сообщения стали толще и один батч перестал помещаться в буфер. Ну и там хуемое тред слипился пока он такой батч прожует, а буфер занят, и следующий батч не писался в него, пока этот не прожуется в пару заходов. Вот так вот мы себя тротлили удачно когда нагрузка приходила
Shub
классика.
Shub
настолько частая ситуация, что это в нашей слаки что-то типа дежурного ответа
Ayrat
Не, там батч сайз постоянно увеличивают или уменьшают. А вот батч БАЙТ лимит - нет
Shub
кстати, возвращаясь к теме логгирования и тресов
Shub
вот как предлагается решать эту проблему
Shub
SqlDb.upsertMany batchSize purchaseOrderReconciliationThorSkuDetailsIssueTable ["PurchaseOrderNumber"; "IssueNumber"] purchaseOrderReconciliationThorSkuDetailsIssueMappings records |> AsyncArrow.beforeAfter (fun _ -> logger.info "Starting sql upsert in %s for PurchaseOrderNumber=%i" purchaseOrderReconciliationThorSkuDetailsIssueTable purchaseOrderNumber) (fun _ -> logger.info "Finished sql upsert in %s for PurchaseOrderNumber=%i" purchaseOrderReconciliationThorSkuDetailsIssueTable purchaseOrderNumber) |> AsyncArrow.retrySqlTransientErrors |> AsyncArrow.catch |> AsyncArrow.mapError (fun e -> [sprintf "Error trying to save purchaseOrderReconciliation for PurchaseOrderNumber=%i\n%s\n%A" purchaseOrderNumber (e.ToString ()) records]) |> AsyncArrow.logErrorsTo logger
Ayrat
Я надеюсь ты это сочинил для лулзов
Shub
я это копирую из корпоративного чатика, лол
Ayrat
Чот не хочу я к вам.
Ayrat
я это копирую из корпоративного чатика, лол
Хотя если они там постят такое как смехуечки, норм
Ayrat
А если на серьёзных щах обсуждают
Ayrat
Я ещё не отошёл от нашего подхода где можно и матом послать.
Klei
Оказывается так можно
А работать будет после или по всему проекту?
Dmitry
ух ты! Оказывается в расте можно определить тип [Т; 0] - массив нулевой длинны. Интересно, а зачем такое может понадобиться?
Klei
Хотя слово тип в данной фразе намекает, что я что-то не так понял.
Ayrat
А у нас нельзя?
Ну не совсем. https://doc.rust-lang.org/nomicon/exotic-sizes.html#zero-sized-types-zsts
Ayrat
Там пример хороший зачем оно нужно
Ayrat
С мапами и сетом
Klei
Правильно понимаю, что упоминаемый size - это про байты в памяти?
Ayrat
Правильно понимаю, что упоминаемый size - это про байты в памяти?
Там двояко. Чаще всего да. Но пару раз там вроде в контексте - сколько у типа возможных инстансов
Vasily
Оверхед все равно есть
Klei
Ну не совсем. https://doc.rust-lang.org/nomicon/exotic-sizes.html#zero-sized-types-zsts
Я правильно понимаю, что следующее является аналогом Empty Types? https://gist.github.com/kleidemos/ab6ea0ca7423db71f4ce718b66fbc35a
Vladislav
А работать будет после или по всему проекту?
Вроде по всему🤔 Сам он пытался ещё
Dr. Friedrich
Что за шрифт, @fvnever ?)
Iosevka SS01, вроде
Anonymous
Klei
Пока об этом не узнает компилятор, не является.
Случаем не знаешь, есть ли закреплённое название для типа в моем примере?
Klei
Всегда под войдом несколько иное понимал.
Ayrat
Всегда под войдом несколько иное понимал.
Войд - тип который невозможно создать. Тип с нулём элементов. Если что-то возвращает войд - оно никогда не вернёт управление и это известно в статике.
x
шарповский void не композится
Ayrat
Нормальный войд и нормальный юнит это разное, да
Ayrat
Войд сишарпа - это как бы юнит, но им юзер пользоваться не может. В обоих шарпах нормального войда нет.
Ayrat
Кстати в хаскеле его тоже надо отдельно подключать
Klei
А есть где-то готовый Void для F#, чтобы я всюду свой велосипед не тащил?
Ayrat
Там знатные ФП дрочеры
Ayrat
Кстати гопак юзает свой войд для своих же оптимизаций
Ayrat
Он чекает если функция возвращает Job<void>, то ее можно запустить и забыть. Чуть более легковесно запускает
Ayrat
Я уже много раз говорил, гопак - гениальная либа