Vladislav
fmt.Errorf("some shit happened at %s: %w", loc, err)
Кіт ✙
Grigory
Кіт ✙
Кіт ✙
мы ведь не хотим хардкодить обработчики?
Grigory
Что значит хардкодить обработчики?
Вот тебе приходит запрос
Ты читаешь первую строчку, доходишь до пути запроса
Дальше по нему определяешь обработчик
Из него получаешь ответ или ошибку
Если не получаешь обработчик - выдаёшь 400/405
Grigory
В какой момент тут Мапа ошибка->обработчик появляется?
Кіт ✙
Кіт ✙
допустим, сейчас это выглядит вот так
Vladislav
а эти ошибки - это ошибки из какого кода?
Vladislav
из твоего или пользовательского?
Кіт ✙
моего
Кіт ✙
обработчики не возвращают ошибки
Кіт ✙
предполагается, что все ошибки обрабатываются там же на месте, возвращается только types.Response
Vladislav
тогда не понимаю, зачем тебе нужна мапа, чтобы для какой-то ошибки вызвать обработчик?
Grigory
А какие ошибки ты так обрабатывать собрался?
Кіт ✙
ну, и то же про 405 method not allowed
Кіт ✙
а там ещё и из ядра могут ошибки прилетать, тоже хорошо было бы иметь возможность собственноручно их обрабатывать
Grigory
Кіт ✙
мы же не хотим обрабатывать ошибку, которую уже обработали?
Кіт ✙
ну допустим, а каким кодом выразить ErrConnectionClose?
Vladislav
Vladislav
но я правда прикола не понял, почему кони и люди смешались
Кіт ✙
Vladislav
почему серверу не похуй на ошибки какие-то
Vladislav
это всё дело пользовательского кода
Vladislav
скажем, я юзаю обычный net/http и никакие мапы не заполняю
Кіт ✙
если не надо - значит, не надо. Обработчики по умолчанию отдадут нечто такое
Grigory
Grigory
Кіт ✙
но ведь пользовательский код теоретически всё же надо уведомить о подобных штуках
хотя вот с ErrConnectionClose сомнительно. Либо ловим на этапе парсинга запроса, и обработчик всё равно ещё не вызван, можно просто забыть об этом инциденте. Либо когда читаем тело, но тогда эта ошибка возвращается прямо в обработчик. Либо когда пользователь тело не прочитал, а забил на него, но тогда мы опять же можем забыть об этом
Кіт ✙
возвращается конструктор ответа, роутер из него рендерит сам ответ
Кіт ✙
сделано с заделом на миддлвари
Grigory
Имхо, на такие кейсы обработчики не нужны, ты с этой ошибкой ничего сделать не сможешь, максимум в метрике посчитать сколько их происходит, да и то - бесполезно
Grigory
Смысл роутера же в том, чтоб не заморачиваться с сетью и просто пилить бизнес логику
Кіт ✙
Кіт ✙
куда лучше, нежели вовсе отобрать такую возможность
Кіт ✙
Илья
имхо, какой-то python style
Илья
длинные чейны нормально выглядят в каких-то тестах, гошка их плохо форматирует
Илья
Кіт ✙
а есть ли вообще юзкейс у манипуляций с ответом после завершения обработчика?
Кіт ✙
потому что я так подумал, и что-то вроде как не видно, чтобы это как-либо адекватно можно было использовать
Vladislav
Кіт ✙
фастхттп такого функционала, например, не предоставляет. Вот я и подумал, а нужно ли оно вообще
Vladislav
хз, я думал вообще вся затея выросла из какой-то конкретной сформировавшейся необходимости
Anton
kostyaBro
https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
Кіт ✙
как выглядят анонимные функции с точки зрения исполняемого кода? Во что они генерируются, как обрабатываются? Насколько дорого в горячем участке кода передавать анонимную функцию аргументом функции?
kostyaBro
Бесплатно, грубо говоря
kostyaBro
Вчера на и записи с конференции видел
Maks
kostyaBro
Maks
Лучше день потерять потом за 5 могут долететь
Ну там не день, там реально много времени уходит. Ты же не можешь без доменного спеца спроектировать ничего. Ты не бизнес. Его работа это тоже проектирование ддд по сути будет. Пока он все распишет, пока вы обсудите, и так далее. Это даже не неделя на его работу
kostyaBro
Maks
Ну прежде чем добавлять нужно начать ддд делать. А что бы начать - бизнес должен описать предметную область грамотно. Я сталкивался с ДДД и это было недоДДД. И такое часто слышу.
Кіт ✙
kostyaBro
Тут про unsafe ничего почти не сказано, но лично я тоже его очень люблю.
Кіт ✙
Кіт ✙
kostyaBro
Кіт ✙
сломается то, что работает с арифметикой указателей
kostyaBro
Есть случаи когда для снятия нагрузки с gc алоцироыали массив байт огромный и сами там делали что надо
kostyaBro
fast http весь на них работает