@prophp7

Страница 1054 из 1387
Sergey
03.05.2018
16:01:09
Ну так если я собираю релизный docker image который по сути имеет отношение к Continious Deployment. Разве это не деплой ?
нет, это сборка. у тебя еще тесты могут быть между. Воспринимай это как разные этапы одного конвеера.

не надо смешивать, так ты только усложняешь

Nurik
03.05.2018
16:04:02
Ну так если мне надо в процессе вытащить из репозитория код, который уже оттестирован и мне нужно только забрать статику. То почему это не CD ?

Даже в кубике есть Volume который тащит из git файлы, чтобы потом замонтировать их.

Google
Nurik
03.05.2018
16:05:25
gitRepo типа



делается это для того, чтобы статику которую будет обслуживать nginx можно было ему подмонтировать. А не собирать nginx со статикой, если это невозможно.

Под статикой я имею ввиду js,css и другие изменеяемые данные, которые будет отдавать nginx

@fes0r Можешь плиз, сказать, это я значит что-то делают не так ? Или это уже нельзя назвать деплоем в контексте Continious Deployment ?

Хотя, да все верно. git тут не нужен. Т.к. нужно было оформить статику как artifact. Но на момент интеграции вроде в gitlab не было артифактов. Видимо поэтому, меня смутило что при деплое не юзается git.

Сорри, был не прав.

Sergey
03.05.2018
16:28:02
Ну так если мне надо в процессе вытащить из репозитория код, который уже оттестирован и мне нужно только забрать статику. То почему это не CD ?
CD это весь процесс, от момента когда ты начал обсуждать фичу до момента когда она попадает на продакшен.

естественно VCS будет частью этого процесса

но deployment это определенная часть CD, маленькая.

Nurik
03.05.2018
16:29:21
но deployment это определенная часть CD, маленькая.
Понял, благодарю за разъяснения.

Sergey
03.05.2018
16:33:32
https://slides.com/sergeyprot-ko/deck-7#/

на вот - я для своих когда-то делал

Google
Nurik
03.05.2018
16:35:37
https://slides.com/sergeyprot-ko/deck-7#/
О, спасибо. Первый слайд зачетный.))

БОГАТЫРЪ
03.05.2018
16:56:07
можно доки

или пример

Mihail
03.05.2018
20:12:22
Mihail, [03.05.18 23:05] Здравствуйте, назрел небольшой вопрос, всегда ли нужно использовать сеттер к геттеру? к примеру я передаю данные через аргумент в геттер public function getUserTweets($screen_name) { return $this->twitterApi->getStatusesUserTimeline($screen_name); } если с сеттером то private $screen_name; public function setUserTweets($screen_name) { $this->screen_name=$screen_name; } public function getUserTweets() { return $this->twitterApi->getStatusesUserTimeline($this->screen_name); } нужно ли тут использовать вариант с сеттером и геттером или достаточно одного геттера?

Sergey
03.05.2018
20:19:43
а вообще при проектировании класса всегда смотри как он используется а не "ну прост"

ну и можешь эксперемента ради просто попробовать не использовать префиксы get и set и более адекватно называть методы, глядишь поможет

f4rt~
03.05.2018
20:21:58
в первом случае изменить незвание метода и уже не геттер, а нормальный метод

Mihail
03.05.2018
20:23:23
в том то и дело, что по префиксу понятно, что они делают, если get то что то возвращает

Sergey
03.05.2018
20:23:40
в том то и дело, что по префиксу понятно, что они делают, если get то что то возвращает
если у тебя только по префиксу понятно что они делают - у тебя беда с нэймингом)

Mihail
03.05.2018
20:24:16
это да, к сожалению

Sergey
03.05.2018
20:24:51
setUserTweets - что там за screen_name?

Mihail
03.05.2018
20:25:35
в ней лежит назвнание позовательского аккаунта в твитере

Sergey
03.05.2018
20:25:59
мммм почему оно screen?

Mihail
03.05.2018
20:26:00
пример "@lentaofficialru"

так в твитеровском api написано

f4rt~
03.05.2018
20:26:55
(new TwitterService())->userTimeLine($this->user);

хз, как предположение

Sergey
03.05.2018
20:27:05
так в твитеровском api написано
> The screen name, handle, or alias that this user identifies themselves with. screen_names are unique but subject to change. Use id_str as a user identifier whenever possible. Typically a maximum of 15 characters long, but some historical accounts may exist with longer names. Example:

Google
Sergey
03.05.2018
20:27:11
а еще там написано не юзать его как идентификатор)

f4rt~
03.05.2018
20:27:54
ну по LoD да)

Sergey
03.05.2018
20:28:26
(new TwitterService())->userTimeLine($this->user);
зачем userTimeLine а не просто TimeLine? есть какие-то другие таймлайны (я не шарю в твиттерах)

и зачем суффикс Service? и так понятно что твиттер это сервис)

f4rt~
03.05.2018
20:28:43
у меня тоже не слшком хорошо с неймингом :)

Sergey
03.05.2018
20:29:00
у меня тоже не слшком хорошо с неймингом :)
не я реально не шарю в твиттерах, может там другие таймлайны есть

Mihail
03.05.2018
20:30:14
эта функция ищет пользователя и получает его твиты screen_name это имя пользователя

Sergey
03.05.2018
20:30:51
эта функция ищет пользователя и получает его твиты screen_name это имя пользователя
в доке написано что как идентификатор пользователя лучше юзать id_str

