
Sergey
17.12.2017
17:52:26
композиция) но это потом
а еще - раз уж там примеры с животными - может стоило и бабушку Лисков на минималках вспомнить
так вот, повторю вопрос
откуда у тебя возникла делать иерархию глубиной в 3 уровня?

Google

Sergey
17.12.2017
17:53:29
там же по заданию 3 класса с общим предком

╳Click here
17.12.2017
17:54:07
нет, там
A WebDeveloper "is a" Person
A WebDeveloper "is a" ComputerProgrammer
в моей картине мира я наследуюсь от того, в котором больше свойств/реализаций
там это ниже по заданию для методов надо

Sergey
17.12.2017
17:55:36
ну то есть это твоя лазейка в том что нет множественного наследования, понял
сча дай задачку почитаю

╳Click here
17.12.2017
19:00:25

Sergey
17.12.2017
19:01:13
ну так у тебя цепочка должна быть WebProgrammer -> ComputerProgrammer -> Person по условию
там подсказку тебе дают что после вызова parent конструктора надо еще кой чего сделать

╳Click here
17.12.2017
19:01:34
Da

Oscarhandsome
17.12.2017
22:13:26

Евгений
18.12.2017
06:45:28
Ага)
Нужно откатить обнову...
Чет старый способ распознавания был получше

Google

Yuriy
18.12.2017
08:21:23
доброе утро подскажите пожалуйста по centrifugo
в документации указано что при использовании в качестве движка memory можно запустить только один узел centrifugo, хотел уточнить на вскидку сколько пользователей может быть обслужено одним узлом centrifugo?

Sergey
18.12.2017
08:23:02
мы когда нагрузочные гоняли t2.medium нормально переваривал где-то 15K соединений (с сервера раз в минуту бродкастило)

Yuriy
18.12.2017
08:26:39
2 ядра и 4 ГБ ОЗУ,
понимаю что будет больше расходоватся памяти,
но на сколько? есть четкая тендения на одно соединение сколько то расходуется памяти?

Sergey
18.12.2017
08:27:32
это с рэдисом но один инстанс
без рэдиса будет примерно одинаково

Yuriy
18.12.2017
08:28:07
на вскидку сколько расходовалось памяти?

Sergey
18.12.2017
08:28:11
помню что нас устраивало)
скрипт который просто раз в N времени увеличивает количество соединений и каждый подписывается на канал
и скрипт который будет раз в M времени пинать центрифугу и просить забродкастить что-то в канал

Yuriy
18.12.2017
08:31:01
я првильно понимаю параметры
t2.medium:
4.0 GiB
2 vCPUs
?

Sergey
18.12.2017
08:31:21
да. правильно. Можешь интанс поменьше взять

Yuriy
18.12.2017
08:31:39
понял спасибо

Sergey
18.12.2017
08:32:19
но если у тебя сейчас нет никаких нефункциональных требований в духе "должно доставлять нотификашки сразу для 100K пользователей" к примеру - то тебе точно центрифуги хватит
а если будет не хватать - поднять рэдис и сделать класстер не особо сложная задача
и не забудь чуть-чуть потюнить настройки

Yuriy
18.12.2017
08:34:07
да у нас чат еще в процес разработки да и когда он реализуется там до тысяч конектов в ближайшие полгода не доберется

Google

Sergey
18.12.2017
08:34:29
ну так тем более
https://fzambia.gitbooks.io/centrifugal/content/deploy/tuning.html
про настройки это я про это

Yuriy
18.12.2017
08:35:04

Sergey
18.12.2017
08:35:37
как минимум не забудь ulimit поднять) а то грустить будешь
там по ссылке все что надо есть

Max
18.12.2017
08:59:43
Maksim помню ты рассказывал про CQRS и тп, а вы реализовывали у себя Process Manager ? И как разруливали саги и тп?

Maksim
18.12.2017
09:00:40
о) а я думал, как Сергею про саги напомнить :)

Max
18.12.2017
09:01:17
прост у нас есть такой кейс, что юзер регается в несколько этапов и это не совсем многошаговая форма

Maksim
18.12.2017
09:02:02
у меня наркоманская схема "любителей обмазаться команд басами" (с)

Max
18.12.2017
09:03:59
$sagaService = new SagaService(
new SagaStore(
new SagaInMemoryStorage(),
new SagaSerializer()
)
);
я так понял вы все же храните стейт процесса?

Maksim
18.12.2017
09:04:31
ага
у меня саги могут неделями жить)

