@prophp7

Страница 1133 из 1387
F01134H
25.06.2018
09:00:05
айяя во славу пхп

Bohdan
25.06.2018
11:45:46
ммм, повернуть каждую точку?

Остап
25.06.2018
11:45:53
Может буду занудствовать, но вот что думаю на этот счет: 1 Комментарий по уроку и отзыв по курсу - две разные вещи и должны храниться отдельно, и связаны быть либо только с курсом, либо только с уроком 2 cource->user_id если это автор занятия или препод, то их может оказаться двое, лучше сделать связь многие ко многим с пользователями. При этом можно в связи указывать тип (препод, ученик) и тогда можно будет вытаскивать количество учеником по курсу. 3 У курса может быть дата начала и конец 4 Что такое прогресс - я не понял)) возможно это количество пройденных занятий, тогда существующая связь вполне актуальна, кроме указания курса, т.к. оно уже будет в связи курса с пользователем Удаление связи пользователя с курсом можно проводить указанием статуса 5 Биллинг в отдельную таблицу в обязательном порядке в виде поступлений и снятий с указанием причины, за что конкретно и т.д. Возможно придется делать оплату за конкретный курс, бонусы и т.д. Инфу хранить не агрегированную, чтобы можно было расчитать доходы по месяцам, дням, ну вы поняли)
2. да, но пока только я буду автором 4. список пройденных уроков - и текущий урок спасибо

Google
Vitaly
25.06.2018
11:48:48
Всё не так просто с полигонами.

https://en.wikipedia.org/wiki/Rotation_matrix

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

Bohdan
25.06.2018
11:57:09
По сути, чтобы повернуть полигон, необходимо повернуть каждую точку на нужный угол, относительно точки основания поворота.
собственно, я выше и написал) для ленивых - можно повернуть каждую линию полигона. будет та же формула использоваться

Anse
25.06.2018
11:58:50
Всем привет) не подскажите что почитать про патерны и архитектурные решения в разработке? А то чувствую что не хватает знаний в этом

Roman
25.06.2018
12:00:17
новая книжка мартина хорошая https://oz.by/books/more10682440.html

F01134H
25.06.2018
12:01:57
ага

как раз закончил читать

у чувака талант книги писать

Anse
25.06.2018
12:03:50
Больше спасибо за годноту)

Bohdan
25.06.2018
12:07:44
сорри, вникать не буду

https://stackoverflow.com/questions/3451061/how-to-do-correct-polygon-rotation-in-c-sharp-though-it-applies-to-anything

Google
Bohdan
25.06.2018
12:08:05
https://math.stackexchange.com/questions/1917449/rotate-polygon-around-center-and-get-the-coordinates

Roman
26.06.2018
06:45:47
[info] To run Phan with xdebug, set the environment variable PHAN_ALLOW_XDEBUG to 1. [info] To disable this warning, set the environment variable PHAN_DISABLE_XDEBUG_WARN to 1.как настроить ети настройки для phan

Roman
26.06.2018
06:52:19
а где создать .env file. я его не юзаю в проекте для конфигов

Bohdan
26.06.2018
06:54:14
тогда просто PHAN_ALLOW_XDEBUG=1 phan ну или как ты его запускаешь там

Max
26.06.2018
06:55:46
или в bash_profile добавь

Roman
26.06.2018
06:56:12
а как научить его дружить с фреймворком? PhanUndeclaredMethod Call to undeclared method \AppBundle\Controller\MainController::get он сейчас на все кидается

Max
26.06.2018
08:26:43
а как научить его дружить с фреймворком? PhanUndeclaredMethod Call to undeclared method \AppBundle\Controller\MainController::get он сейчас на все кидается
добавь папку с фреймворком (vendor?) в конфиге в directory_list[] чтобы она тоже парсилась, также добавь её в exclude_analysis_directory_list[] чтобы phan её не анализировал

Roman
26.06.2018
08:59:24
спасибо. помогло

