Ayrat
а так ок
Ayrat
ну если кого-то тут волнует боксинг
Ayrat
@atsapura ёбнуло https://sharplab.io/#v2:DYLgZgzgNALiBOBXAdlAJiA1AHxgTwAcBTAAgDEB7CkgXhIG8SBJDEiGeAS2QHMSBfALAAoEcCIwSAYwAWRKQGsSYKrREllqugFVks+QqJoAdGiJgAhomAwKYADyUKAPhEj9ikro+GTZy9a2Dk6uwtjOJARcyDBgyCQARACkAIIJQA==
Roman
хм, у меня в фси тоже ебнуло ага
Ayrat
ну, логично
Ayrat
оператор = он такой
Roman
только ооочень странно отъебнуло
Ayrat
да не, с налрефом
Ayrat
как ожидалось
Roman
ну с ним, да
Roman
просто отложенно
Roman
Ayrat
public static bool check(Foo foo) { Foo obj = null; return foo.Equals(obj, LanguagePrimitives.GenericEqualityComparer); }
Ayrat
короче, единственный нормальный способ через боксирование
Ayrat
isNull (box foo)
Ayrat
на структурах можно пострадать, да. Но можно огородить функцию чека проверкой на class
Ayrat
и не страдать
Shub
myShit = Unchecked.defaultof<Shit>
у меня полсотни полей с разными уровнями вложенности
Shub
я пытаюсь найти настройки в Newtonsoft, чтобы оно не парсило такие сообщения вообще
Shub
в функции маппинга из плохих моделей в свои
ну вопрос не в "где проверять на нуллы", а "как проверять на нуллы"
Roman
а как ты хотел лол? Какие-то мудаки неправильно задизайнили модели, десериализуют их через пизду, а тебе однострочное решение подавай?
Roman
тут однострочное решение только через трудовую)
Shub
а как ты хотел лол? Какие-то мудаки неправильно задизайнили модели, десериализуют их через пизду, а тебе однострочное решение подавай?
нет, модели задизайнены ок, на самих моделях null не является разрешенным значением. где разрешается - там стоит optional
Shub
проблема возникает, если тебе пришло сообщение вообще не того формата
Shub
это кафка топики, в них может писать кто угодно
Roman
аа
Ayrat
на кафка топики можно повесить схему
Shub
если это не то сообщение, что я жду - пусть оно лучше не парсится вообще, чем вертает мне пустое сообщение с нуллами
Shub
на кафка топики можно повесить схему
можно. но у нас не висит пока. со временем повешу
Vladislav
Деда абсолютный чемпион по работе с победителями паралимпиады среди программистов
Shub
это элементарно делается запретом на нулы где-то в нутонсофте
пытка аннотациями продолжалась второй день
Ayrat
пытка аннотациями продолжалась второй день
не, там глобально настройками можно запретить
Shub
Деда абсолютный чемпион по работе с победителями паралимпиады среди программистов
видишь ли, у нас тут хорошо так за сотку топиков уже на стадии пилота
Ayrat
настройки десериализации
Ayrat
JsonConvert.Deserialize<Type>(string, SOMESETTINGSHERE)
Shub
ну это еще прогресс, потому что раньше у нас было за сотку топиков на один склад.
Roman
у вас за топики премии платят?
Shub
у вас за топики премии платят?
у нас платят премии за сражение с ветряками
Ayrat
ну это еще прогресс, потому что раньше у нас было за сотку топиков на один склад.
а зачем так много? вы там для каждого типа сообшения по топику заводите? ну не то чтобы ужасно, но йобу можно дать слушать их все
Ayrat
проще уж завести поле msgType и на его основе парсить в один из 100 видов месаджа
Shub
а зачем так много? вы там для каждого типа сообшения по топику заводите? ну не то чтобы ужасно, но йобу можно дать слушать их все
ну получается, что да. у нас микросервисы общаются между собой через топики. на любое взаимодействие отводится два топика. это надо умножить на 4, по числу энвайрментов
Shub
(топики все на одном кластере, лол)
Shub
т.к. сервис общается с двумя-тремя другими сервисами, то на один микросервис приходится по 3-4 топика легко
Ayrat
Джоб сосурити
Roman
Джоб сосурити
жоп секьюрити
Shub
ты можешь нарисовать топологию ваших микросервисов за 20 минут?
около 20 квадратиков, соединенных двунаправленными стрелочками в полупроизвольном порядке. двунаправленная стрелочка == 2 топика
Ayrat
плохой дизайн
Shub
как ты смеешь.
Ayrat
замкнутые циклы данных вызывают самые сложные проблемы в архитектуре
Ayrat
типа как обеспечить фидбек луп и не взорвать систему
Shub
Смотрится, что оно плохо будет под нагрузкой работать
9 сообщений в минуту, работает с 9 до 18
Roman
тогда зачем вообще это на микросервисах делать?
Ayrat
Хм.
Shub
тогда зачем вообще это на микросервисах делать?
я бы поставил вопрос еще радикальнее: что эти люди делают в профессии?
Ayrat
Зарабатывают
Ayrat
В смысле?
Shub
зачем им эфшарп?
Ayrat
Им платят же
Ayrat
зачем им эфшарп?
Ну вот сюда взяли, в другое место не взяли
Roman
я бы поставил вопрос еще радикальнее: что эти люди делают в профессии?
не, я бы пока не ставил такой вопрос. Я все же хочу про микросервисы спросить
Shub
ну если не шутить про ptsd и прочие дела, то "просто так". там есть какое-то обоснование, но оно напрочь лишено смысла
Shub
когда-то, когда жет только начинался, у них случилась проблема. кто-то на фронтенде лажанул и один из клиентов ддоснул весь бекенд (спикс вольюм про производительность этого бекенда, если один браузер поставил их на колени)
Shub
тогда они решили, что надо строить кластер под один конкретный склад. типа, проблемы будут ограничены одним кластером. идея вроде ничего, но исполнение как всегда подкачало
Shub
потом им кто-то занес бложик про микросервисы, начав очередной цикл вакханалии
Shub
кстати, у нас топики имеют н партиций, но всего в нескольких случаях продюсеры и консумеры имеют н инстансов. в подавляющем большистве в топик с 8 партициями пишет один инстанс сервера и читает один инстанс тоже
Doge
потом им кто-то занес бложик про микросервисы, начав очередной цикл вакханалии
Теперь надо чтобы кто-нибудь занёс благую весь, что микросервисы уже не в моде, пора переписывать обратно на монолит
Shub
Теперь надо чтобы кто-нибудь занёс благую весь, что микросервисы уже не в моде, пора переписывать обратно на монолит
а оно так и получается. скажем, есть баундед контекст, в нем будет один дико жирный сервис, делающий почти ВСЕ и полдесятка рахитичных, типа проекций и т.п.