Dmitry
06.03.2018
15:40:59
Это оптимальный вариант
Я уж не говорю о том, что можно вообще использовать просто hackney
Dmitry
06.03.2018
15:43:48
@Virviil Ну так решение заброковали, что вообще tcp-порт открывается, нужно запросы раньше ловить чем в они в hackney уйдут.
Dmitry
06.03.2018
15:48:12
Я думаю что exvcr через макросы останавливает hackney и запускает свой собственный клон hackney, который идёт в tcp только когда обновляет кассеты
Google
Dmitry
06.03.2018
15:48:43
@Virviil Он мокает hackney модуль.
Посмотрел под капотом.
Dmitry
06.03.2018
15:49:40
А я так понял, что проблема была не в том, что кто-то ходит в в интернет, а в том, что для тестов приходится держать все время запущенным мок-сервер
Т.е. решение с другой стороны забраковали
Dmitry
06.03.2018
15:50:25
Можно же http сервер поднимать внутри тестов.
Dmitry
06.03.2018
15:51:00
Ну, ему надо выдавать порт
Dmitry
06.03.2018
15:51:08
Ага.
Dmitry
06.03.2018
15:51:11
Или может ребята до такого не дошли
Azat
06.03.2018
16:06:54
Ну, по крайней мере есть некоторый выбор среди либ
Dmitry
06.03.2018
16:10:06
С tesla - в отличие от HTTPoison / hackney не понятно как со стриминг суппортом, как принимать асинхронно (в особенности чтение больших данных, и декодинга их на лету). @AzatMurtazin У вас синхронные вызовы?
Azat
06.03.2018
16:12:38
Синхронные вроде как, консольная утилита делает свою работу и отправляет результат на сервер
Alex
06.03.2018
18:29:31
А что, появились потоковые парсеры json?
Dmitry
06.03.2018
18:37:22
@nwalker : jsx.
Google
Dmitry
06.03.2018
18:37:38
Мы используем jason для всего и пока jsx для потокового.
abc
07.03.2018
07:11:38
Сталкивались ли вы с такой ошибкой (FunctionClauseError) no function clause matching in :ssl_cipher.hash_algorithm/1 ?
Вроде OTP собран как обычно ошибок не было
А при HTTPoison.get("https://google.com") получаем ошибку
Ох это баг в OTP!
https://bugs.erlang.org/browse/ERL-568
2 дня назад пофиксили. вот он стабильный Erlang )))
Azat
07.03.2018
09:42:31
Этот баг только для hackney или для всех остальных (типа httpc или ibrowse) тоже?
Dmitriy
07.03.2018
09:55:06
Добрый день! Кто-нибудь работал с вебсокетами на фениксе? У меня phoenix без фронта, а просто как апи. Настроил каналы, тесты проходят. Теперь пытаюсь протестировать вебсокеты сторонним клиентом.
В defmodule ChatWeb.Endpoint
socket "/socket", ChatWeb.UserSocket
Запустил локально сервер приложения.
Пробую приконектиться сторонним клиентом по адресу:
ws://localhost:4000/socket
но соединение не проходит. Может там адрес сокета в фениксе другой нужно указывать?
Azat
07.03.2018
10:28:15
вроде такой же порт должен быть
Dmitriy
07.03.2018
10:35:26
оказывается нужен такой путь подключения:
ws://localhost:4000/socket/websocket?token=undefined&vsn=2.0.0
осталось понять в каком виде нужно отправлять само сообщение, и как в нем указывать topic и прочее
Alexey
07.03.2018
10:39:48
Примерно так
Dmitry
07.03.2018
10:41:27
socket/websocket
И после подключения json по дефолту
Но можно что угодно
Можно вообще все везде как угодно
Кроме постфикса websocket в роуте
А ещё у большинства клиентов 1 версия протокола
Google
Dmitry
07.03.2018
10:42:47
А в 1.3 фениксе - вторая
И в Phoenix js все работает
А если самому - то нет
Dmitriy
07.03.2018
10:51:37
видимо действительно клиент использует старую версию протокола. Потому что пробовал и так и эдак
А если самому - то нет
а формат сообщения такой все-таки?
{ "topic":"room:id", "ref":"", "payload":{ }, "event":"event:example" }
Dmitry
07.03.2018
10:55:08
Понятия не имею
Yura
07.03.2018
11:33:42
Гайз, короче такая фигня. Допустим есть список диалогов и к каждому нужно присобачить последнее сообщение. Прелоад ясное дело с лимитом не работает. Пока придумал два варианта: первый - просто на каждый диалог делать запрос, второй - получить весь список идшников диалогов, одним запросом получить всё сообщения и вставить их на своё место. Но мне кажется, это такие дичайшие костыли. Есть какой-то нормальный вариант?
Dmitry
07.03.2018
11:36:17
Чёт вопрос плохой
Vladimir
07.03.2018
11:36:47
Анастасия
07.03.2018
11:36:48
в прелоаде можно делать запрос
Marsel
07.03.2018
11:37:01
джойн кажется нужен
Dmitry
07.03.2018
11:37:01
Чёт список диалогов есть
На бумажке что-ли список
Последнее сообщение нужно присобачить
Но то что оно даже есть - не написано
Анастасия
07.03.2018
11:38:50
https://hexdocs.pm/ecto/Ecto.Query.html#preload/3-preload-queries
Alex
07.03.2018
11:51:00
зачастил народ с вопросами по Elixir, похоже он продвигается в массы
Roman
07.03.2018
12:06:20
в прелоаде лимиты не будут работать
ну т.е. не будут работать так, как нужно
Анастасия
07.03.2018
12:08:11
что значит не будут работать так как нужно
Google
Yura
07.03.2018
12:11:24
Note: keep in mind operations like limit and offset in the preload query will affect the whole result set and not each association.
вот что значит
Анастасия
07.03.2018
12:15:00
ну значит вариант ниже) https://hexdocs.pm/ecto/Ecto.Query.html#preload/3-preload-functions
Dmitriy
07.03.2018
13:37:43
а чтобы развернуть phoenix приложение на сервере (используются только вебсокеты channels), нужно проксировать через nginx?
Admin
Vladimir
07.03.2018
13:56:01
Alexander
07.03.2018
14:05:20
нашёл применение эликсиру: скрипты писать, вместо баша, если надо что-то такое параллельно делать.
взять там мильярд урлов и посмотреть, кто из них имеет <link> rss, например
Alex
07.03.2018
15:49:45
Aldar
07.03.2018
17:27:00
https://www.youtube.com/watch?v=Ko6knKmQ0PI
Dmitry
07.03.2018
19:22:37
Крутой доклад
Aldar
07.03.2018
19:45:19
Про тесты немного несогласен, если апишку пишешь - с тестами все отлично, наверное с hound человек намучался
И про дебаг тоже, дебаг в принципе на уровне в эликсире
Dmitry
07.03.2018
19:46:44
Зачем нужен Pry, если есть tracing в Elixir-е?
Артем
07.03.2018
19:50:30
можно было бы это на живых конференциях включать
Dmitry
07.03.2018
19:54:21
Зачем нужен дебаг впринципе
Не понятно
Да и тестировать апишку легче всего через Postman
Прям идеальная штука дрюка
Google
Dmitry
07.03.2018
19:55:20
С кейсами, сценариями и тыды
Для полной интеграции
Stein
07.03.2018
20:26:42
не нравится постман, постоянно его отрендеренное окошко остается на экране, хотя я его сворачиваю
Dmitry
07.03.2018
20:43:18
Sergey
07.03.2018
21:30:40
есть ещё такой(на Электроне) https://github.com/getinsomnia/insomnia
Alex
07.03.2018
21:35:44
мне вот тоже непонятны все дебаггеры в жрланге, потому что они просто не работают, например, через gen_server:call и прочие ожидания
ну прошел step over ты функцию одну, ок. а для кросс-процессного дебага нужен второй брейкпойнт, а потом на выходе из внутреннего процесса у тебя caller свалится по таймауту
в условиях, не покрываемых одним unit-тестом, дебаггеры просто не работают
Dmitry
07.03.2018
21:45:00
В том-то и дело, что tracing (не дебаггер) прекрасно работает, он не останавливает код, хоть локально, хоть на продакшене. И подобный трейсинг как в Erlang/Elixir достаточно уникальная вещь, которая 1) заменяет полностью (на мой взгляд) дебаг 2) одинакого хорошо работает и при разработке и в продакшене. Поэтому всякие debugger, Pry кажутся достаточно бесполезными штуками в сравнении с тем, что даёт beamVM.
Alex
08.03.2018
04:54:45
да тема интроспекции не раскрыта, видимо потому что ей нет аналогов в других языках, но проблемы, которые она позволяет решать есть у всех. может быть и не все элексирщики пользуются ей, пытаясь по старой привычке натянуть дебаг на свою систему
да и статей на эту тему как то немного, все про аутентификацию, сокеты, каналы, нет чтобы кто-нибудь разразился циклом статей о том как все это интроспектить
Nikolay
08.03.2018
05:46:22
про дебаг я согласен, я приплёл, крч, его просто потому что хз что ещё было ставить в минус эликсиру))
он скорее “другой”, чем “плохой"
но мне надо было седлать типа 3-3… ? я думал сказал что ecto хуже AR, но подумал что это ещё больше вызовет вопросов))