Size: a a a

2020 March 18

ML

Maksim Lapshin in ErlangRus
snakeduse
Ну, тоже выход. Правда надо сразу проектировать формат ответов.

На счет формата ответов, я так понимаю, что в целом принята такая стратегия - если результат успешный, то возвращается кортеж {ok, Result} или {error, Reason}.
Это негласная общепринятая практика?

Потому что я слышал от некоторых разработчиков "Покажи мне, где в коде OTP возвращается кортеж {ok...}? Там сразу возвращается результат в случае успеха".
это муторно и я бы такое стал делать повторно только если очень хочется. Мне очень хотелось отдавать хорошие хедеры
источник

s

snakeduse in ErlangRus
Aleksey Kluchnikov
я завел себе {err, {Code::atom(), Reason::term()}}. потому что иногда надо делать логику на Code. Просто {error, Reason} не хватает
Я про сам подход - {ok,...} | {error, ...}
источник

ML

Maksim Lapshin in ErlangRus
> Покажи мне, где в коде OTP возвращается кортеж {ok...}

ну это они с тобой полезли в бутылку просто в споре.

start_link() ->  {ok, Pid} | {error, ..}
источник

AK

Aleksey Kluchnikov in ErlangRus
snakeduse
Я про сам подход - {ok,...} | {error, ...}
сам подход ок
источник

AF

Andrey Fadeev in ErlangRus
а если сразу возвращается результат, то значит ошибки исключениями идут
источник

AF

Andrey Fadeev in ErlangRus
Два соглашения, смотря что удобнее в конкретном случае. Или просто как исторически сложилось
источник

ML

Maksim Lapshin in ErlangRus
Сейчас стало возможно ещё делать такое:

#{} = fun_call(..)


Самое паршивое — это когда нельзя отличить ошибку от хорошего возврата
источник

V

Vasilii Demidenok in ErlangRus
Сергей Иванов
интересно а можно в erlang какой-нибдуь хук навесить на создание процесса  и протоколировать parent->child ?
при желании можно через трейсинг
источник

AB

Alex Bubnov in ErlangRus
Vasilii Demidenok
при желании можно через трейсинг
но сложно все равно
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
при желании можно через трейсинг
большую он просадку дает? имхо если и делать то на самом низком уровне
источник

V

Vasilii Demidenok in ErlangRus
зависит от системы и надо мерять
источник

V

Vasilii Demidenok in ErlangRus
если это не частое событие и можешь ограничить кол процессов то должно быть норм
источник

VS

Vladimir Sekisov in ErlangRus
если осторожно, то не очень, ограничить дерево процессов и события только procs.
Вигер вон в exometer трассировку использовал
для метрик, так что осторожно можно.
источник

V

Vasilii Demidenok in ErlangRus
получаешь сбытия вида {trace, Pid, spawn, Pid2, {M, F, Args}}
источник

V

Vasilii Demidenok in ErlangRus
что сложного в этом?
источник

V

Vasilii Demidenok in ErlangRus
arity включить чтобы не получать значе6ия
источник

V

Vasilii Demidenok in ErlangRus
включать флаг например только при заходе в какуюто функцию
источник

V

Vasilii Demidenok in ErlangRus
например для супервизора который у тебя создает эти процессы
источник

V

Vasilii Demidenok in ErlangRus
в итоге все что он стартует будет репортится
источник

V

Vasilii Demidenok in ErlangRus
при трейсинге можно включать флаги в матчспеке функции которую ты трейсишь, так можно поймать например все процессы которые ее выполняют и дальше понять что ты хочешь по ним слушать
источник