Size: a a a

2020 September 21

O

Oleksiika in ErlangRus
Может я моветонный, но рекорды мне больше нравятся. Они или рекорд нужного типоразъёма или не USB type-c. С мапами похоже, но чуть не так.
источник

ML

Maksim Lapshin in ErlangRus
Oleksiika
Может я моветонный, но рекорды мне больше нравятся. Они или рекорд нужного типоразъёма или не USB type-c. С мапами похоже, но чуть не так.
вопрос не в этом, а в том, что грязный юзерский инпут превращается в валидный рекорд согласно описанному typespec
источник

O

Oleksiika in ErlangRus
Максим, но ведь дальше валидация? Я надеюсь у вас имено та?
источник

O

Oleksiika in ErlangRus
*так
источник

ML

Maksim Lapshin in ErlangRus
валидация — это когда ты пропустил данные и потом их проверяешь. Тут просто не сформируется рекорд, если он не прошел через typespec
источник

O

Oleksiika in ErlangRus
Умер процесс?
источник

O

Oleksiika in ErlangRus
Снимаю все вопросы. Мы говорим о разном.
источник

ML

Maksim Lapshin in ErlangRus
вернется {error, что-то}
источник
2020 September 22

AN

Alexey Nikitin in ErlangRus
Maksim Lapshin
вернется {error, что-то}
а инфу по рекордам и типам через epp:parse_file/2 вытаскиваешь? хочу похожую штуку сделать
источник

AN

Alexey Nikitin in ErlangRus
просто инфа о рекордах пропадает после компиляции. получается надо в сырцы лезть. но в релизе, например, не будет сырцов. и твой код не сработает. в чем секрет?
источник

AN

Alexey Nikitin in ErlangRus
источник

ML

Maksim Lapshin in ErlangRus
Alexey Nikitin
а инфу по рекордам и типам через epp:parse_file/2 вытаскиваешь? хочу похожую штуку сделать
я выложу это в опенсорс, может будет полезно кому.

Инфа достается через parse_transform и складируется через сгенерированные функции.

На всякий случай: в атрибуты складывать нельзя
источник

AN

Alexey Nikitin in ErlangRus
источник

PK

Petr Kozorezov in ErlangRus
у Лоика подобная штука была (правда сейчас уже не поддерживается и там нет мап, и не знаю как там было дело с рекордами)
https://github.com/extend/sheriff
источник

AN

Alexey Nikitin in ErlangRus
тогда можно функцию map2record в тот же модуль пихнуть во время parse_transform-а и тогда код будет выглядеть еще чище #outer_rec{nested = #nested_rec{key = 10}} = map2record(outer_rec, #{<<"nested">> => #{<<"key">> => 10}})
источник

ML

Maksim Lapshin in ErlangRus
Petr Kozorezov
у Лоика подобная штука была (правда сейчас уже не поддерживается и там нет мап, и не знаю как там было дело с рекордами)
https://github.com/extend/sheriff
да, я поглядел туда, там немного другое
источник

ML

Maksim Lapshin in ErlangRus
Alexey Nikitin
тогда можно функцию map2record в тот же модуль пихнуть во время parse_transform-а и тогда код будет выглядеть еще чище #outer_rec{nested = #nested_rec{key = 10}} = map2record(outer_rec, #{<<"nested">> => #{<<"key">> => 10}})
вот «чище» — не факт.
источник

PK

Petr Kozorezov in ErlangRus
а вообще идейно с валидацией через типы есть одна фундаментальная проблема: ограниченность системы типов, и, как следствие, невозможность написать полноценный валидатор
источник

AN

Alexey Nikitin in ErlangRus
Maksim Lapshin
вот «чище» — не факт.
соглашусь :)
источник

LL

Lama Lover in ErlangRus
Petr Kozorezov
у Лоика подобная штука была (правда сейчас уже не поддерживается и там нет мап, и не знаю как там было дело с рекордами)
https://github.com/extend/sheriff
У меня было что-то такое, но уже с мапами...
источник