Size: a a a

F# Flood: всем по тайпклассу

2020 April 09

SB

S B in F# Flood: всем по тайпклассу
Ivan Balanar
ничего не знал о кафке до этого момента. вбил в гугл "kafka partitioning order" и в первом же линке прочел страшное.
Ты мог бы быть нашим новым главным по технологическим трансформациям.
источник

R

Roman in F# Flood: всем по тайпклассу
Сукабля, у меня новый пожар от CosmosDB SDK.

Этот сдк — кусок поноса.

У чувака падает кусок кода на выполнении простого запроса, и нихуя не понятно почему: жалуется Newtonsoft (прибитый гвоздями поверх эпоксидки к сдк), что какого-то поля не хватает. Другой разработчик скопировал код к себе — и все заработало. Я проверил у себя — не работает. Спустя час совместного дебага удалось обнаружить, что проблема исключительно в десериализации — данные приходят корректные. Там, куда чувак себе скопировал код, в DocumentClient явно прописаны настройки сериализации, а у нас их явно задать нельзя (пушто attribute binding for Azure Function), но мы все правильные настройки запихали в дефолт. Т.е. если тупо вызвать JsonConvert.DeserializeObject<_>, то все работает как надо.

Чудом обнаружили, что если прописать UseDefaultJsonSerialization = true в байндинг атрибуте, то все начинает работать (хуй знает, какие настройки он берет, если этот сеттинг не задать, ведь блять по умолчанию же используется обычно то, что сука по умолчанию, да?).

Теперь непонятно следующее: какого хуя все остальные наши функции работают нормально без этой настройки с тем же атрибутом и DocumentClient? А дело вот в чем: в остальных функциях мы вызывали у него метод getById, и (де)сериализация в нем работает по одним законам. А тут мы вызвали метод CreateDocumentQuery и после него ExecuteNextAsync. И там блять ВНЕЗАПНО оказалось, что сериализация работает совсем с другими настройками. С какими? Да хуй его знает, мы даже с помощью райдера и его декомпилятора не смогли продраться сквозь это ебучее раковое ООП ради ООП с слоями ООП скрытыми за красивыми фасадами ООП.

КАК ЖЕ СУКА ГОРИТ БЛЯТЬ
источник

оГ

отец Григорий... in F# Flood: всем по тайпклассу
Там ещё небось как и в «большом» ажурном сдк 100500 автогенерённых файлов, захочешь онлайн посмотреть, а гитхаб тебе писю обрезанную показывает...
источник

R

Roman in F# Flood: всем по тайпклассу
UseDefaultJsonSerialization = true это вообще у меня в голове не укладывается. По умолчанию используется не по умолчанию. Чиво блять
источник

КП

Крылатый Пегас... in F# Flood: всем по тайпклассу
отец Григорий
Там ещё небось как и в «большом» ажурном сдк 100500 автогенерённых файлов, захочешь онлайн посмотреть, а гитхаб тебе писю обрезанную показывает...
И тут евреи.
источник

R

Roman in F# Flood: всем по тайпклассу
отец Григорий
Там ещё небось как и в «большом» ажурном сдк 100500 автогенерённых файлов, захочешь онлайн посмотреть, а гитхаб тебе писю обрезанную показывает...
да нет. Лучше б там сгенеренное было
источник

R

Roman in F# Flood: всем по тайпклассу
такую хуйню только люди могут написать, машина на это неспособна
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
Roman
Сукабля, у меня новый пожар от CosmosDB SDK.

Этот сдк — кусок поноса.

У чувака падает кусок кода на выполнении простого запроса, и нихуя не понятно почему: жалуется Newtonsoft (прибитый гвоздями поверх эпоксидки к сдк), что какого-то поля не хватает. Другой разработчик скопировал код к себе — и все заработало. Я проверил у себя — не работает. Спустя час совместного дебага удалось обнаружить, что проблема исключительно в десериализации — данные приходят корректные. Там, куда чувак себе скопировал код, в DocumentClient явно прописаны настройки сериализации, а у нас их явно задать нельзя (пушто attribute binding for Azure Function), но мы все правильные настройки запихали в дефолт. Т.е. если тупо вызвать JsonConvert.DeserializeObject<_>, то все работает как надо.

Чудом обнаружили, что если прописать UseDefaultJsonSerialization = true в байндинг атрибуте, то все начинает работать (хуй знает, какие настройки он берет, если этот сеттинг не задать, ведь блять по умолчанию же используется обычно то, что сука по умолчанию, да?).

Теперь непонятно следующее: какого хуя все остальные наши функции работают нормально без этой настройки с тем же атрибутом и DocumentClient? А дело вот в чем: в остальных функциях мы вызывали у него метод getById, и (де)сериализация в нем работает по одним законам. А тут мы вызвали метод CreateDocumentQuery и после него ExecuteNextAsync. И там блять ВНЕЗАПНО оказалось, что сериализация работает совсем с другими настройками. С какими? Да хуй его знает, мы даже с помощью райдера и его декомпилятора не смогли продраться сквозь это ебучее раковое ООП ради ООП с слоями ООП скрытыми за красивыми фасадами ООП.

КАК ЖЕ СУКА ГОРИТ БЛЯТЬ
я сразу отвинтил стандартный сериализатор
источник

R

Roman in F# Flood: всем по тайпклассу
это как? ньютонсофт там не отвинтить же
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
Roman
это как? ньютонсофт там не отвинтить же
у вас какая версия SDK?
источник

R

Roman in F# Flood: всем по тайпклассу
я правда не уверен, об одном сдк мы говорим или нет, пушто их там миллион
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
угу.
я на v4, preview который
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
они несовместимы между собой, лол
источник

R

Roman in F# Flood: всем по тайпклассу
Microsoft.Azure.WebJobs.Extensions.CosmosDB
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
а, ок. ЭТО ДРУГОЕ
в v4 можно свой сериализатор указать. а в эфшарпе прям нужно
источник

R

Roman in F# Flood: всем по тайпклассу
мы используем не самую последнюю, пушто нам нужна бесшовная интеграция с ажуровской инфрой
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
потому что стандартный не умеет работать с рекордами
источник

R

Roman in F# Flood: всем по тайпклассу
ньютонсофт умеет же
источник

R

Roman in F# Flood: всем по тайпклассу
причем из коробки умеет даже ДЮ, хоть и вербозно
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
умеет. но там оно так сконфигурировано, что по дефолту ему требуется тип с конструктором без параметров и сеттеры на проперти
источник