Artem
26.06.2018
12:33:43
Предметная область тестирования =) Пытаюсь использовать DTO при общении приложения с внешним миром. Как я понял эти DTO можно разделить на 2 вида 1. DTO запроса к приложению 2. DTO ответа от приложения Есть кейс ответа от приложения, когда возвращается объект теста со списком вопросов, но вопросы бывают разных типов (с точки зрения предметной области). Насколько я понимаю - нет смысла воспроизводить иерархию вопросов из предметной области при построении структуры DTO, т.к. DTO - это уже не предметная область, а часть "протокола" обмена информацией приложения с внешним миром и у DTO уже не будет никакого поведения из предметной области, так что достаточно просто заполнить поле типа вопроса, чтобы внешний мир просто мог их различить. Т.е. мне достаточно только структур типа Test и Question. Эти вот мюсли - они адекватные или я что-то упускаю?

Roman
26.06.2018
12:36:14
если ответы разные то нет смысла конечто плодить для каждого свой DTO и можно обойтися двома типами

Sergey
26.06.2018
12:37:02
new ExcludeFields(['some', 'private', 'fields'], $someDTO)

можно вот так хэндлить различные вариации

в плодь до элиасов имен полей если очень хочется

и вообще трансформировать как-то на лету

а когда на каждый чих DTO - php не самый удобный язык для этого

хотя есть ситуации когда так проще - сказал - обезъянки делают. думать то никто не хочет особо. То есть я бы подходы от команды выбирал

Andrew
26.06.2018
12:38:58
new ExcludeFields(['some', 'private', 'fields'], $someDTO)
Спс за идею, мозг начал думать в другом направлении

Google
Rg
26.06.2018
12:41:15
всем привет! подскажите пожалуйста по докеру как его юзать на продакшине и нужно ли вообще? у меня задача – быстро на digitalocean разворачивать инстанс с ~10 микросервисами

Roman
26.06.2018
12:41:38
@docker_ru

Rg
26.06.2018
12:42:08
@docker_ru
понял) спасибо!)

Roman
26.06.2018
12:42:36
если есть толковый девопс то можна юзать

Andrew
26.06.2018
12:44:37
всем привет! подскажите пожалуйста по докеру как его юзать на продакшине и нужно ли вообще? у меня задача – быстро на digitalocean разворачивать инстанс с ~10 микросервисами
Смотря что в твоём понятии микросервис. Можно заюзать lxc для контейнеризации, можно вообще 10 инстансов задеплоить и роутить через nginx, все зависит от того, сколько времени ты готов потратить на изучение докера

Bohdan
26.06.2018
12:45:04
а еще кубер и сворм нет правды в этом вопросе

Artem
26.06.2018
12:45:59
new ExcludeFields(['some', 'private', 'fields'], $someDTO)
Ну да, логично это как-то автоматизировать, а то вручную много кода получается

Andrew
26.06.2018
12:46:33
А ещё можно задать вопрос, зачем нужно деплоить микросервисы, если для проекта их придумали юзать, а как деплоить - не придумали

Roman
26.06.2018
12:47:16
блин как phan научить не ругатся на Route как не используиемый путь, я ж его в анотации юзаю

Андрей
26.06.2018
12:51:47
Ну да, логично это как-то автоматизировать, а то вручную много кода получается
Создать объекты-трансформеры? league/fractal не решает проблему?

Sergey
26.06.2018
13:07:58
типа doctrine annotations плагин

Roman
26.06.2018
13:11:47
Artem
26.06.2018
13:20:51
Создать объекты-трансформеры? league/fractal не решает проблему?
Спасибо. Наверное решает, посмотрел fractal - вроде выглядит как то, что нужно, дата маппер такой. Но я просто только учусь, поэтому ковыряю руками, да и примеры у меня небольшие. Хотя изначально вопрос был о том, стоит ли отображать (воспроизводить) структуру наследования из предметной области на DTO :D

Admin
ERROR: S client not available

Artem
26.06.2018
13:31:50
для чего оно нужно, как ты думаешь?
я думаю это общий интерфейс для общения с приложением и защищает от использования понятий предметной области вне приложения.

Google
Sergey
26.06.2018
13:35:43
у тебя есть штука снаружи и штука внутри

Artem
26.06.2018
13:35:57
например если много способов ввода информации 1. Вэб морда 2. Какие-нибудь xml файлы на фтп То в случае 1 - приходящие данные будут хттп запросом, а в случае 2 будет исходный файл, но приложению надо понимать и то и другое, поэтому вводится дополнительный слой преобразований в тот вид, который понятен приложению

