juan_gandhi: (Default)
[personal profile] juan_gandhi
Сегодня трахался с одной фигней. И вот код ходит куда-то на сервер, а приносит в ответ "неправильный json". Шо за json, я ничего такого не посылаю. А ошибка приходит. Стал изучать вопрос. А чо он неправильный, а там http4s берет какой-то Message[T], пытается из него сделать ByteBuffer, и обламывется, т.к. ByteBuffer оказывается пустой. Из чего он делается - Message состоит из каких-то Fragments; и вот один фрагмент пустой.

Что за фрагмент, чо он пустой, непонятно, но внутри его сидит SingleChunk, в котором сидит Chunk, и про него известно, что он пустой. Ну окей, ну покажите мне, что было-то. А не показывают. Там, конечно, цикл, но цикл навалян через рекурсию (типа так круче), а рекурсия оптимизирована через трамплин. В результате стектрейса нету, промежуточные данные не видны, Message не виден, потому что это макрос. А откуда вызвали, тоже непонятно, потому что трамплин, и весь стектрейс проебан.

И вот каким-то чудесным образом я где-то замечаю, что сервер-то послал HTTP 400. Ну правильно. И, конечно, в таком случае никакого джейсона. Но http4s на это все кладет с высокой колокольни, и начинает "парсить джейсон".

Ну на эту тему даже тест есть. Только этот тест не ловит HTTP 400, а ловит ошибку. Ага, ошибка! Ура. 

Такие дела.
 

А внутри cats, свободные монады, IO монада, завернутая в EitherT. 

А смысл?! Если HTTP 400 вы не ловите.

Что-то после раста все это смешно выглядит.

 

Date: 2019-10-22 05:51 am (UTC)
From: [personal profile] sassa_nf
HTTP 400 is allowed to have a body, and content-type is allowed to declare it a application/json.

Date: 2019-10-22 06:38 am (UTC)
xacid: (Default)
From: [personal profile] xacid
особенно "хороша" здесь ио монада - за что боролись на то и напоролись ... :)

Date: 2019-10-22 05:31 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
А я, между прочим, давно говорил про все эти монады-рекурсии и удобство отладки.

Непонятно только, что, неужто на Расте нельзя взять пустой буфер?

Date: 2019-10-22 05:40 pm (UTC)
yucca: (Default)
From: [personal profile] yucca
А я на днях некоторое время пыталась понять, почему на совершенно невинную просьбу сохранить текст сервер мне выдает 500 Internal Server Error, который в логах никак не отражается. Оказалось, там у ModSecurity такое правило - считать подозрительными все строчки, в которых фигурирует update, set и =, независимо от того, что между ними.

Date: 2019-10-22 06:29 pm (UTC)
From: [personal profile] caztd
> Что-то после раста все это смешно выглядит.
Эээ.. так и до плюсов докатиться можно ;)

Date: 2019-10-23 03:41 pm (UTC)
From: [personal profile] plovski
> А внутри cats, свободные монады, IO монада, завернутая в EitherT.

А вам уже говорили, что когда ваши труды по пропихиванию монадушек в массы увенчаются успехом - массы вам такое небо с овчинку functional style устроят, что вы проклянете тот день когда впервые услышали о монаде?

Ну так вот вам первые ласточки, enjoy.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 1920 21
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 25th, 2025 02:26 pm
Powered by Dreamwidth Studios