
smile
10.08.2018
16:49:08

Sergey
10.08.2018
16:49:18

Dmitry
10.08.2018
16:49:28
руками легко, автоматически - сложно

Sergey
10.08.2018
16:49:45

Google

Sergey
10.08.2018
16:50:06
семантических конфликтов еще не бывает если ты никогда не рефакторишь код)
типа "модуль хуево назвали ну и хуй с ним"

Dmitry
10.08.2018
16:50:43


Sergey
10.08.2018
16:50:54
я от мастера на КАЖДЫЙ релиз отвожу релиз ветку
потом на каждый баг сначала фикшу в мастере. И переношу коммиты. В этой ситуации конфликтов никогда не будет поскольку у тебя нет ситуаций где ты в двух ветках потрогал одно и то же место
ты трогаешь только в одном месте, дальше гит изменения именно перенесет корректно
(ну или можно придумать очень скользский кейс где нет). А вот добавление кода гит корректно уже может не захэндлить если изменения в файлах о которых релиз ветка ничего не знает))
например ты ответвился и потом перенес код в другой модуль. Все, привет конфликты
и их словит только стат анализ и тест сюиты

Dmitry
10.08.2018
16:52:55
не, проблема в том, что у нас еще тест ветка для тестирования

Sergey
10.08.2018
16:53:06
ну это твои проблемы)))
опять же, у меня так было на прошлом проекте

Google

Sergey
10.08.2018
16:53:23
и да там были конфликты - релиз ветки потому удобнее
с ними вероятность конфликтов меньше
но они всеравно будут
потому не вижу смысла автоматизировать. тем более что я трачу на черипики минут 10 на спринт. Нет смысла автоматизировать и повышать риски

Dmitry
10.08.2018
16:54:08
но мастер от которого релиз ветка же стабильный?

Sergey
10.08.2018
16:54:18
все ветки считаются стабильными)

Dmitry
10.08.2018
16:54:25
ну т.е. туда идут выполненные и протестированные ветки

Sergey
10.08.2018
16:54:28
но это не мешаем разработчикам вмердживать говно раз в день0
trunk based dev - все идет в мастер как только разработчик считает что "усе". Причем в идеале каждый день. даже если фича не закончена. дальше свое дело делают фичатоглы и branch by abstraction
нету "тэст брэнчей" или "продакшен брэнчей". Есть релиз ветки которые делаются для код фриза на релиз. Сначала льем релиз на тэстинг/стэйджигг и потом уже на прод
весь процесс создания веток и т.д. через слэк. что-то типа @jenkins please freeze code или чето такое

Dmitry
10.08.2018
16:58:39
и как часто релиз?

Sergey
10.08.2018
16:58:47
пока-что раз в две недели
а деплоимся по 1-2 раза в день))
ну как.. это багфиксы разумеется...
но в итоге хотим придти к тому что бы мастер сразу лить на тестигг и потом тот же билд лить на прод если все хорошо
но для этого надо больше e2e/приемочных тестов
и как часто релиз?
и да релиз и деплой это не одно и то же) в том плане что у тебя фича может быть на продакшене месяц но ее никто не релизил

F01134H
10.08.2018
17:05:16
Скажите ка, а норм тема биндить конфиги в сервисы на уровне регистратора в сервис контейнере (который регает сервисы)

Google

F01134H
10.08.2018
17:05:47
или похер где их биндить, я думал может есть бест практис какой-нибудь
под конфигами я подразумеваю конфиги для доступа к внешним данным\сервисам

Егор
10.08.2018
17:11:59
ты имеешь в виду то, что в каком-нибудь ларавеле можно дёрнуть config('token') из любого места?
в симфони например особо выбора нет - либо пробрасывать токены отдельными аргументами в конструктор, либо инжектить весь контейнер и у него дёргать ->getParameter('api_token')

F01134H
10.08.2018
17:16:27
я не про конкретный фреймворк, а про то, где вообще по хорошему эти конфиги из файла получать и инжектить непосредственно в код
учитывая что у меня самый верхний уровень это сервис контейнер

Maksim
10.08.2018
17:18:30
получать в виде аргумента конструктора

Егор
10.08.2018
17:18:39
и только
а классы должны быть по максимуму framework agnostic, чтобы ничего не знали про всякие config('api_token') или Yii::$app->params['api_token'] и прочее

Maksim
10.08.2018
17:20:26
контейнер наружу аще не торчит. в коде забудь про его существование. Есть очень мало кейсов, где он вылазит (и даже не он, а специально изолированный сервис локатор)

Dmitry
10.08.2018
17:51:51
бред…
$a = 1; isset($a->id); isset($a["id”]); - вот это все валидно, а вот это вот $a = new StdClass(); isset($a[“id”]); - дает фатал

Maksim
10.08.2018
17:54:53
Там же array access вроде нету

Maksim
10.08.2018
17:55:09
Вот и ругается)

Dmitry
10.08.2018
17:58:21
ну да.. а у инта конечно есть array access ?

Maksim
10.08.2018
17:59:10
Ну, пхп оправдывать - гнусная идея, так что не буду)

