
Дмитрий
17.04.2018
21:45:13
DI с new FooClient(new HttpClient(new RetryStrategy())) — если честно, я не оч понял шутку

Bohdan
17.04.2018
21:50:08

da horsie
17.04.2018
21:57:27

Google

Дмитрий
17.04.2018
21:59:49

da horsie
17.04.2018
22:02:20
блин, ну не надо так буквально воспринимать
нет там никаких new

Mykola
17.04.2018
23:59:08
ну все зависит от желания... если надо быстро кое-как зарефакторить, разбиь логику и запросы - то можно и декораторами, и мидлварями... а если стоит задача "создаь идеальное решение", то тут канеш нужно свою суперлибу пилить, уровня guzzle

Дмитрий
17.04.2018
23:59:56
Давно существуют обобщённые способы

Mykola
18.04.2018
00:00:13
ану? жду ссылку

Дмитрий
18.04.2018
00:00:23
Начиная прям со стримов с фьючерсами

Mykola
18.04.2018
00:01:16
у человека все запросы синхронны, к тому же это вебморда
на пхп
при этом логику все равно надо куда-то засунуть, а в стримах и фьючерсах реализовать логику ретрая без колбек-хела тоже надо уметь

Дмитрий
18.04.2018
00:10:37
чтобы реализовать логику _ на _ тоже надо уметь

Maxim
18.04.2018
08:40:44
в чем разница между абстрактным классом и интерфейсом?
класс наследуется только 1, в то время как интерфейсов множество можно реализовать

Roman ?
18.04.2018
08:41:17
?

Google

Maxim
18.04.2018
08:41:46
или эта разница строится в понимании при проектировании где испольовать класс, а где интерфейс
мож статья есть какая) за ссылку буду благодарен

Sergey
18.04.2018
09:35:33
надо еще конкретизировать язык
в Java интерфейсы могут иметь реализацию, но не могут иметь стэйт

Maxim
18.04.2018
09:37:39

Adel
18.04.2018
09:59:17
то что класс наследуется только один и ведет к тому, что нужно понимать при проектировании где нужен класс а где интерфейс. у них довольно сильные различия. Правда сейчас чтото все полюбили интерфейсы везде пихать. Что позволяет некоторым наследоваться от того, чего не нужно и имплементить логгер например. т.е. оставляет лазейку наследоваться там, где необходима композиция
правда мы тут это уже обсуждали и мое мнение тут не в почете :)

Sergey
18.04.2018
10:17:57

Maxim
18.04.2018
10:23:26
в одной статье пишут что с одной стороны не разумное использование абстрактных классов решает проблему дублирования кода множественное, но можно нарушить принцип инкапсуляции
и поэтому перед тем как что то использовать нужно хорошенько подумать, что будет более правильно использовать в твоем случае, полагаясь исключительно на понимание того как работают и для чего созданы абстрактные классы и интерфейсы. правильно?

Dmitry
18.04.2018
12:50:28

Maxim
18.04.2018
12:55:14


Antoine
18.04.2018
14:47:08
я тут опять со своим дурацким клиентом к сторонним апи... думаю как повышать качество кода. конечно хорошо бы все запросы к апи делать асинхронно через очередь.
но есть нюанс, некоторые запросы подразумевают цепочку вызовов. например, сначала нужно получить токен, причёт токен может выдаться не с первого раза и нужно сделать до 5 попыток с паузой 15 сек. после успешного получения токера нужно дёрнуть другой эндпоинт и получить результат. естественно все эти паузы лучше всего переложить на брокера очередей. а вот как оформить цепочки вызовов - вопрос... есть какие-то реализации подобного?

Adel
18.04.2018
14:59:48
есть. у микрософта даже целый фреймворк есть под это дело. wwf.
с нуля тоже можно сделать я думаю. просто очереди и статусы...
и состояния. типа количества прошлых попыток

Maksim
18.04.2018
15:26:56

Antoine
18.04.2018
15:36:11
Слово сага очень плохое для загугла

Google

Maksim
18.04.2018
15:36:40

