Size: a a a

2020 February 17

A

Andrey in ErlangRus
если есть юнит тесты, то это вообще идеально все.
источник

СИ

Сергей Иванов in ErlangRus
а кто-нибудь смотрел код реализации матчинга ассоциативных массивов?
источник

AB

Alexey Bolshakov in ErlangRus
Смотришь такой в фоне доклад Go vs Python и там Максим Лапшин вопросы задает. Ерланг форева )) и приз за лучший вопрос
https://youtu.be/a8oEETIRpCk
источник

V

Vasilii Demidenok in ErlangRus
В общем на тему моих предыдущих вопросов по нифу - нефиг в пятницу вечером пытаться понять что за баг, лучше отложить на понедельник. Решилось фиксом в коде апгрейда нифа :D
источник

ММ

Михаил Малюк in ErlangRus
>> и приз за лучший вопрос
даже пошил послушать :)
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
В общем на тему моих предыдущих вопросов по нифу - нефиг в пятницу вечером пытаться понять что за баг, лучше отложить на понедельник. Решилось фиксом в коде апгрейда нифа :D
так ты все таки освобождаешь данные в old_ или пробрасываешь их?
источник

V

Vasilii Demidenok in ErlangRus
устанавливаю значение old_priv в ноль в апгрецд и проверяю в unload прежде чем освободить. Не будет работать на нагружённой системе поскольку может существовать старый код который попробует чтото сделать, но в нашем случае это не применимо. Более правильный путь - добавить реф каунтинг
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
устанавливаю значение old_priv в ноль в апгрецд и проверяю в unload прежде чем освободить. Не будет работать на нагружённой системе поскольку может существовать старый код который попробует чтото сделать, но в нашем случае это не применимо. Более правильный путь - добавить реф каунтинг
ой, а зачем ты ставить old_priv в нуль? там же данные которые ты раньше в load создал
источник

V

Vasilii Demidenok in ErlangRus
static int upgrade(ErlNifEnv* env, void **priv_data, void** old_priv_data,
                  ERL_NIF_TERM load_info)
{
...
   *priv_data = *old_priv_data;
   *old_priv_data = NULL;
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
static int upgrade(ErlNifEnv* env, void **priv_data, void** old_priv_data,
                  ERL_NIF_TERM load_info)
{
...
   *priv_data = *old_priv_data;
   *old_priv_data = NULL;
а, ну т.е. пробрасываешь. написано было так будто просто зануляешь
источник

V

Vasilii Demidenok in ErlangRus
не правильно тебя понял значит) но ряд нифов на которые я смотрел вообще не парятся про логику апгрейда и имеют только load, да unload. что в общем понятно
источник

O

Oleksiika in ErlangRus
Дорбрый день, коллеги.  Пните меня в правильном направлении, пожалуйста: как лучше всего протестировать (написать полезные тесты) внешнее апи с которым твой код работает?
источник

AK

Aleksey Kluchnikov in ErlangRus
ponos
источник

AK

Aleksey Kluchnikov in ErlangRus
источник

AK

Aleksey Kluchnikov in ErlangRus
Oleksiika
Дорбрый день, коллеги.  Пните меня в правильном направлении, пожалуйста: как лучше всего протестировать (написать полезные тесты) внешнее апи с которым твой код работает?
Внешнее апи протестировать или свой код?
источник

V

V in ErlangRus
Котаны, как вы тестируете такие кейсы?
- Некий процесс должен бросить эксепшн при своём запуске (при определённых условиях)
- Запускаете процесс, запускаете к нему erlang:monitor, получаете референс, отслеживаете {'DOWN', _, _, _, Reason}
- Но! тестируемый процесс бросает эксепшн так быстро, что к моменту запуска монитора уже умирает. И тогда монитор присылает вам {'DOWN', _, _, _, noproc}
источник

V

Vasilii Demidenok in ErlangRus
V
Котаны, как вы тестируете такие кейсы?
- Некий процесс должен бросить эксепшн при своём запуске (при определённых условиях)
- Запускаете процесс, запускаете к нему erlang:monitor, получаете референс, отслеживаете {'DOWN', _, _, _, Reason}
- Но! тестируемый процесс бросает эксепшн так быстро, что к моменту запуска монитора уже умирает. И тогда монитор присылает вам {'DOWN', _, _, _, noproc}
spawn_monitor ?
источник

V

V in ErlangRus
Vasilii Demidenok
spawn_monitor ?
Спасибо, попробую
источник

O

Oleksiika in ErlangRus
Свой код покрыт тестами внутри.  Но данные он получает стучась на внешнее апи. И иногда ловятся неприятности в ответах от внешнего апи.
Я написал эмулятор этого апи, который отдаёт на правильные вопросы правильные ответы, вот только иногда это не работает, так как внешнее апи иногда меняется и не уведомляет об этом. Вот теперь весь в размышлениях как с этим жить 😢. Ну и слать живые запросы на все методы апи не всегда реально, так как там нет тестового режима.
источник

V

Vasilii Demidenok in ErlangRus
Oleksiika
Дорбрый день, коллеги.  Пните меня в правильном направлении, пожалуйста: как лучше всего протестировать (написать полезные тесты) внешнее апи с которым твой код работает?
api какое?
источник