
BioBodya
21.09.2017
14:11:56
Мне вот интересно, есть ли какие-то механизмы защиты каналов от этих ботов?

Sergey
21.09.2017
14:12:17

BioBodya
21.09.2017
14:12:44
Skynet. Начало.

Alexey
22.09.2017
07:07:08
Всем привет. Например есть каталог и есть группа. Каталог корень агрегата. Группу я добавляю и удаляю из под каталога. addGroup($name, ...) и removeGroup(Group $group). Как правильно. Если я хочу переименовать группу или сделать что-то другое с ее свойсвами, я должен это делать из каталога или можно делать через группу?)

Google

Sergey
22.09.2017
07:09:03
а как ты получаешь группу для removeGroup(Group $group)?

f4rt~
22.09.2017
07:09:44
извечная проблема что лучше
1) $school == $pupil->getSchool()
2) $pupil->isMemberOf($school)
?

Sergey
22.09.2017
07:10:22
Деметра с тобой не согласится что тут есть какая-то проблема.

f4rt~
22.09.2017
07:10:50
а инкапсуляция согласится?

Sergey
22.09.2017
07:11:06
нет, с ее точки зрения тоже только второй вариант

Alexey
22.09.2017
07:11:44

Sergey
22.09.2017
07:12:13
ну мол сразу делать remove(groupId)

Alexey
22.09.2017
07:13:37

Sergey
22.09.2017
07:13:56
хороший вопрос на самом деле, я не знаю(
можешь рассказать почему ты решил поместить эти две сущности в один агрегат?

Google

Alexey
22.09.2017
07:15:22
Ну у меня логика проста. Есть каталоги и есть группы, в одном каталоге может быть много групп, но группа не может быть без каталога => значит каталог корень )

Sergey
22.09.2017
07:17:39
а вот модет ли один агрегат входить в другой - тут я хз

Alexey
22.09.2017
07:20:35

Aleh
22.09.2017
07:21:38

Sergey
22.09.2017
07:22:01

Alexey
22.09.2017
07:22:16

Aleh
22.09.2017
07:22:19

Sergey
22.09.2017
07:22:33
ну на самом деле я тоже не уверен)

Aleh
22.09.2017
07:22:43
Как пример - файл и директория

Sergey
22.09.2017
07:22:47
как по мне я не вижу проблемы сделать new Group($catalog)

Aleh
22.09.2017
07:23:01
Два разных агрегата, но файл не может существовать без директории

Alexey
22.09.2017
07:23:56

Aleh
22.09.2017
07:24:05

Sergey
22.09.2017
07:24:13
иначе это еще не файл

Alexey
22.09.2017
07:24:29

Sergey
22.09.2017
07:24:39
вопрос - должен ли каталог знать о группах или группы должны знать о каталоге?
или у тебя там циклическая зависимость?

Google

Anton
22.09.2017
07:25:54

Sergey
22.09.2017
07:26:50
самое пожалуй сложное для осознания для меня является "держать агрегаты маленькими". А точнее как при этомм сделать красиво начало жизненного цикла. Мне же нужна какая-то фабрика для этого

Anton
22.09.2017
07:26:52
В разных Bounded Context одни и теже сущности могуть быть разными агрегатами

Aleh
22.09.2017
07:26:54
Ну да, если что-то часть аггрегата, то оно должно быть в нем хорошенько инкапсулировано
Иначе это просто связанные агрегаты

Anton
22.09.2017
07:27:26
Always get en Entity (c) не помню кто
http://udidahan.com/2009/06/29/dont-create-aggregate-roots/

Sergey
22.09.2017
07:28:54
вот может и меня просвятите. Есть у меня продукты и отзывы. Отзывы я могу оставлять только к продуктам которые я заказывал. И продукты и отзывы являются самодостаточными агрегатами. Как запустить жизненный цикл отзыва?
какой агрегат мне поможет? Агрегат пользователя? агрегат продукта?

Alexey
22.09.2017
07:30:18

Anton
22.09.2017
07:30:32

Sergey
22.09.2017
07:30:59

Anton
22.09.2017
07:31:20
$product->attachReview(...) или $customer->writeReview($product, 'blabla')

Sergey
22.09.2017
07:32:11
а что делать если кастомер запускает еще с десяток таких вот вещей и класс становится перегруженным штуками

Anton
22.09.2017
07:32:35
Выносить Saga как вариант

Sergey
22.09.2017
07:32:54
типа сначала проверяем бизнес рул, кидаем событие о том что челу можно делать делать, делать дела?

Anton
22.09.2017
07:33:02
С недавних пор очень активно пользую данный паттерн в CQRS / ES

Alexey
22.09.2017
07:33:22

Google

Sergey
22.09.2017
07:33:38
http://microservices.io/patterns/data/saga.html

Anton
22.09.2017
07:33:44
http://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-i-of-ii/

Alexey
22.09.2017
07:34:09
Спасибо)

Anton
22.09.2017
07:34:59
Очень подробно и понятно как по мне есть в документации микрософта: https://msdn.microsoft.com/en-us/library/jj591569.aspx

Sergey
22.09.2017
07:39:02
а такой вопрос, в целом мне всеравно надо лесть в заказы что бы узнать заказывал кастомер продукт или нет
как лучше делать это с cqrs, по read model определять айдишку агрегата и тогда только ее доставать?
или вообще обойтись без сущностей и просто заэмитить следующую фазу - добавление отзыва

Anton
22.09.2017
07:44:51
Если есть бизнес требование что отзыв можно написать только к продукту который ты заказывал, я бы хранил у Customer список ID товаров.
Это вполне себе его обязанность

Илья
22.09.2017
08:07:51
Какой язык программирования можно изучить кроме java, js, c#

Sergey
22.09.2017
08:08:21
разрешаю
например haskell
или rust

?
22.09.2017
08:08:43
Go)

Sergey
22.09.2017
08:08:56
go учить просто так скучно

Roman ?
22.09.2017
08:09:11

Nikita
22.09.2017
08:09:18
Ну так задачу себе надо поставить, чтобы скучно не было
Проект

Roman ?
22.09.2017
08:09:27
любые штуки прикольно учить привязывая к практике

Google

Sergey
22.09.2017
08:09:39
все примитивно и в лоб

Roman ?
22.09.2017
08:10:07
не знаю, мне после пхп знатно мозг ломало по первости :)

Sergey
22.09.2017
08:10:28

Roman ?
22.09.2017
08:12:32
я как бы тоже не пхп единым.. он не скучный, он простой, надо брать и сразу писать на нем что то, в принципе как и в любом другом случае имхо

Sergey
22.09.2017
08:13:05
эрланг лучше, будет так же мозг ломать и чуть-чуть интереснее

Anton
22.09.2017
08:13:14
Elixir, Go, Rust - трендовые штуки
C++, Java, C# - старая добрая классика
PHP - Java для бедных, но все равно его не брошу :)

Sergey
22.09.2017
08:24:27

Anton
22.09.2017
08:25:42
Горутинам :) Они там особенные

Sergey
22.09.2017
08:27:37

Anton
22.09.2017
08:30:25
Ага, как минимум