Antoine
18.04.2018
15:37:32
Слоожна((

Maksim
18.04.2018
15:38:13
проще, чем кажется)

Sergey
18.04.2018
16:05:31
Слоожна((
если просто - ивенты и некто кто слушает ивенты и паблишит команды.
ивент - факт того что что-то произошло, команда - запрос на действие

Bohdan
18.04.2018
16:38:10
а сага только координирует и отдаёт команды

Sergey
18.04.2018
16:47:17
Да, Сага о процессе, она лишь скрепляет части вместе
ну и каждая часть саги - атомарна, ну то есть если у тебя скажем процесс из 3-х этапов и 2-ой зафэйлился, должно быть совершено дополнительное компенсирующее действие отменяющее/фиксящее зафейленные операции
типа сначала что-то в статусе pending, потом либо done либо failed

Maksim
18.04.2018
16:56:56
Ну, не обязательно. Сага может и не делать ничего изменяющего до финального шага. А копить всё в себе. Зависит от требований и реализации.

Sergey
18.04.2018
16:58:54
не ну она копит че было по идее
ну то есть необходимые данные для последующих команд

Maksim
18.04.2018
17:02:05
Я к тому, что она может, аки транзакция менять данные в процессе жизни (и откатываться в случае факапа), а может ничего не менять вплоть до последнего шага, на котором уже выполнить пачку агрегированных действий. Или не выполнит.
Типа, как flush
Данные не внутри саги, а дергать какую-то бизнесс логику.

Bohdan
18.04.2018
17:44:07

Maksim
18.04.2018
17:48:07
Ну т.е. философии саг сие никак не противорочит. У меня, например, оба варианта вполне себе сосуществуют

Bohdan
18.04.2018
17:52:05

Maksim
18.04.2018
17:52:35

Bohdan
18.04.2018
17:52:58
хочу глянуть редакс-сага, а то его пиарят, но насколько там реально саги - я не знаю

Google

Maksim
18.04.2018
17:54:22
Над самому будет посмотреть что за зверь.
Меня текущий вариант устраивает чуть менее, чем полностью, но мало ли

Bohdan
18.04.2018
17:54:25
вернусь домой и оформлю этот конверсейшн в фак-страничку нашу, имхо будет полезно

Maksim
18.04.2018
17:55:15
А есть разница между фронтом и бэком?)

Bohdan
18.04.2018
17:56:34
А есть разница между фронтом и бэком?)
с точки зрения теории нет, с точки зрения практики - да)
я больше о том, что твоё сообщение звучит как "может заюзаю"
но если ты об идеях - тогда да, может пригодиться
а про разницу... она в первую очередь в восприятии кода и структуры приложения

Maksim
18.04.2018
17:57:28
Не) меня мой говно паб/саб устраивает)
Я больше на идеи глянуть. Мб есть какая-то вундерфича

Bohdan
18.04.2018
19:06:55
https://blog.jetbrains.com/pycharm/2018/04/python-37-introducing-data-class/

Pavel
18.04.2018
22:01:06
Слушайте, а что почитать можно по ООП? О том как правильно нужно.
Прочита статью старую, про то что геттеры/сеттеры есть плохо, что мол это все не правильно и не ОО.
Статья конечно хуйня постная, но задумался, есть ли что-то далше OOP in PHP от занстры

Trk
18.04.2018
23:28:59
У меня есть вот такой вопрос
допустим есть 2 программиста да.Оба закончили бакалавр и вот потом один из них работал в компаний 1 лет а другой делал не коммерческие проекти дома но написал больше код чем тот который в компании работал.
У кого будет больше шанса получить новая работа из этих 2 кандидатах ?
или скажем кто будет цениться больше в рынке

da horsie
18.04.2018
23:33:44
у того, кто сумеет пройти собеседование и дороже себя продать. что именно он до этого делал - дело десятое

Trk
18.04.2018
23:34:41
хмм
скажишь типа нет важная разница
спасибо за ответ

Google

da horsie
18.04.2018
23:49:46
жизнь несправедлива

Antoine
19.04.2018
00:15:29
10 часов лекций, почти всё про ООП)
про мою головоломку с апи, перезапросами и т.п. пока сделал так:
в джобе описываются шаги по порядку, если шаг выбрасывает эксепшен JobException($step, 5, 3); то он повторяется до 3х раз с паузой 5 сек.
в итоге логика перезапросов не копируется по всему коду и ей удобно управлять. к тому же можно легко начинать выполнение с любого шага =)
критикуйте, кидайте какулями

Darkling
19.04.2018
00:32:35
Кинул какулю за шиворот. Просто так.

Antoine
19.04.2018
00:33:09
ммм, кайф

Darkling
19.04.2018
00:38:17
ммм, кайф
По поводу кода какушатами забрасывать не вижу смысла.

Artem
19.04.2018
03:46:32
если много null особенно

Миша
19.04.2018
04:14:26
Никто не может скинуть ссылки или книгу назвать. Где можно прочитать про различные архитектуры. Я читал Martin Fowler Patterns of enterprise application architecture. Но не нашел там то что хотел.
А то я понял пока, только то, что если приложение сильно расширяется, юзай микросервисы/

Evgeniy
19.04.2018
04:59:14
soa еще