Size: a a a

2020 November 03

A

Andrey in ErlangRus
а в чем проблема )
источник

A

Andrey in ErlangRus
может там и есть какие-то ниточки, которые дергать можно, но ~p на ~0p верняк
источник

V

Vasilii Demidenok in ErlangRus
я надеялся, что проглядел какую-то опцию, но идея понятна
источник

SP

Sergey Prokhorov in ErlangRus
Vasilii Demidenok
я надеялся, что проглядел какую-то опцию, но идея понятна
Ручек для этого нет. Но я находил где это захардкожено и себе локально менял. Ща поищу
источник

V

Vasilii Demidenok in ErlangRus
я покопался чуток - оно в ct_framework прибито гвоздями
источник

SP

Sergey Prokhorov in ErlangRus
Думал о том чтоб PR отправить чтоб добавить конфиг для этого, но там код очень мутный, решил пока забить. Боюсь, что pr где просто один хардкод заменяется на другой, побольше, они не примут
источник

V

Vasilii Demidenok in ErlangRus
хех, скорее всего, да
источник

SP

Sergey Prokhorov in ErlangRus
Но я для eunit делал pr который такую же проблему в eunit решал. Там приняли без проблем. Я добавил новый параметр в опции. Но там код попроще был
источник

ML

Maksim Lapshin in ErlangRus
@nwalker ты расскажи, чем хороши структуры в эликсире
источник

AB

Alex Bubnov in ErlangRus
Maksim Lapshin
@nwalker ты расскажи, чем хороши структуры в эликсире
тем, что они мапы? у них есть доступ к полям по имени, это позволяет без дополнительной магии делать всякий generic код, типа сериализации или валидации.
источник

VS

Vladimir Sekisov in ErlangRus
самое главное, наверное - это вполне себе тип и к нему
можно присобачить протокол.
источник

AB

Alex Bubnov in ErlangRus
плюс у них есть всегда есть однозначно привязанный модуль, куда можно еще какой-то дополнительной меты или кода написать.
источник

AB

Alex Bubnov in ErlangRus
плюс они легко расширяемы - никто не запрещает(хотя, вероятно, осуждают) в структуру напихать дополнительных полей.
источник

AB

Alex Bubnov in ErlangRus
Alex Bubnov
плюс у них есть всегда есть однозначно привязанный модуль, куда можно еще какой-то дополнительной меты или кода написать.
например, вот у нас трифт, который в эрланге превращается в рекорд в hrl + модуль с метаинформацией, и есть в трифтовом протоколе самопальные union-ы - явный дискриминатор в отдельном поле и несколько взаимоисключающих полей, имя заполненного из которых лежит как раз в дискриминаторе.
это лучше стандартных юнионов трифта, потому что помимо взаимоисключающих полей в такую структурку можно положить еще несколько дополнительных сверху. с юнионами вроде бы так нельзя и в любом случае не стоит.  

так вот, в эрланге, если писать обобщенную функцию "достать заполненное поле", в нее всегда нужно явно передавать имя модуля с метаинформацией. это не сказать, что удобно. эликсировские структуры эту проблему решают, если метаинформацию трифта положить прямо в модуль со структурой.
источник

AB

Alex Bubnov in ErlangRus
есть еще одна история, тоже про трифтовые рекорды.
нам их в некоторых случаях хочется персистить в базу как json не разбираясь, что это за структура, и тем более не хочется для каждого рекорда писать отдельную сериализацию.

в эрланге это код, которому опять же передается модуль метаинформации трифта, и который соответственно генерит функции pack/unpack, map <-> record.
в эликсире - это делается протоколом, а отдельные структуры derive-ят общую реализацию, которая работает тупо влоб - персистит мапу с сохранением тега структуры.
источник

ML

Maksim Lapshin in ErlangRus
Vladimir Sekisov
самое главное, наверное - это вполне себе тип и к нему
можно присобачить протокол.
Видимо надо получше почитать
источник

ML

Maksim Lapshin in ErlangRus
Alex Bubnov
тем, что они мапы? у них есть доступ к полям по имени, это позволяет без дополнительной магии делать всякий generic код, типа сериализации или валидации.
А перфоманс не страдает?
источник

AB

Alex Bubnov in ErlangRus
Maksim Lapshin
А перфоманс не страдает?
уверен, что страдает, хотя чисел тебе не скажу.
нужно смотреть, как маленькие мапы себя ведут в сравнении с таплами по скорости, по футпринту наверняка проиграют.
в случае протоколов - дополнительно по одному case и intermodular call на каждый вызов через протокол.

то есть, в условном erlmedia им делать нечего, а вот в управлении конфигами - почему бы и нет.
источник
2020 November 04

ŹR

Źmićer Rubinštejn in ErlangRus
Есть функция enif_get_uint64. Как из эрланга понять, какой тип у инта у меня? Т.е. почему я не использую везде enif_get_int или что-то типа такого?
источник

ML

Maksim Lapshin in ErlangRus
Źmićer Rubinštejn
Есть функция enif_get_uint64. Как из эрланга понять, какой тип у инта у меня? Т.е. почему я не использую везде enif_get_int или что-то типа такого?
Кажется ты спрашиваешь про то, чем отличается int от uint64?
источник