Vasiliy
Дней десять.
ох, мать моя родная. у меня только 2 дня пока что высокая температура.
Vasiliy
а я надеялся что она не долго будет. У девушки вообще 37 ровненько
Denis
у меня 38.2 второй день )
Denis
но вроде не ковид
Vlæd
Тесты отрицательные уже второй месяц, обоняние не вернулось.
Анна
gsomix
Пока на больничном. 🤔
Denis
Возьми Falco
Denis
а то чел пилит
Denis
а никто его не юзает
Denis
мне за него немного обидно
gsomix
gsomix
А теперь я понял. Несколько дней назад готовил запеканку, но ошибся в два раза с количеством творога.
gsomix
Получился манник.
Анна
gsomix
@AnutaU Спасибо за предупреждение!
Ilya
Что же будет, если я в обычное время задумываюсь, как заварить чай...
Анна
Ну типа не просто задумываются, а прямо эээ трудно
Vasily
Я не понял, гсомикс из чата выходил, чтобы никого не заразить?
Ilya
Vasiliy
https://www.youtube.com/watch?v=vQFvX7I6Ihw
Hog
Какая жава убогая!
Анна
Hog
Касты на каждом шаге обработки стрима замучился писать. @omgszer - что я делаю не так? :)
Stas
кто уже Валхалу прошел, скок там по времени надо на фулку сюжета?
Vasily
Чисто сюжет?
Vasily
Часов 60 , не больше
Stas
Stas
Vasily
у меня получилось примерно 110 с зачисткой около 85%
Ayrat
Hog
Stas
Oleksandr
https://youtu.be/RaI3gEHF5Hg
Oleksandr
Вы тут недавно кибербаг2077 обсуждали)
Vagif
Два дня ломал голову над проблемой после перехода на .NET 5, вместе с которым мы обновили несколько нугетов, включая клиент Раббита. Время от времени входящие сообщения из очередей RabbitMQ оказывались запорченными. Прямо мусор какой-то в теле сообщения. Подобных проблем не видел лет десять как минимум, мы ж в дотнете с managed memory работаем. После долгих поисков выяснилось, что .NET 5 здесь, разумеется, не при чем (я его и не подозревал), а причем изменение апи раббита, который вместо byte array теперь работает с ReadOnlyMemory. И строго предупреждает, что получив эту память нужно ее вначале записать в свои данные, а потом уже возвращаться из callback'а. А у нас, поскольку акторы везде, в одном месте это поле ReadOnlyMemory напрямую послали в другой актор. Со всеми вытекающими последствиями.
Vagif
Собственно ничего удивительного не произошло. Получил по заслугам. Но по идее с таким должны многие столкнуться с появлением возможности встраивать в свой API unmanaged memory.
Vagif
Но создателей апи Раббита понимаю - у них быстротат на первом месте, все чертовски быстро работает, им сам бог велел давать ссылки на такую память, а не копии возвращать
Vagif
Но практику опасную создает.
Ilya
Два дня ломал голову над проблемой после перехода на .NET 5, вместе с которым мы обновили несколько нугетов, включая клиент Раббита. Время от времени входящие сообщения из очередей RabbitMQ оказывались запорченными. Прямо мусор какой-то в теле сообщения. Подобных проблем не видел лет десять как минимум, мы ж в дотнете с managed memory работаем. После долгих поисков выяснилось, что .NET 5 здесь, разумеется, не при чем (я его и не подозревал), а причем изменение апи раббита, который вместо byte array теперь работает с ReadOnlyMemory. И строго предупреждает, что получив эту память нужно ее вначале записать в свои данные, а потом уже возвращаться из callback'а. А у нас, поскольку акторы везде, в одном месте это поле ReadOnlyMemory напрямую послали в другой актор. Со всеми вытекающими последствиями.
А почему там не пайпы, а просто спан?🤔
Vladimir
Два дня ломал голову над проблемой после перехода на .NET 5, вместе с которым мы обновили несколько нугетов, включая клиент Раббита. Время от времени входящие сообщения из очередей RabbitMQ оказывались запорченными. Прямо мусор какой-то в теле сообщения. Подобных проблем не видел лет десять как минимум, мы ж в дотнете с managed memory работаем. После долгих поисков выяснилось, что .NET 5 здесь, разумеется, не при чем (я его и не подозревал), а причем изменение апи раббита, который вместо byte array теперь работает с ReadOnlyMemory. И строго предупреждает, что получив эту память нужно ее вначале записать в свои данные, а потом уже возвращаться из callback'а. А у нас, поскольку акторы везде, в одном месте это поле ReadOnlyMemory напрямую послали в другой актор. Со всеми вытекающими последствиями.
так тут же наверное проблема не в ReadOnlyMemory, а то что рэбит скорее всего пулинг стал юзать
Крылатый
https://twitter.com/CyberpunkGame/status/1013883730929340418?s=20
Vagif
Vagif
Vladimir
от этого не должно ничего сломаться) проблема что ты передаешь без копирования, а на коллбэке они чистят или переиспользуют эту память.
Vladimir
Ты можешь скопировать в другую ReadOnlyMemory и передавать ее между потоками сколько влезет)
Vladimir
такой же "баг" есть у нового жсон сериализатора, они делают точно так же) Поэтому там не удается распаршенный жсон никуда передать, только сразу же в какой-то объект преобразовывать
Ayrat
а вот были бы линейные типы...
Ayrat
такого бага не было бы
Vladimir
Ayrat
требую тлдр)
в линейных типах можно на уровне типа задать число его использований
например у меня сигнатура вида
T 2 -> T 1
это значит что мне надо принять некий тип у которого есть 2 заряда передачи по ссылке
а мне надо вернуть такой же тип с одним зарядом
Это значит что я обязан написать функцию которая использует один заряд
Vagif
И даже если тебе приходит референс-тип, постольку поскольку ты его не трогаешь, обращайся к нему хоть откуда. Здесь же нужно быть начеку - в данные могут в любой момент (после возврата коллбэка) что-то еще написать.
Vagif
Я не знал, что такое линейные типы
Vladimir
Ayrat
вот это жесть)
или вот
A 1 -> B 1
мне дают ридонли спан с ОДНОЙ возможностью его использовать (записать или прочитать)
мне надо вернуть другой тип с ОДНОЙ возможностью его использовать
Vladimir
Vladimir
Ayrat
Ayrat
по сути наши типы именно такие с точки зрения линейной алгебры
Ayrat
если не хочешь ебать мозг - изи
Ayrat
а хочешь строгости - ограничивай
Ayrat
Ayrat
там есть те самые линейные типы
Ayrat
использовать больно, но баги предовтвращает
Vladimir
так а так получается неьлзя писать
let x = xSOdnimZariadom()
a(x)
b(x)
откуда мы знаем попытались ли в a и b прочитать x?
Doge
вот это жесть)
Раст на ослабленной версии линейных типов работает, например
Ayrat
Vladimir
сигнатура показывает собирается ли функция использовать заряд?
Ayrat
ну типа если она хочет пасс бай валуе - все ок, копируем и используем
если бай реф - тратим заряд
Vladimir
аа, понял
Doge
Где у тебя каждое значение можно использовать один или ноль раз
Ayrat
Доге на страже