@proelixir

Страница 840 из 1045
Evgeny
26.12.2017
13:40:55
все больше и больше ассоциаций с кофескриптом. :)

не туда вставил перевод строки и все поломалося :)

Anatoliy Kovalchuk
26.12.2017
13:41:30
Ты о чем?

Nikita
26.12.2017
13:41:31
sum(A,B) -> A + B. и фсё

Google
Alexey
26.12.2017
13:41:45
простые ф-ции будут названы просто, зачем тебе по ним носиться?

тем более они тут же будут

зато потом, когда их станет много, ты их просто вынесешь в другой модуль

Evgeny
26.12.2017
13:42:08
зачем их вообще выносить, если они занимают 10 символов?

Alexey
26.12.2017
13:42:08
по каким-то критериям

потому что код развивается

сегодня 10, завтра 100

Evgeny
26.12.2017
13:42:40
это не будет развиваться, я гарантирую это

то что развивается заранее бьется на модули и функции

Alexey
26.12.2017
13:42:53
тогда .()

тебе же оставили такую возможность, просто показывают что это не очень

и что не надо так)

Evgeny
26.12.2017
13:43:27
а, ты все еще про анонимки в пайпе, а я про генераторы :D

Google
Alexey
26.12.2017
13:43:38
ну так там тоже самое

for a <- FirstService.call, b <- SecondService.call, do: Processing.call(a, b) defmodule Processing do def call(10, _), do: ... def call(20, value), do: ... end

и тд

просто сколько приходилось видить for'ы, обычно в них стараются впихнуть не впихуемое

а потом еще и развивают там же

Evgeny
26.12.2017
13:44:35
там все гораздо проще, просто дербанится некая структура данных, которая никогда за пределы данного модуля не вылезет

ладно, забили, это вкусовщина

кстати, такой вариант выглядит неплохо. на нем и остановлюсь for a <- FirstService.call, b <- SecondService.call, do: Processing.call(a, b)

лучше, чем for a <- FirstService.call, b <- SecondService.call do Processing.call(a, b) end

sum(A,B) -> A + B. и фсё
А вот это что такое?

Nikita
26.12.2017
13:56:48
это эрланг :)

Evgeny
26.12.2017
13:57:37
изверг

я уже хотел обрадоваться...

Taras ?
26.12.2017
14:10:36
тю) вынести отдельно функции в эрланг-модуль и радоваться

Vladimir
26.12.2017
14:13:03
наверное можно макрос написать, чтобы задавать функцию в стиле Эрланга)

Vladimir
26.12.2017
14:17:48
хорошо что нельзя наоборот

Evgeny
26.12.2017
14:44:54
тю) вынести отдельно функции в эрланг-модуль и радоваться
и что? mix и phoenix hot reload этот модуль успешно подцепят?

Andrey
26.12.2017
15:09:58
не вижу причин почему не смогут

Evgeny
26.12.2017
15:17:57
Как сделать так, чтобы супервизор рестартовал подохший генсервер с последним стейтом?

или это уже забота самого генсервера?

Google
Andrey
26.12.2017
15:22:51
в общем случае супервизор не должен заниматься состоянием GS, он может знать только начально, но не произвольное

Taras ?
26.12.2017
15:23:38
и что? mix и phoenix hot reload этот модуль успешно подцепят?
вроде не должно быть проблем можно дергать эрланг с эликсира и эликсир с эрланга

Vladimir
26.12.2017
15:44:05
Evgeny
26.12.2017
15:44:43
при релоаде генсервера стейт сохраняется

я подумал может есть штатные средства

значит генсервер сам должен держать свой стейт например в ETS и загружать его при старте

Vladimir
26.12.2017
15:45:31
релоад кода не равно падению и рестарту генсервера от ексепшена

Evgeny
26.12.2017
15:45:48
спасибо Капитан Очевидность :D

кстати, когда супервизор ловит сигнал о гибели генсервера, то в этот момент генсервер еще жив? Или его состояние неведомо

я к тому, можно ли извлечь его стейт пока оно не подохло совсем?

короче, насколько я понял, вполне возможно написать некое расширение генсервера, который будет перехватывать эксепшены, писать стейт в ETS и только после этого умирать в жутких мучениях

Dmitry
26.12.2017
17:07:16
Почему я за полтора года ни разу не столкнулся с вышеназванными проблемами?

Dmitry
26.12.2017
17:07:28
А хрен его знает

Я наверное программирую что-то не то

Evgeny
26.12.2017
18:01:18
Я наверное программирую что-то не то
а может это я неправильный и делаю неправильный код.

Alexander
26.12.2017
18:21:31
Вообще смысл let it crash в том, что состояние скорее всего поломалось, и запуск заново с начальным, которое вероятно хорошее - самый простой вариант