Dmitry
10.08.2018
17:59:52
хехе ну да…

Evgenii
11.08.2018
16:06:27
Всем привет!
Знаком не по наслышке с использование Dependency injectioin не через конструктор, ни через сеттер. Делается привязка интерфейса к реализации, а потом в сервисах тупо дергается что-то типа $container->get('AnimalInterface').
Меня посещает мысль, что это очень кривое внедрение зависимостей и что лучше внедрять через конструктор. Но четкие аргументы почему это плохо довольно сложно сформулировать. Максимум это то, что методы сервиса не знают откуда берется зависимость. Что думаете по этому поводу?

F01134H
11.08.2018
16:10:14
Ты уверен что ты под DI подразумеваешь именно то, что оно означает?
Мне кажется у тебя проблема в определении контекста DI и сервис-контейнера с его биндингами
И нет ничего плохого в биндинге зависимости через интерфейс, это норм практика

Google

F01134H
11.08.2018
16:12:24
Ты кажется путаешь биндинг зависимостей и инъекцию зависимостей

Sergey
11.08.2018
16:15:00
Это сервис локатор со своими плюсами и минусами

Evgenii
11.08.2018
16:18:34
Как раз хотел предположить, что это сервис локатор

Artem
11.08.2018
16:20:53
Всем привет!
Знаком не по наслышке с использование Dependency injectioin не через конструктор, ни через сеттер. Делается привязка интерфейса к реализации, а потом в сервисах тупо дергается что-то типа $container->get('AnimalInterface').
Меня посещает мысль, что это очень кривое внедрение зависимостей и что лучше внедрять через конструктор. Но четкие аргументы почему это плохо довольно сложно сформулировать. Максимум это то, что методы сервиса не знают откуда берется зависимость. Что думаете по этому поводу?
если ты передаёшь контейнер в конструктор - у тебя теоретически появляется зависимость от всего, что есть в контейнере, потому-что ты можешь что угодно вызвать в реализации. Если у тебя будут более конкретные зависимости - будет, например, проще увидеть, что "что-то тут уже больно много зависимостей, может быть что-то пошло не так?"

F01134H
11.08.2018
16:21:55
?
речь про другое тащемта

Evgenii
11.08.2018
16:22:10
Я имел ввиду не передачу контейнера через конструктор, а именно внедрение зависимостей через него

Admin
ERROR: S client not available

Artem
11.08.2018
16:24:30
ну значит сори, я не понял =\

Sergey
11.08.2018
16:24:45

Artem
11.08.2018
16:25:36

F01134H
11.08.2018
16:26:09
у хорошего коэффициент плюсов\минусов чуть лучше

Sergey
11.08.2018
16:26:10
Ограничениями

Artem
11.08.2018
16:26:25
лучший!

Sergey
11.08.2018
16:31:34
хороший локатор есть у фаулера, у него же есть сравнение с DI в плане плюсов и минусов.
контейнер целиком юзать и все сервисы публичными делать - плохо потому что теряется контроль за зависимостями
нет ограничений и правил - нет архитектуры. Дальше все зависит от адекватности разработчиков (а этим чертям верить нельзя)

Александр
11.08.2018
16:34:15
Когда только начинаешь изучать идея прокинуть контейнер везде и использовать любые сервисы кажется очень удобной) ну или это только у меня так было)

Google

Александр
11.08.2018
16:35:04
При этом смотришь какой нибудь старый код с глобальными переменными и такой типо функции, а сам на самом деле нечто такое используешь)
Ребята, у меня опять по докеру вопрос, если знатоки имеются тут.
В тот раз определили что нужно под каждый проект делать свой докер композ с nginx fpm. Получается должен быть сверху ещё nginx проксик, который будет на 80 порту, а самих проектов nginx уже будет на разных портах?

Chupa
11.08.2018
16:39:07
Нужно все проекты одновременно запускать?

Александр
11.08.2018
16:39:30
Ну да, допустим они не зависимы друг от друга

Evgenii
11.08.2018
16:39:53

Александр
11.08.2018
16:40:35

Evgenii
11.08.2018
16:43:32

Sergey
11.08.2018
16:46:04
ну мол тогда у тебя все будет абсолютно прозрачно

Александр
11.08.2018
16:46:26

Sergey
11.08.2018
16:46:42

Александр
11.08.2018
16:46:50
Ага, я понял
Спасибо
Да, с nginx-proxy четко получилось

Bohdan
11.08.2018
17:53:40
еще letsencrypt-companion под него глянь

Александр
11.08.2018
18:12:07

dypa
12.08.2018
08:06:06

Jack
12.08.2018
11:00:23
Привет! Посоветуте, пожалуйста, пакет для websocket client?

Dmitry
12.08.2018
14:08:27
Сущность — это объект?

Chupa
12.08.2018
14:10:51
Да