Artem
26.06.2018
13:39:14
какая альтернатива DTO?)
не знаю =\ нет идей. Использовать один способ ввода информации :D

Sergey
26.06.2018
13:40:10
не знаю =\ нет идей. Использовать один способ ввода информации :D
то есть вопрос только в унификации интерфейсов на уровне приложения. Есть юзкейс - и не важно какой UI, интерфейс приложения одинаковый. И не важно класс у тебя DTO представляет или массивчик (это уже к вопросу описания контракта)

ну мол идея ж только в том что бы был только один способ что-то сделать, ибо иначе у нас есть 2 места в коде которые делают одно и то же. Верно?

Sergey
26.06.2018
13:44:22
ну то есть, нельзя рассуждать о DTO отдельно от общего контракта приложения. И о структуре DTO. И тем более смысла нет "подгонять" DTO под что-то что не должно протекать наружу

Artem
26.06.2018
13:46:43
да, получается нет смысла повторять иерархию наследования

Sergey
26.06.2018
13:51:29
а теперь поговорим про иерархии наследования - если ты про extends SomeClass - плохо (99% что плохо)

Artem
26.06.2018
13:51:38
У меня на работе было аж 3 способа ввода информации, а вот этого вот общего контракта приложения не было. Это было очень больно. До сих пор пятая точка болит когда вспоминаю :D

а теперь поговорим про иерархии наследования - если ты про extends SomeClass - плохо (99% что плохо)
Ну, у меня 2 подтипа вопросов 1. Вопрос на который можно дать только 1 ответ 2. Вопрос на который можно дать 1 и более ответов В общем у них немного разные инварианты, поэтому я решил сделать 2 класса

Sergey
26.06.2018
13:59:05
Ну, у меня 2 подтипа вопросов 1. Вопрос на который можно дать только 1 ответ 2. Вопрос на который можно дать 1 и более ответов В общем у них немного разные инварианты, поэтому я решил сделать 2 класса
если у них разные инварианты - могут ли они входить в одну иерархию типов? ну то есть, можешь ли ты там где юзается один тип подставить другой что бы тот не сломался?

Artem
26.06.2018
14:02:48
если у них разные инварианты - могут ли они входить в одну иерархию типов? ну то есть, можешь ли ты там где юзается один тип подставить другой что бы тот не сломался?
С одной стороны да, потому-что интерфейс у них один и тот же, а с другой стороны т.к. инварианты разные - при попытке сделать что-то несоответствующее инварианту (добавить больше одного варианта ответа в вопрос, у которого может быть максимум 1 ответ) вылезет исключение.

Sergey
26.06.2018
14:09:54
короч читай про принцип подстановки барбары лисков

Anton
26.06.2018
14:28:50
https://matthiasnoback.nl/2018/06/doctrine-orm-and-ddd-aggregates/ А как вы сдруживаете Доктрину и DDD (или не ddd, а например избавляетесь от нелепых геттеров и сеттеров)?

Artem
26.06.2018
14:29:07
то что у них один и тот же интерфейс не говорит о том что они могут входить в одну иерархию типов или нет. У них контракт должен быть совместимый для этого.
получается инварианты входят в контракт? Я об этом почему-то не думал. Хотя вроде логично, что если прекондишены и посткондишены входят в контракт, то инварианты тоже =\ Получается я сужаю область применения подтипов при помощи инвариантов, а это и правда нарушение LSP Т_Т

Dmitry
26.06.2018
14:29:39
а какая связь между доктриной и сеттерами/геттерами? ;)

Google
Artem
26.06.2018
14:30:03
а план был хорош ?

Sergey
26.06.2018
14:30:07
https://matthiasnoback.nl/2018/06/doctrine-orm-and-ddd-aggregates/ А как вы сдруживаете Доктрину и DDD (или не ddd, а например избавляетесь от нелепых геттеров и сеттеров)?
1. доктрине не нужны геттеры и сеттеры (сеттеры никогда небыли нужны, геттеры все еще нужны для id что бы не подгружать релейшен, но в целом не очень) 2. доктрина не особо нужна на операции чтения, как и DDD

во славу Хоара

Bohdan
26.06.2018
14:30:43
про геттеры и ид есть куда почитать?

Sergey
26.06.2018
14:31:26
про геттеры и ид есть куда почитать?
https://github.com/doctrine/doctrine2/pull/6719

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