Size: a a a

2020 March 05

ŹR

Źmićer Rubinštejn in pro.elixir
Просто как вы себе представляете неблокирующий сокет?
источник

SM

Sergei Maximov in pro.elixir
Źmićer Rubinštejn
Где он блокирует то?
handle_cast({:start, state}, state) безусловно вызывает accept, accept безусловно вызывает loop_accept, который безусловно вызывает сам себя, в результате handle_cast для {:start, ...} вообще не возвращает свой {:noreply, []}
источник

SM

Sergei Maximov in pro.elixir
Źmićer Rubinštejn
Просто как вы себе представляете неблокирующий сокет?
Я говорил про неблокирующий сервер
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Sergei Maximov
handle_cast({:start, state}, state) безусловно вызывает accept, accept безусловно вызывает loop_accept, который безусловно вызывает сам себя, в результате handle_cast для {:start, ...} вообще не возвращает свой {:noreply, []}
По другому не сделаешь, и смысла нету
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Хотя есть конечно смысл
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну надо самому себе заново посылать start сообщение
источник

ŹR

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

ŹR

Źmićer Rubinštejn in pro.elixir
Меняется за 1 секунду
источник

SM

Sergei Maximov in pro.elixir
Źmićer Rubinštejn
По другому не сделаешь, и смысла нету
Сделаешь, конечно, и смысл есть, но надо делать по-другому
источник

SM

Sergei Maximov in pro.elixir
Pïg Grëënëst
это уже какие-то advanced приседания, но зачем?
В данном случае — потому что могу, но если бы процесс был бы именованный, то могли бы возникать гонки
источник

SM

Sergei Maximov in pro.elixir
Так что лучше писать по-нормальному, если есть возможность
источник

DS

D & S in pro.elixir
Раньше вместо рекурсивного вызова я посылал селф сообщение, но смысл тот же
источник

ŹR

Źmićer Rubinštejn in pro.elixir
D & S
Раньше вместо рекурсивного вызова я посылал селф сообщение, но смысл тот же
Как раз в этом вся разница
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Твой рекурсивный вызов никогда не сможет получить сообщение stop например. А вот если ты будешь сам себе в очередь посылать, то в какой-то момент очередь дойдет и до stop и ты выдешь
источник

LL

Lama Lover in pro.elixir
Структура модулей:
Все модули в приложении должны лежать в ./lib/{app_name}/ и называться AppName.{module name here}

Внешний вид кода:
Однострочные функции (которые def f(x), do: ) делаются однострочными, когда возвращают одно значение или делают что-то очевидное. Практически всегда лучше выносить в do end
Нет слова deregister, есть unregister

Elixir:
- В функции ./lib/broadcaster.ex:33 лучше написать фильтр не через != а через паттернматчинг
- В ./lib/client.ex:9 лучше использовать handle_continue
- В ./lib/client.ex:31 неочевидно используешь пайпы. Лучше было бы если read_line возвращал {:ok, value} | {:error, reason}. То же самое в write_line
- В ./lib/client.ex генсервер слишком часто шлёт себе сообщения - это плохо. Например, ./lib/client.ex:46 не исполнится, пока не закончится serve
 Сообщения, которые попадают в генсервер кладутся в его личную очередь сообщений и не вынимаются из неё пока генсервер не закончит handle
- В ./lib/telnet_chat.ex:16 вызов каста никогда не закончится и сервер не будет обрабатывать сообщения. В accept вызывается loop, которая исполняется рекурсивно
- В ./lib/telnet_chat.ex:10 лучше использовать handle_continue
- В ./lib/telnet_chat.ex вообще большая ошибка. Переписать

Тесты:
Их нет(
источник

SM

Sergei Maximov in pro.elixir
Sergei Maximov
Так что лучше писать по-нормальному, если есть возможность
Плюс есть отдельные случаи, когда только так приседать и надо, см: https://ninenines.eu/docs/en/ranch/1.6/guide/protocols/
источник

B

Bogdan in pro.elixir
Lama Lover
Я просто буду тут, пока ты не скинешь в чат полностью функционирующий браузер, за которым не стоит корпорация
Brave корпорация ?
источник

Z

Zae in pro.elixir
брейв на хромиуме ж
источник

LL

Lama Lover in pro.elixir
Bogdan
Brave корпорация ?
Brave на хромиуме и под мозиллой
источник

МБ

Максим Барулин in pro.elixir
ладно, раз уж речь про браузвери, то есть ещё вивальди
источник