Mihail
03.05.2018
20:31:44
id_str это id просто в виде "54643568" не кдобно очень

Bohdan
03.05.2018
20:32:12
ну так речь не про "удобно", а про "правильно"

Sergey
03.05.2018
20:32:12
id_str это id просто в виде "54643568" не кдобно очень
это идентификатор пользователя, неизменный. screen_name может меняться. что тут непонятного?))

Bohdan
03.05.2018
20:32:33
если тебе нужно получить ид юзера - должен быть эндпоинт для этого

Mihail
03.05.2018
20:33:29
у меня сервис который получает твиттер api и передаёт данные другому сервису который их обрабатывает(получает массивы с нужными данными, не нжные удаляет)

Bohdan
03.05.2018
20:34:45
я не шарю в твиттер апи, но там наверняка есть способ получить id_str по screen_name

и хранить уже id_str в базе

Maksim
03.05.2018
20:35:31
я тож не шарю, но вряд ли)) screen_name-то уникальным быть не должон)

f4rt~
03.05.2018
20:35:47
предполагаю там получаешь всю инфу о пользователе(объект User), а потом уже чем хочешь оперируешь в своих целях

Mihail
03.05.2018
20:35:52
я не шарю в твиттер апи, но там наверняка есть способ получить id_str по screen_name
да, верно, по screen_name я получаю массив со всеми данными

Google
f4rt~
03.05.2018
20:35:58
Sergey
03.05.2018
20:36:03
я тож не шарю, но вряд ли)) screen_name-то уникальным быть не должон)
он вроде уникальный но ты можешь его поменять и потом кто-то может занять твой

Maksim
03.05.2018
20:36:14
он уникальный, но может меняться
херь эти ваши твиттеры)

Mihail
03.05.2018
20:36:36
f4rt~
03.05.2018
20:37:17
id_str будет твоим PK

Mihail
03.05.2018
20:38:38
id_str будет твоим PK
тут думаю лучше просто id. Там есть id=12345 a id_str="12345"

это id который хранится в виде строки

понял, screen_name не вечен

так как лучше поступить, обычный метод с параметрами, или сеттеры и геттеры?

Admin
ERROR: S client not available

Mihail
03.05.2018
20:46:09
я понимаю,что можно и так и так, но ООП говорит про инкапсуляцию

Sergey
03.05.2018
20:53:01
я понимаю,что можно и так и так, но ООП говорит про инкапсуляцию
ООП штука такая которую мало кто понимает (потому что нет четкого определения что это такое с которым бы все были согласны).

геттеры и сеттеры - это не про инкапсуляцию, они там мимо проходили. В твоем конкретном случае все сводится к банальному нэймингу

Mihail
03.05.2018
20:54:48
кажется приходит просветление(поправте если не прав). В ООП нужно всё рассматривать как обьект и если я пишу в ООП то получаю такое private var1 private var2 public setMethod(var1 var2) $this->var1=var1; $this->var2=var2;

Evgeniy
03.05.2018
20:55:21
зачем ты делаешь мутабельные объекты ?

Evgeniy
03.05.2018
20:55:28
зачем ты изменяешь состояние потом ?

Sergey
03.05.2018
20:55:39
ну и да - если есть возможность делать имутабельно - это всегда проще

Evgeniy
03.05.2018
20:55:43
почему не сразу в конструктор нужные var передать

Google
Mihail
03.05.2018
20:56:43
почему не сразу в конструктор нужные var передать
не всегда же ты сразу устанавливаешь значения, они могут изменяться в коде

Evgeniy
03.05.2018
20:57:11
ну такое бывает довольно редко это раз

Mihail
03.05.2018
20:57:15
в конструкторе должны же быть общие значения для всех методов

Evgeniy
03.05.2018
20:57:16
во вторых есть with*

в конструкторе зависимости

в идеале

но это опять очень холиварно

давай конкретный пример класса и что он делает чтобы лучше подсказать

Mihail
03.05.2018
20:59:35
класс это общий Api в нём метод UserTweets который получает твиты пользоваетелей

в методе передается id пользвателя

Evgeniy
03.05.2018
21:01:00
$tweets = $api->tweets($userId); // самое очевидное

Mihail
03.05.2018
21:02:48
$tweets = $api->tweets($userId); // самое очевидное
я так и сделал, но подумал что очевидно не всегда хорошо, ООП не применятеся, вот и спросил совета у более опытных

Антон
03.05.2018
21:03:03
ну и да - если есть возможность делать имутабельно - это всегда проще
Когда то ты мне целую статью по неймингу давал

Evgeniy
03.05.2018
21:03:10
ну тоесть ты сделал что то типо билдера

Evgeniy
03.05.2018
21:03:51
$tweet = Api::builder()->setUserId($userId)->build();

это делается в том случае если параметров куча

Sergey
03.05.2018
21:04:05
> ООП не применятеся ты просишь о чем-то объект, чем не ООП

Evgeniy
03.05.2018
21:04:27
и некоторые и все они не необязательные

тоесть зачем усложнять если простая ситуация

Mihail
03.05.2018
21:05:08
$tweet = Api::builder()->setUserId($userId)->build();
немного не понял про билдер

Evgeniy
03.05.2018
21:05:40
немного не понял про билдер
вот я как то видео запилил https://www.youtube.com/watch?v=2THhUFNQGew&

Страница 1054 из 1387