Max
18.12.2017
09:05:41
хм, а всякии коллизии и тп? например юзер инициировал одну и туже операцию?

Bohdan
18.12.2017
09:05:50
о, Максим нашел новую жертву)))

Max
18.12.2017
09:05:58
создается новый процесс?

Maksim
18.12.2017
09:06:00
сама нашлась) я тут не при чём)

Bohdan
18.12.2017
09:06:07
ну да, прям как я)

Sergey
18.12.2017
09:06:34

Google

Maksim
18.12.2017
09:06:34

Sergey
18.12.2017
09:06:56

Max
18.12.2017
09:07:03
типа да

Sergey
18.12.2017
09:07:11
ну то есть ты хочешь что-то типа локов на уровне саги
типа "идентификатор - email, и он должен быть уникальным"
но по идее это не саги дело

Maksim
18.12.2017
09:08:04
ну эт не проблема саги всё же)
хотя, мб и стоит блокировку реализовать

Max
18.12.2017
09:08:14
начиная от саг и заканчивая бизнес логикой

Admin
ERROR: S client not available

Sergey
18.12.2017
09:08:42
ну по идее у тебя самый первый этап саги должен был "забить место" и тогда второй процесс упадет типа - зарегистрирован уже такой. нет?
можно через рэдис лочить операцию на корень

Maksim
18.12.2017
09:09:10

Sergey
18.12.2017
09:10:08
начиная от саг и заканчивая бизнес логикой
а ты уверен что у тебя там саги? ну мол, у тебя первый этап - зерегать чувака, а потом что? Помнитья мне у тебя просто надо было штуки в разных контекстах создать, а тут саги не особо нужны ибо если первый стэп прошел - значит и остальные должны пройти
а саги... они хороши для заказов например. Поменял статус, провел платежку, подождал пока подтвердилось, поменял статус еще раз
(ну если мы об одном и том же проекте говорим))

Max
18.12.2017
09:13:19
ох, сейчас меня возьмут за неразглашение))

Maksim
18.12.2017
09:13:50
ну прост для регистрации саги - как-то круто дофига)

Sergey
18.12.2017
09:15:32

Bohdan
18.12.2017
09:17:16

Google

Max
18.12.2017
09:17:37
@fes0r
какой сейчас кейс:
- авторизоваться как под мерчантом (роль 2, для этого нужно еще под ролью один зарегаться)
- заполнить все поля и создать мерчанта
- создать его кошелек (это делается частично на фронте), провалидировать
- подтянуть доп инфу к кошельку
- активировать мерчанта (чтобы он показывался везде где нужно)
в принципе это сейчас сделано, через экшены и доменные ивенты, но на каждом этапе было 100500 интеграционных проблем, что-то не увидели, про что-то не знали и тп (как обычно)

Sergey
18.12.2017
09:18:50
ну и ты хочешь попробовать это в "процесс" запихнуть
что бы в одном месте весь флоу

Max
18.12.2017
09:19:11

Sergey
18.12.2017
09:19:46
нууу... прикол в том что ты можешь остановиться в этом флоу на любом моменте и потом типа ты должен продолжить с того места на котором остановился
и с точки зрения пользователя это будет... ок

Max
18.12.2017
09:20:11
ну так и есть

Sergey
18.12.2017
09:20:21
хотя если мы храним стэйт процесса и знаем на каком мы сейчас этапе - это будет чуть проще
Maksim может быть есть мысли насколько описанное норм сагами описывать?)

Maksim
18.12.2017
09:21:24
я б не стал

Max
18.12.2017
09:21:36
ах, да
создание кошелька асинхронно)

Sergey
18.12.2017
09:21:53

Maksim
18.12.2017
09:21:54
ну всё, раз асинк, точно саги)

Sergey
18.12.2017
09:22:24

Max
18.12.2017
09:22:26
типо создали на фронте, отправили на бэк, отправили на отдельный сервис, вернули

Maksim
18.12.2017
09:23:04
а пользователь пока до конца не доберётся, ничё делать не может, кроме просмотра формы?

Sergey
18.12.2017
09:23:22
но он может браузить каталог например или новости читать)
я не уверен что саги тут к месту...

Maksim
18.12.2017
09:24:15
хз даже) статус в бд короче обновлять и предлогать ему действия в зависимости от оного) саги не вижу :(

Max
18.12.2017
09:24:32
потом он может залогиниться, но он еще не может быть активным