Size: a a a

Эликсир и Вунш

2018 February 01

DS

Dmitry Shpagin in Эликсир и Вунш
а пропустить его при вызове нельзя, и соотвественно выходит указывать по именам аргументы тоже
источник

K

Konstantin in Эликсир и Вунш
ну да. это ж elixir можно все, только потом самомму же и мучиться с этим
источник

DZ

Dmitry Z in Эликсир и Вунш
парни, обнаружил такой момент: первая функция выполняется намного дольше из-за лишнего вызова 'Elixir.Access':get/3:
  def a(elem), do: elem["key"]
 def b(%{"key" => value}), do: value

а может кто-то объяснить, каким образом вторая функция обходится без данного вызова и работает в 2 раза быстрее? может статейка есть какая-нибудь?
источник

K

Konstantin in Эликсир и Вунш
источник

K

Konstantin in Эликсир и Вунш
тут немного есть по этой теме
источник

AD

Artem Denezhny in Эликсир и Вунш
источник

DZ

Dmitry Z in Эликсир и Вунш
Konstantin
тут немного есть по этой теме
ага, то что надо, спасибо
источник

DZ

Dmitry Z in Эликсир и Вунш
да, было бы здорово найти еще статей про оптимизацию, но курс покупать я не хочу
источник

B

Boris in Эликсир и Вунш
Всем привет, вопрос не нащел в доках((( видел где в проектах испол макроса plug с when
источник

AD

Artem Denezhny in Эликсир и Вунш
повторюсь для вас, @dmitry_zhelnin
источник

AD

Artem Denezhny in Эликсир и Вунш
Масштабируемость, отказоустойчивость, надёжность – хотите знать о них больше? Тогда обратите внимание на эту замечательную подборку материалов http://amp.gs/G22o
источник

AD

Artem Denezhny in Эликсир и Вунш
Dmitry Z
да, было бы здорово найти еще статей про оптимизацию, но курс покупать я не хочу
это общая инфа
источник

DS

Dmitry Shpagin in Эликсир и Вунш
Правильно понял? что по производительности функции будут одинаковы в случае использования pattern_matching, т.е.

def a(elem) do
%{"key" => value} = elem
value
end

будет выполняться так же быстро как

  def b(%{"key" => value}), do: value
источник

K

Konstantin in Эликсир и Вунш
почти. там чуть чуть дольше будет
источник

DZ

Dmitry Z in Эликсир и Вунш
Артем, благодарю
источник

B

Boris in Эликсир и Вунш
plug :auth when action in [:edit, :update, :delete] - объяснте пож-ста как работает данная кострукция
источник

B

Boris in Эликсир и Вунш
Это в реализацие макроса plug надо идти смотреть?
источник

DS

Dmitry Shpagin in Эликсир и Вунш
Phoenix?
источник

DS

Dmitry Shpagin in Эликсир и Вунш
plug обрабатывает conn

например по умолчанию pipeline :browser в роутере феникса

 pipeline :browser do
   plug :accepts, ["html"]
   plug :fetch_session
   plug :fetch_flash
   plug :protect_from_forgery
   plug :put_secure_browser_headers
 end


при подключении создается conn, прогоняется в Endpoint'e и отправляется в Router, в роутере видимо лежит plug :auth when action in [:edit, :update, :delete], в plug auth наверное прописано - либо редиректить на страницу авторизации, либо отдавать conn.
when - это guard, он определяет когда применять функцию, в данном случае когда action в списке [:edit, :update, :delete]

Занесло меня, короче plug поочередно обрабатывают соединение, кто-то что-то дописывает или удаляет, может и редиректнуть куда нибудь
источник

B

Boris in Эликсир и Вунш
Спасибо, меня смущает сама конструкция. Которая негде не задокументирована, а вдруг там есть еще какие нибудь крутые возможности ))). Все таки plug  это макрос которому передается параметр :auth when action in [:go], а дальше все это гонится в AST и исполняется ... как вы описали
источник