Size: a a a

2020 February 18

AB

Alexey Bolshakov in pro.elixir
а как же:

- поиск виноватых
- наказание невиновных
- награждение непричастных
источник

A

A1exey Lopatin in pro.elixir
Запускаю один и тот же генсервер с двумя разными именами (мне нужно два одинаковых).

Supervisor tree:
children = [
...
{App.Genserver, [:first_name]},
{App.Genserver, [:second_name]},
...
]
````

Genserver:

def start_link(name \\ nil) do
  GenServer.start_link(MODULE, %{}, nil, name: name)
end


Получаю:

returned an error: bad child specification, more than one child specification has the id: App.Genserver
```
Как правильно в supervisor tree запустить?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
A1exey Lopatin
Запускаю один и тот же генсервер с двумя разными именами (мне нужно два одинаковых).

Supervisor tree:
children = [
...
{App.Genserver, [:first_name]},
{App.Genserver, [:second_name]},
...
]
````

Genserver:

def start_link(name \\ nil) do
  GenServer.start_link(MODULE, %{}, nil, name: name)
end


Получаю:

returned an error: bad child specification, more than one child specification has the id: App.Genserver
```
Как правильно в supervisor tree запустить?
источник

A

A1exey Lopatin in pro.elixir
Supervisor.child_spec({App.Genserver}, :first_name},
Supervisor.child_spec({App.Genserver}, :second_name}

так, получается?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
A1exey Lopatin
Supervisor.child_spec({App.Genserver}, :first_name},
Supervisor.child_spec({App.Genserver}, :second_name}

так, получается?
Сработало?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Тебя не смущает что на одну { у тебя две }
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот ещё такая фраза в доке есть

This function is often used to set an :id option when the same module needs to be started multiple times in the supervision tree:
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В твоём коде где написано слово :id?
источник

P

Pavel in pro.elixir
Vsevolod Avramov
Ну вот смотри.. Есть Registry https://hexdocs.pm/elixir/Registry.html
Там можно добавить Listeners: https://hexdocs.pm/elixir/Registry.html#start_link/1
:listeners - a list of named processes which are notified of :register and :unregister events. The registered process must be monitored by the listener if the listener wants to be notified if the registered process crashes. 

Но чота у меня :unregister эвент не хэндлится нифига. Думаю ЧЯДНТ
Ну тебе же тут пишут прямо. Вставляешь Process.monitor/1 и ловишь DOWN сообщения и будетрадомть
источник

A

A1exey Lopatin in pro.elixir
```
Supervisor.child_spec({App.Genserver}, id: {App.Genserver, :first_name}),
Supervisor.child_spec({App.Genserver}, id: {App.Genserver,:second_name}
)
```
так тоже не работает.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Чет плохо у тебя с pattern matching ом в голове.

В примере в первом тупле 2 элемента - почему у тебя один то?

Supervisor.child_spec({App.Genserver, :first_name}, id: {App.Genserver, :first_name})
источник

LL

Lama Lover in pro.elixir
А, @A1ex_L сразу в два чата написал
источник

AS

Alex Sok in pro.elixir
:)
В одном готовый ответ, в другом надо думать. Что выберет?)
источник

A

A1exey Lopatin in pro.elixir
Ответы друг друга дополняют. Спасибо, попонятней стало. )
источник

IK

Ihor Katkov in pro.elixir
Lama Lover
Лично был свидетелем, где клиентам предложили перейти на новую версию продукта с урезанным функционалом, но с
1) большей производительностью
2) большей дружелюбностью к пользователю
3) современным UI

И все клиенты согласились, а древнее легаси быстро и тихо забыли.
Если что, я говорю, про Qt приложение, где была поддержка версий от WinXP до Win10
В этом суть. Это не переписанный старый продукт, а новый продукт
источник

LL

Lama Lover in pro.elixir
Ihor Katkov
В этом суть. Это не переписанный старый продукт, а новый продукт
Ахах, ты прав
источник

S

Shelest HR in pro.elixir
#вакансия #Elixir #фултайм
Добрый день, товарищи!
Мы продолжаем расширяться.

Коротко что по ссылке:
Фултайм, офис в Мск и Спб или удаленка, от джуна2мидл до сеньора, от 100к до 220к net
Сейчас в команде бэка есть несколько вакантных мест.
Будут вопросы и уточнения - пишите в лс.

https://docs.google.com/document/d/1Dxzb4jPapsjhL570XHhD4GH9_m0LqUyPlng6wzrHWKg
источник

A

A1exey Lopatin in pro.elixir
Оба варианта

```
Supervisor
.child_spec({App.Genserver, :first_name}, id: {App.Genserver, :first_name})

%{id: first_name, start: {App.GenServer, :start_link, [:first_name]}}
```


выдают, что 
function
GenServer.start_link/4 is undefined or private
GenServer.start_link(App.Genserver, %{}, nil, [name: :first_name])
источник

LL

Lama Lover in pro.elixir
A1exey Lopatin
Оба варианта

```
Supervisor
.child_spec({App.Genserver, :first_name}, id: {App.Genserver, :first_name})

%{id: first_name, start: {App.GenServer, :start_link, [:first_name]}}
```


выдают, что 
function
GenServer.start_link/4 is undefined or private
GenServer.start_link(App.Genserver, %{}, nil, [name: :first_name])
Давай вместе прочитаем ошибку. GenServer.start_link/4 is undefined or private
Это значит, что не существует функции GenServer.start_link от четырёх аргументов - это правда. Давай посмотрим как ты её вызываешь
GenServer.start_link(App.Genserver, %{}, nil, [name: :first_name]) - первый аргумент - модуль, второй аргумент - инициализирующий, последний аргумент - опции, а что такое nil третьим аргументом? Я не знаю.
Очевидное решение: убери nil в функции App.GenServer.start_link
источник

P

Pavel in pro.elixir
`
источник