Size: a a a

2021 May 21

DF

Denis Fakhrtdinov in pro.elixir
> ** (ArgumentError) cannot pipe something into an anonymous function without calling the function; use something like (fn ... end).() or define the anonymous function as a regular private function
источник

DF

Denis Fakhrtdinov in pro.elixir
Просто фейспалм.
источник

Е

Евгений in pro.elixir
Почему фейспалм?
источник

Е

Евгений in pro.elixir
Все таки нет неоднозначностей? :))))
источник

Е

Евгений in pro.elixir
Просто они заставляют писать .(), хотя технически он не нужен. Видимо ради единообразия
источник

A ß in pro.elixir
потому что сначала придумали оператор .() для вызова анонимных функций, потом заставили использовать его в пайпах, а потом добавили сахар для него)
источник

DF

Denis Fakhrtdinov in pro.elixir
Потому что шаг в сторону — расстрел.
источник

DF

Denis Fakhrtdinov in pro.elixir
Сахар плавится и течет.
источник

ВК

Василий Кузнецов... in pro.elixir
Не очень понял о каких вызовах речь.  Если об обработке комманд поступающих по сокету на бэкенд то не должно ничего теряться. Если речь о перезагрузке страницы, или другом http запросе то да, сокет будет заново создан.
источник

Е

Евгений in pro.elixir
Извращенцы :)
источник

LL

Lama Lover in pro.elixir
|> Macro.to_string |> Code.format_string! |> IO.puts
источник

DA

Denis Afonin in pro.elixir
там вообще websocket-ы прикручены в виде костыля, например plug-и просто пропускаются. И доступ к содержимому Plug.Conn там максимально обрезан, можно, фактически, получить лишь url да params, даже печенек не дают. Так что да, тут либо перегруженный Plug.Session с прибитым гвоздями conn.params["_csrf_token"], либо передавать токен  в виде пути через socket "/sock/:token", …; больше вариантов я пока не нашёл. Что ж, существование есть страдание (с).
источник

DA

Denis Afonin in pro.elixir
вот в 2014 году обсуждали этот вопрос: https://github.com/phoenixframework/phoenix/issues/218
источник

EV

Eugene Vasiliev in pro.elixir
так, пжди, а зачем он тебе?
источник

EV

Eugene Vasiliev in pro.elixir
в смысле, csrf токен
источник

DA

Denis Afonin in pro.elixir
без него в websocket-ах не получить доступа к Plug-вской сессии, то бишь вообще никак. Там всё очень жёстко в коде, настолько жёстко, что даже немного наводит на паранойю (phoenix/lib/phoenix/socket/transport.ex):
  def connect_info(conn, endpoint, keys) do
   for key <- keys, into: %{} do
     case key do

       {:session, {key, store, store_config}} ->
         conn = Plug.Conn.fetch_cookies(conn)

         with csrf_token when is_binary(csrf_token) <- conn.params["_csrf_token"],
источник

DA

Denis Afonin in pro.elixir
а так-то да, хороший вопрос. Насмотревшись на подобный код, хочется выкинуть эти сессии куда подальше и нагородить своё через uri path
источник

EV

Eugene Vasiliev in pro.elixir
а че у тебя такого хитрого в плаговской сессии сложено?
источник

DA

Denis Afonin in pro.elixir
да пока ничего, собственно я и обхожусь вариантом с uri path, но хотелось всё же докопаться до дна в этом вопросе и расставить все точки над i
источник

DA

Denis Afonin in pro.elixir
вообще, мне всего-то надо передать свой токен с гостовской криптографией
источник