Size: a a a

2019 September 09

VS

Vladimir Sekisov in pro.elixir
определите структуру семинара в виде процессов:
- менеджер семинара
- процессы пользователей
- монитор процессов пользователей
- состояние семинара - процесс или ETS
- регистрируйте всех через Registry или ему подобный
- поставьте всех под supervision tree для семинара

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

VI

Victor Ivanov in pro.elixir
ммм, не не, все, что связанно с самим бизнесом, хендлит rails app. У феникса тут сугубо техническая роль – обеспечивать стриминг логов со всех клиентов в PaperTrail (реализовано) и следить за зрителями (на стороне клиента уже реализовано PhoenixPresence). Нужно только выполнять некие действия с базой рельсов, когда зритель открывае таб / закрывает таб. Так как отследить нормально убийство канала из процесса самого канала невозможно, то есть вот такой внешний процесс, который подписан на презенс_дифф и что-то там считает.  

Сухая выжимка вопроса тогда такая: нужно ли делать динамические процессы на каждый семинар (чтоб если процесс упал, то это затронуло бы только зрителей этого канала) или это ненужный шаг, если не известно, будет ли там вообще что-то падать.

Еще немного контекста: сама контора чисто рельсовая, на эликсире там пока никто не пишет (хотя core бизнес  –вебинары – там очень хорошо бы с эликсиром пошел), и эта феникс аппа там последний раз запускалась в апреле. Это чтоб было примерно понятно, какие пожелания к мейнтененсу (другими словами – желательно, чтоб его не было вообще)
источник

VS

Vladimir Sekisov in pro.elixir
если один семинар упадет, то с той же вероятностью упадут и другие, они в той же среде находятся,
так что как аргумент для распараллеливания этот вряд ли годится.
Посмотрите для начала насколько логичнее и проще будет тот или другой вариант
источник

VS

Vladimir Sekisov in pro.elixir
С учетом, что на процессах лучше не экономить
источник

AR

Anton Rich in pro.elixir
Ivan 🍻
И можно ещё вопрос - стоит ли начинать изучать эрланг и потом сахар эликсира или можно сразу с эликсира, порог вхождения одинаковый? Я просто ищу яп чтобы поиграться с функциональщиной, после небольшого обзора популярных фяп, остановился на следующих кандидатах - Lisp (Clojure), Haskell, Erlang/Elixir. Лисп не хочется ибо скобочки, хаскель имеет очень странный синтаксис, эрланг понравился своей простой, а эликсир ещё больше своей сахарностью. Мб я что-то упускаю, с чего начинать копать (разделы матана - линейного и функционального программирования изучены), хочется уже применить знания на реальных проектах
Мне кажется наоборот. Синтаксис в Хаскелле ну очень простой.
источник

VI

Victor Ivanov in pro.elixir
> насколько логичнее и проще будет тот или другой вариант

вариант с одним процессом естественно проще, да и как бы сами падения не настолько критичны, это службная инфа, если она пропадет, зрителям все равно от этого не жарко, не холодно – даже нам самим эти дубли про второй джоин в БД не особо критичны

Аргумент про то, что если упадет один семинар, то могут упасть и другие – вот тут я действительно задумался. Там в коде по сути только парсинг/апдейт мапов и запись в БД. И если у БД проблемы, то скорее всего действительно упадут все, кто пытается в нее сейчас инсертить что-то
источник

AF

Andrey Fadeev in pro.elixir
Но падение может быть вызвано не чем-то общим для всех процессов, типа базы, а чем-то частным, типа действий клиента или свойств семинара. Тогда разделение даст некоторую изоляцию.
источник

AF

Andrey Fadeev in pro.elixir
Кстати, быть может будет проще иметь по процессу на зрителя, а не на семинар. По крайней мере не придётся искать семинары в registry, стартовать, регистрировать их и вот это всё.
источник

VI

Victor Ivanov in pro.elixir
я в оригинальном посте написал, почему нужен внешний процесс. Процесс на зрителя был бы вообще не нужен, у нас же есть channel process

> ем-то частным, типа действий клиента или свойств семинара.
Это вряд ли, этот внешний процесс слушает только презенс_дифф, сам семинары целиком ответственность рельс. Так что мне кажется, они абсолютно одинаковы должны выглядеть все
источник

AF

Andrey Fadeev in pro.elixir
Ок, я имел виду по процессу на channel process.
источник

VI

Victor Ivanov in pro.elixir
А, понял. Ну да, это было бы идеально, но Крис сам писал, что с одним процессом надёжно сделать не получится
источник

YT

Yauheni Tsiarokhin in pro.elixir
привет
может кто подскажет
у меня есть релиз
в нем все апликейшны указаны как перманентные
но при этом елси апликейшн падает в ините то релиз не падает
есть идеи?
источник

Z

Zae in pro.elixir
привет, я пытаюсь воткнуть либу money в Ecto, наткнулся на ишью связанный с этим и там запостили вот этот фикс: https://github.com/elixirmoney/money/issues/65#issuecomment-299425697
куда мне нужно вставлять этот кусок кода?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В новый файл
источник

Z

Zae in pro.elixir
Źmićer Rubinštejn
В новый файл
просто рядом в проекте положить?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
да
источник

Z

Zae in pro.elixir
и получается cast вызывать из этого модуля?
источник

Z

Zae in pro.elixir
а не из репо
источник

ŹR

Źmićer Rubinštejn in pro.elixir
cast вызывать из репы
источник

Z

Zae in pro.elixir
а этот модуль тогда где использовать? я его положил рядом но чет ничего не меняется
источник