Как ребут компа

Так что не надо, наверное, сохранять состояние, в общем случае

Ilja
26.12.2017
18:51:15
Есть хорошо описанный подход под названием Stash.

Надо сохранять.

Google
Ilja
26.12.2017
18:52:04
У генсервера есть возможность выполнить сохранение перед тем, как он будет остановлен в соответствии со стратегией супервизора.

При старте ему в инит передаётся адрес стэша, у которого он это состояние получает. А перед смертью туда отправляет.

Но таких генсерверов сравнительно немного; больше stateless, которым стэш не нужен.

Alex
26.12.2017
18:53:57
http://erlang.org/download/armstrong_thesis_2003.pdf

Admin
ERROR: S client not available

Ilja
26.12.2017
18:59:16
?

https://forums.pragprog.com/forums/322/topics/11977

Меня вот больше другой вопрос волнует: когда воркер падает - куда девается его мэйлбокс? Что с этим делать?

Ilja
26.12.2017
19:18:44
Необязательно. Может быть, просто некорректное сообщение пришло, а состояние надо сохранить. Новое состояние возвращается в результате обработки сообщения. Если обработка не завершилась - с чего ему портиться? То есть, разные ситуации бывают, конечно...

Alex
26.12.2017
20:34:56
и ничего с этим не поделать

следовательно, в мейлбоксе ничего важного задерживаться не должно

Yuri
26.12.2017
22:35:39
Есть тупой вопрос, как из [%{name: "name"}, %{body: "body"}] сделать нормальный мап %{name: "name", body: "body"}

Dmitry
26.12.2017
22:44:13
iex(3)> [%{name: "name"}, %{body: "body"}] |> Enum.reduce(%{}, fn a, e -> Map.merge(a,e) end) %{body: "body", name: "name"}

[%{name: "name"}, %{body: "body"}] |> Enum.reduce(&Map.merge(&1, &2))или так, если короче и непонятнее

Evgeny
27.12.2017
08:31:46
Необязательно. Может быть, просто некорректное сообщение пришло, а состояние надо сохранить. Новое состояние возвращается в результате обработки сообщения. Если обработка не завершилась - с чего ему портиться? То есть, разные ситуации бывают, конечно...
Вот именно. По мне, чаще всего так и происходит. Мне вообще этот let it crash кажется какой-то странной концепцией. Один процес рухнул и остальные которые ждут от него ответа тоже рушатся и так валится полдерева. Потом супервизоры все рестартуют с нулевыми стейтами. Охуенная тактика если ваша система примитивна как труба. А если чуть посложнее, один хер придется сохранять состояние системы где-то в БД.

Vladimir
27.12.2017
08:38:58
let it crash божественнен

если в gen_server есть какое-то ценное состояние которое не хочется терять после падения, значит это состояние должно лежать в другом месте

Google
Alex
27.12.2017
08:39:59
+1

Alexander
27.12.2017
08:41:06
концепция лет ит креш сама по себе не является чем-то новым, даже самый зассанный питонячий скрипт за супервизором уже даст те же ощущения. В эликсире летит креш от эрланга, когда довольно ветвистый монолит может потерять терять части и не падать весь.

в случае микросервиса на эликсире, лет ит креш - просто нож в спину

Alex
27.12.2017
08:43:03
ты же решил эту проблему )

Alexander
27.12.2017
08:43:13
костылем

к которому эликсир не имеет отношения вообще

рядом с церковью Свидетелей святого пайпа есть еще небольшой сарай с теми кто верит в лет ит креш

Vladimir
27.12.2017
08:44:44
=)

а когда из-за него могут быть проблемы?

Пока нет в голове такой ситуации

Alexander
27.12.2017
08:45:28
я прошел все стадии, и пайп и лет ит креш и микросервисы и апи на эликсире, а фронт на %модныйjsфреймворк%

а когда из-за него могут быть проблемы?
апи, идет случка с аптекой, в которой фармацевт поймал интернет вешалкой стоя на табурете. И тут у тебя лет ит креш. Стрим захлебнулся, аптека ушла в луп, фармацевт навернулся с табуретки

Evgeny
27.12.2017
08:47:48
а когда из-за него могут быть проблемы?
когда восстановление процесса с начальным стейтом абсолютно бесполезно

Vladimir
27.12.2017
08:49:20
апи, идет случка с аптекой, в которой фармацевт поймал интернет вешалкой стоя на табурете. И тут у тебя лет ит креш. Стрим захлебнулся, аптека ушла в луп, фармацевт навернулся с табуретки
так, а альтернатива какова? Допустим стрим весьма ценнен и нельзя терять сокет, значит сокетом владеет один процесс, а принимает данные другой.

Страница 840 из 1045