
f4rt~
04.09.2018
14:24:56
@russophobe дал RO на неделю

Adel
04.09.2018
14:25:14
русофоб? :)
не мало ли неделю?

f4rt~
04.09.2018
14:25:54
я не читал высер, что бы конкретными метриками руководствоваться
рекламы не было и ладно, собственно потому и не получил навсегда бан

Google

andretshurotshka?❄️кде
04.09.2018
14:28:31

Sergey
04.09.2018
15:16:38
Да

Артур Евгеньевич
04.09.2018
15:47:15
Как вы относитесь к многоуровневой реализации интерфейсов?
Пример:
У меня есть стратегия выбора Группы - GroupChoise
Есть выбор группы рандомный и допустим по локации, вот два интерфейса, наследуют предыдущий(и все это относится к бизнесс логике) RandomGroupChoise и SomeAnotherLogicGroupChoise
И вот уже у этих интерфейсов естьреализации в инфраструктурном слое:
NativePhpRandomGroupChoise, SomeExternalServiceRandomGroupChoise и т.д
мне не совсем нравится, но как то обосновать недовольство кроме усложненнйо структуры не могу

Dmitriy
04.09.2018
15:48:45
Вообще это нормально, видел статейку, как чувак автомат состояний на интерфейсах делал, и ниче - норм)

Дмитрий
04.09.2018
16:03:10

Aleh
04.09.2018
16:04:42

Артур Евгеньевич
04.09.2018
16:40:16

Denis
04.09.2018
16:41:51
Пхп это призвание))

andretshurotshka?❄️кде
04.09.2018
16:52:43
Нет

Дмитрий
04.09.2018
18:19:19

Valentin
04.09.2018
18:30:58
Лучше пхп чем аниме

Google

Артур Евгеньевич
04.09.2018
18:31:50

Slava
05.09.2018
04:59:18

Denis
05.09.2018
06:57:17
А что есть sum type?
type sum = first | second | third ...
Т.е такой тип который может быть любым из перечисленных типов, но не их комбинацией
Сумма потому что «размер» типа является суммой перечисленных типов

Slava
05.09.2018
07:01:17
спс

F01134H
05.09.2018
09:57:44
Норм ли стратегия - в двух сервисах экосистемы делать разные миграции для одной БД?
Хотя в принципе это наверное норма, если данные нормализованы как надо

Sergey
05.09.2018
10:04:28
они два сервиса и у них общая база?
словом миграции они для базы - одна пачка миграций для одной базы вне зависимости от количества сервисов, нормализация тут не причем. И да, если у тебя "физически" база одна но сервисам плеватть на таблички друг дружки - то можно расценивать это как две базы (тут ключевое - нет внешних ключей)

F01134H
05.09.2018
10:14:18

Артур Евгеньевич
05.09.2018
10:18:00
а ты вынеси все что связано с пользователем в микросевис☺️

F01134H
05.09.2018
10:21:56
Решать проблему декомпозиции - еще большей декомпозицией?

Sergey
05.09.2018
12:09:09
есть если две хуйни и у них естьт общее - вынести общее в третью хуйню вполне себе занятная мысль. А еще может статься так что та часть которая зависит во второй хуйне от общей можно вынести в первую хуйню и исчезнут общие зависимости но это более редкий кейс.

F01134H
05.09.2018
12:10:45
а если появятся общие вещи у третий хуйни с какой-нибудь из этих двух хуевин?
в четвертую хуйню выносить?

Sergey
05.09.2018
12:13:08
да
но! не всегда то что кажется одинаковым таковым является
а потому придумали правило трех для таких вещей

f4rt~
05.09.2018
12:14:13

Google

F01134H
05.09.2018
12:14:42

Sergey
05.09.2018
12:14:57
?
rule of three (refactoring)

F01134H
05.09.2018
12:24:33
@fes0r а как бороться со связностью gateway <-> service? Где гейтвей это прослойка для рейтлимитов, сессий и т.п.
ну получается гейтвей после своих проверок делает запрос на сервис, т.е. одни и те же роуты по сути

Admin
ERROR: S client not available

Sergey
05.09.2018
12:25:06
be one with the coupling (c) Udi Dahan

Yura
05.09.2018
16:10:08
Подскажите пожалста: есть некий сервис который выписывает в сессию геолокационную всякую информацию. Есть несколько способов определения (если один из них находит инфу, найденное выписывается в сессию и дальше не идет), например: из базы внешней -> из локальной базы -> по локали браузера -> по дефолту. Оно и щас не страшно выглядит пока, но может есть паттерн какой подходящий под такую ситуацию который все это дело красиво разрулит, чтоб подкидывай\убавляй ему "определятели" и все?

Anton
05.09.2018
16:17:27
Стратегия, не?

Yura
05.09.2018
16:18:15
Да можт, я тут все примерно подходящее перечитал и сходу не решилось. Щас пересмотрю его, спасиб

Yurii
05.09.2018
16:19:40
Chain of Responsibility?

Dmitriy
05.09.2018
16:24:10
do {
$resolver = array_shift($geoResolvers);
if (($geoData = $resolver->resolve()) !== false) {
return $geoData;
}
} while (count($geoResolvers) > 0);
return false;
заполняешь array $geoResolvers инстансами интерфейса GeoResolver и запускаешь

Yura
05.09.2018
16:29:14
Ага, примерно такое и планировалось в голове, спасибо.

Dmitry
05.09.2018
20:52:24
у меня есть ORM который использует модели
и есть репозиторий, который отдает DO
как обычно называется объект, который из модели ORM делает DO для репозитория.
или этим обычно занимается сам репозиторий?

Sergey
05.09.2018
20:57:03

Adel
06.09.2018
12:24:38
Я тут задумался. А какая практическая польза делать свои эксепшены на каждый экшен. например publishPost($id). и эксепшен CantPublishAlreadyPublishedPost. может проще просто один какойнибудь ServiceLayerException и выбрасывать только его если что. только с разными message. Я всю жизнь создавал новый классы, но чтото сейчас задумался... а зачем?

Yura
06.09.2018
12:29:23
Для многих catch например?

Adel
06.09.2018
12:30:06
а зачем нам много catch? нам один раз поймать в одном месте все.. и нормально... там, выше, никому не интересно почему не получилось. не получилось и все.

Yura
06.09.2018
12:30:23
Ну в зависимости от вылезшего обработать по разному)

Adel
06.09.2018
12:30:37
да не надо по разному... ни разу не надо было

Google

Adel
06.09.2018
12:30:54
если база упала - да. надо хотя бы залогировать. но это и так понятно.

Артур Евгеньевич
06.09.2018
12:31:15
ну это сходу

Adel
06.09.2018
12:31:50
да. но вот новичку попробуй это обьяснить. ему нужна практическая польза. а я ее не вижу. реальной.