Size: a a a

2020 June 22

ИИ

Иванов Иванов... in ErlangRus
Sergey Prokhorov
не нужно мокать =)
ну это не замена, а дополнение. нормальная тема
источник

ИИ

Иванов Иванов... in ErlangRus
можно с таким-же примерно успехом еще логи грепать. на интеграционных тестах такое делаем
источник

SP

Sergey Prokhorov in ErlangRus
sergey.prokhorov  11 days ago
I think at least in <team name> when we want to trace some function calls in a test we just mock this function with passthrough option and then check meck:history. What kinds of advantages would we get by using snabbkafe instead?

dmitry.fedoseev  11 days ago
it evolved from the approach that you mentioned. except you don't need to reinvent history analysis primitives over and over again, and, by and large, you don't need meck.

dmitry.fedoseev  11 days ago
in order to troubleshoot your code, you look at the logs. the core idea is that the testcases can do it for you.

dmitry.fedoseev  11 days ago
...I deliberately chose not to use meck or any kind of code introspection and rely entirely on the structured log messages instead. this makes trace specifications independent of the internal implementation and less fragile
источник

ИИ

Иванов Иванов... in ErlangRus
Sergey Prokhorov
sergey.prokhorov  11 days ago
I think at least in <team name> when we want to trace some function calls in a test we just mock this function with passthrough option and then check meck:history. What kinds of advantages would we get by using snabbkafe instead?

dmitry.fedoseev  11 days ago
it evolved from the approach that you mentioned. except you don't need to reinvent history analysis primitives over and over again, and, by and large, you don't need meck.

dmitry.fedoseev  11 days ago
in order to troubleshoot your code, you look at the logs. the core idea is that the testcases can do it for you.

dmitry.fedoseev  11 days ago
...I deliberately chose not to use meck or any kind of code introspection and rely entirely on the structured log messages instead. this makes trace specifications independent of the internal implementation and less fragile
но он же инвазивный этот метод. Programmer manually instruments the code with trace points -  может правильнее было привязаться к шатным средствам трассировки?
источник

ИИ

Иванов Иванов... in ErlangRus
Sergey Prokhorov
sergey.prokhorov  11 days ago
I think at least in <team name> when we want to trace some function calls in a test we just mock this function with passthrough option and then check meck:history. What kinds of advantages would we get by using snabbkafe instead?

dmitry.fedoseev  11 days ago
it evolved from the approach that you mentioned. except you don't need to reinvent history analysis primitives over and over again, and, by and large, you don't need meck.

dmitry.fedoseev  11 days ago
in order to troubleshoot your code, you look at the logs. the core idea is that the testcases can do it for you.

dmitry.fedoseev  11 days ago
...I deliberately chose not to use meck or any kind of code introspection and rely entirely on the structured log messages instead. this makes trace specifications independent of the internal implementation and less fragile
(жалуются что у них нет денег на развитие beam а сами вот чо делают. всякие тулзы пишут)
источник

V

Vasilii Demidenok in ErlangRus
эмм.. причем тут Кларна и Erlang/Otp команда?
источник

ИИ

Иванов Иванов... in ErlangRus
Vasilii Demidenok
эмм.. причем тут Кларна и Erlang/Otp команда?
а это не одно и тоже? тогда сорян
источник

SP

Sergey Prokhorov in ErlangRus
Нет =)
источник

SB

S B in ErlangRus
смотрю опенсоурсные проекты на Эрланге, чтоб понять как примерно выглядит трушный проект. можете объяснить для чего вот это используют:
источник

SB

S B in ErlangRus
-ifdef(namespaced_types).
-record(buf, {type = undefined :: undefined | stack | queue | keep_old | {mod, module()},
             max = undefined :: undefined | max(),
             size = 0 :: non_neg_integer(),
             drop = 0 :: drop(),
             data = undefined :: undefined | queue:queue() | list()}).
-else.
-record(buf, {type = undefined :: undefined | stack | queue | keep_old | {mod, module()},
             max = undefined :: undefined | max(),
             size = 0 :: non_neg_integer(),
             drop = 0 :: drop(),
             data = undefined :: undefined | queue() | list()}).
-endif.
источник

SB

S B in ErlangRus
что дает полный путь к типу с точки зрения диалайзера / эдока?
источник

SB

S B in ErlangRus
источник

V

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

V

Vasilii Demidenok in ErlangRus
т.е. переопределить queue() например
источник

ИИ

Иванов Иванов... in ErlangRus
S B
смотрю опенсоурсные проекты на Эрланге, чтоб понять как примерно выглядит трушный проект. можете объяснить для чего вот это используют:
а это трушный проект?
источник

SB

S B in ErlangRus
Иванов Иванов
а это трушный проект?
это то, на что щедро рассыпаны ссылки в разных ламповых блогах людей, которые контрибьютили в ребар3 и такого рода проекты, а также работали в Хероку. как по мне, звучит достаточно неплохо, чтобы по крайней мере познакомиться с их работами.
источник

SB

S B in ErlangRus
Vasilii Demidenok
т.е. переопределить queue() например
я не понимаю как это выглядело бы. как это называется, что в документации на Эрланг смотреть?
источник

ММ

Михаил Малюк... in ErlangRus
Иванов Иванов
а это трушный проект?
это как бы реп хеберта. если не он, то кто?
источник

V

Vasilii Demidenok in ErlangRus
S B
я не понимаю как это выглядело бы. как это называется, что в документации на Эрланг смотреть?
судя по rebar_config это для старых версий эрланга
источник

V

Vasilii Demidenok in ErlangRus
т.е. в разных версиях эрла, были по-разному немного определены типы. Если бы это было в hrl файле, я бы предположил что подобные трюки идут для различных видов сборки
источник