Vladislav
прибегают голожопые и я их режу мечами
Vladislav
https://twitter.com/horusiath/status/1172108795218157569?s=12
Vasiliy
А о чем это?
Doge
почему?
Куча места за зря тратится.
Igor
7 байтов на дороге не валяются
Vladislav
почему?
Потому что достаточно выделить память под самое большое поле и использовать один адрес
Roman
Куча места за зря тратится.
вариантов-то немного. Структуры не умеют в наследование, приходится изворачиваться
Vladislav
Как С юнион
Vasily
Hooray
Doge
вариантов-то немного. Структуры не умеют в наследование, приходится изворачиваться
Вон, тут ниже сказали как можно. Или посмотри во что растовские ADT компилятся.
Vasily
Я завел LiteDb на TypeShape
Roman
Я завел LiteDb на TypeShape
и шо, сильно быстрее выходит?
Vasily
Ну в целом быстрее, конечно
Vasily
За счет выкидывания лишней конвертации в Json
Nikolay
Я завел LiteDb на TypeShape
Выложишь на гитхабы?
Vasily
Скорее всего
Nikolay
Кстати что там, не переехали на пятую версию ещё?
Vasily
Пока не было
Vladislav
А в фшарпмаппере
Vladislav
Вот там ньютонсофт прослойка лишняя
Nikolay
Аа, вон как
Крылатый
И сюда вброшу вид на Терру в 4к https://www.youtube.com/watch?v=wVn6ANxuJrc
Крылатый
> Терру Вахаёб, што ле?
Будто что-то плохое!
Антон
Будто что-то плохое!
Конечно, плохое
Крылатый
Похуй ваще.)
Vasily
Млин, насколько же я охуенен все-таки
Vasily
Смог-таки на typeshape запилить
Vasily
Правда, придется еще маленько побайтоебить
Vasily
Всякие fold выкинуть
Антон
Всякие fold выкинуть
А что, от fold производительность страдает?
Антон
Да, сильно
Какой-то фиговый в F# компилятор
Vasily
Ну какой есть
Vasily
На самом деле на фолде просто аллокаций много
Ilya
Какой-то фиговый в F# компилятор
Enumerable.Aggregate в C# ничуть не лучше будет.
Nikolay
Я тут от линковского GroupBy избавился, и хороший прирост получил
Nikolay
Правда мне нужен был последний элемент внутри группы, и я дёргал .Last(), мб из-за этого прирост получился
Ayrat
https://twitter.com/horusiath/status/1172108795218157569?s=12
Но всегда можно сделать ручной лейаут. Некрасиво, но работает
Doge
Какой-то фиговый в F# компилятор
Да просто в F# и в C# особо не парились с оптимизацией комбинаторов
Doge
Тут мало компилятора, тут саму либы с комбинаторами надо правильно написать
Roman
вопрос в зал: Для ошибок типа валидации или нарушений правил бизнес логики, словом, ошибок, вызванных ожидаемыми действиями юзера, вам нужен стектрейс или какой-то аналогичный хинт о том, где конкретно в коде это сработало?
Vasily
Обязательно
Vladislav
Да
Roman
Потому что это как бы ожидаемое поведение, и пайплайн обычно упорядочен: сначала валидация, потом бизнес-операция, потом операция над данными. Иногда бизнес-операции и дата-операции чередуются несколько раз, но суть от этого сильно не меняется. Поэтому, теоретически, если сообщения об ошибке адекватные и описательные, а так же известно, какой воркфлоу окончился одной из таких ошибок, то вроде бы и так должно быть понятно что где и почему.
Roman
Именно так и получалось
а скотобаза большая?
Roman
Для нарушений правил бизнес логики однозначно да.
речь идет о штуках вроде "недостаточно средств на счете" или "нельзя оплатить пустую корзину"
Vasily
@vshapenko @Liminiens @black_boomer буду рад конструктивной критике!
Ну вот я бы не полагался на то, что код написан корректно
Roman
Ну вот я бы не полагался на то, что код написан корректно
то есть стектрейс это твоя страховка на случай, если разраб не написал толковое сообщение в ошибке?
Aleksandr
Наличие стектрейса позволяет искать проблемы в незнакомом коде эффективней
Anonymous
то есть стектрейс это твоя страховка на случай, если разраб не написал толковое сообщение в ошибке?
Ну я надеюсь ты не собираешься выкидывать его только потому что он не особо нужен? Или вопрос именно так стоит?
Roman
вопрос стоит глобально: сделать удобную систему обработки ошибок. Хуячить исключения на каждый чих не хочу — нам резалт даден. Но пихать в каждую ошибку руками сорс тоже мне не нравится. Вот у нас и дискуссия
Doge
Вот тебе и трейс нахаляву
Roman
Фактически мне надо точное место где человеку ногу оторвало а не текст Васи
ногу оторвало, в моем понимании во всяком случае, это когда ошибка разработчика, а не юзера. Типа нулл референс или стек оверфлоу. Либо инфраструктурное что-то, вроде таймаута в базе
Roman
Так ты можешь же пихать в качестве ошибки исключение как объект
ну как бы да. Можно самому кинуть и тут же поймать, и вот тебе стектрейс. Но тоже не идеальный вариант
Roman
Наличие стектрейса позволяет искать проблемы в незнакомом коде эффективней
опять-таки, я не уверен, что такие ситуации — это "проблемы в коде". Это же ожидаемое поведение
Roman
юзер послал пустую строку в обязательное поле — зачем тебе тут стектрейс?
Aleksandr
Нет, конкретно тут не нужен
Aleksandr
Возможно я изначально понял вопрос неправильно
Aleksandr
Если исключительная ситуация возникает не по вине разработчика бэкенда, то и не бэкендеру ее править - искать источник ошибки не нужно