Size: a a a

2020 November 04

LL

Lama Lover in pro.elixir
А так, я вот сейчас на работе делаю рестовые микросервисы
И мне лично не хватает нормальных вьюх для json, какой-нибудь встроенной системы версионирования API, встроенной нормальной документации API типа swagger
источник

LL

Lama Lover in pro.elixir
Ihor Katkov
что-то opionated с нормальным DI
Так DI это вообще древняя проблема в elixir. Из-за модульного эрланга это всё сложно реализовать, по-моему
Хотя в эрланге есть нормальные моки...
источник

LL

Lama Lover in pro.elixir
Вот у  @nwalker был поинт по поводу того, что репо в проектах использующих Ecto практически всегда захардкожен, а оперировать с Ecto.Multi не всегда удобно
Поэтому выделять bounded context не так удобно, как могло бы быть
источник

T

Tharin in pro.elixir
Lama Lover
Так DI это вообще древняя проблема в elixir. Из-за модульного эрланга это всё сложно реализовать, по-моему
Хотя в эрланге есть нормальные моки...
Ну в плане? DI через модульные атрибуты. Через function passing и module passing. Есть же ещё Mox, который на поведениях.
источник

T

Tharin in pro.elixir
Не самое удобное, да, но где тут проблемы?
источник

LL

Lama Lover in pro.elixir
Tharin
Ну в плане? DI через модульные атрибуты. Через function passing и module passing. Есть же ещё Mox, который на поведениях.
Через аттрибуты это практически костыль
Через function passing и module passing это будет производиться в рантайме, что будет менее эффективно чем прямой вызов подставленного модуля в компайле
источник

LL

Lama Lover in pro.elixir
У Mox-а тоже есть проблемы. Например, вызовы локальных функций без указания модуля никак не мокируются
источник

T

Tharin in pro.elixir
Lama Lover
Через аттрибуты это практически костыль
Через function passing и module passing это будет производиться в рантайме, что будет менее эффективно чем прямой вызов подставленного модуля в компайле
Ну так DI же ещё и про динамическое изменение поведения. Так или иначе надо что-то в рантайме делать
источник

T

Tharin in pro.elixir
Иногда.
источник

T

Tharin in pro.elixir
Lama Lover
У Mox-а тоже есть проблемы. Например, вызовы локальных функций без указания модуля никак не мокируются
Воу, не сталкивался
источник

LL

Lama Lover in pro.elixir
Ну кароче проблемы всё те же. В рантайме эрланг довольно функциональный и иммутабельный с нормальными контекстами переменных и замыканиями

А в компайле из-за модульности он жутко нечистый
Поэтому подменить модуль можно только сразу на всей ноде, но никак не для одного процесса, что сильно увеличивает количество проблем...
источник

DF

Denis Fakhrtdinov in pro.elixir
(по-моему это сильно уменьшает количество проблем)
источник

T

Tharin in pro.elixir
Lama Lover
Ну кароче проблемы всё те же. В рантайме эрланг довольно функциональный и иммутабельный с нормальными контекстами переменных и замыканиями

А в компайле из-за модульности он жутко нечистый
Поэтому подменить модуль можно только сразу на всей ноде, но никак не для одного процесса, что сильно увеличивает количество проблем...
Да одного процесса, вроде, Mox тоже позволяет. Так или иначе - в чем проблема для одного процесса Module passing сделать? Так или иначе ты в компайле не разрулишь это, пока процесса нет. Или я тебя не очень понял?
источник

LL

Lama Lover in pro.elixir
Tharin
Да одного процесса, вроде, Mox тоже позволяет. Так или иначе - в чем проблема для одного процесса Module passing сделать? Так или иначе ты в компайле не разрулишь это, пока процесса нет. Или я тебя не очень понял?
Module passing увеличивает время вызова каждой функции в 6 раз
Типа apply всегда работает в 6 раз дольше чем вызов локальной функции
источник

LL

Lama Lover in pro.elixir
(или в 4 раза)
источник

LL

Lama Lover in pro.elixir
Для вызова функции это не большое увеличение времени, но всё-таки зачем жертвовать производительностью, когда ей можно не жертвовать
источник

DF

Denis Fakhrtdinov in pro.elixir
Оно же увеличивает тайминг самой операции вызова, а не время выполнения функции.
источник

DF

Denis Fakhrtdinov in pro.elixir
Это даже не спички, а щепочки.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Оно же увеличивает тайминг самой операции вызова, а не время выполнения функции.
Да
источник

LL

Lama Lover in pro.elixir
Но всё-таки, можно обойтись даже без этого увеличения времени вызова
источник