Size: a a a

2018 November 03

ŹR

Źmićer Rubinštejn in pro.elixir
В каждом сраном проекте пишу такие
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Źmićer Rubinštejn
Но от каналов никуда не уйдешь конечно
У меня было без каналов в моём старом frontend-e до proenix-а - опять же, если протокол из фронтенда другой, нежели чем изначально в phoenix-е.... В общем, попробую ради любопытства похакать сегодня, насколько можно имитировать совсем чужой протокол из фронтенда без каналов и прочего в phoenix-е.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
В 1.3 попробую
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Dmitry Russ (Aleksandrov)
У меня было без каналов в моём старом frontend-e до proenix-а - опять же, если протокол из фронтенда другой, нежели чем изначально в phoenix-е.... В общем, попробую ради любопытства похакать сегодня, насколько можно имитировать совсем чужой протокол из фронтенда без каналов и прочего в phoenix-е.
Если фронт без канала - ты его эмулируешь. Делаешь для каждого клиента uniq id и создаешь такой канал
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Позоду должно сработать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну а в фениксе - там все просто
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Т.е. фронт просто соединяется - а ты его сразу запихиваешь в client:%ID% канал
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И внутри модуля ClientCanal вся логика
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот крче самы простой пример
источник

ŹR

Źmićer Rubinštejn in pro.elixir
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но это не 1.4
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Źmićer Rubinštejn
Если фронт без канала - ты его эмулируешь. Делаешь для каждого клиента uniq id и создаешь такой канал
Звучит костыльно, но попробую ради интереса.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Кстати походу это не обязательно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я про привязку к каналу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но тут я хз - помоему это удобно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Źmićer Rubinštejn
Хочу функцию которая идет по листу,  выполняя функцию, до первой ошибки. Если ошибки нет - возвращает {:ok, новый_лист}, если есть - {:error, первая_попавшаяся_ошибка}

И вторая функция - все то-же самое, только доходим до конца листа и собираем все ошибки в список ошибок
Что насчет моих хотелок - неужели это только мне надо было? Может есть либа какая?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
def map_error_first(list, function) do
   map_error_first(list, function, [])
 end

 def map_error_all(list, function) do
   map_error_all(list, function, :ok, [])
 end

 defp map_error_all([], _, status, acc) do
   {status, Enum.reverse(acc)}
 end

 defp map_error_all([elem | list], function, :ok, acc) do
   case function.(elem) do
     {:ok, new_elem} ->
       map_error_all(list, function, :ok, [new_elem | acc])
     {:error, new_elem} ->
       map_error_all(list, function, :error, [new_elem])
   end
 end

 defp map_error_all([elem | list], function, :error, acc) do
   case function.(elem) do
     {:ok, _new_elem} ->
       map_error_all(list, function, :error, acc)
     {:error, new_elem} ->
       map_error_all(list, function, :error, [new_elem | acc])
   end
 end

 defp map_error_first([], _, acc), do: {:ok, Enum.reverse(acc)}

 defp map_error_first([elem | list], function, acc) do
   case function.(elem) do
     {:ok, new_elem} ->
       map_error_first(list, function, [new_elem | acc])
     {:error, error} ->
       {:error, error}
   end
 end
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Во такую фигню хочу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В СТДЛ
источник

IK

Ihor Katkov in pro.elixir
Źmićer Rubinštejn
Во такую фигню хочу
А я хочу нормальные логические функции для пайпинга, вместо Kernel.== и пр
источник