
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
Всем привет) не подскажите что почитать про патерны и архитектурные решения в разработке? А то чувствую что не хватает знаний в этом

Vitaly
25.06.2018
11:59:55

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

Max
26.06.2018
06:50:00
там же все написано

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

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

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

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

Andrew
26.06.2018
12:44:37

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

Artem
26.06.2018
12:45:59

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

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

Андрей
26.06.2018
12:51:47

Sergey
26.06.2018
12:55:02

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

Sergey
26.06.2018
13:28:16
для чего оно нужно, как ты думаешь?
что дает?

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 будет исходный файл, но приложению надо понимать и то и другое, поэтому вводится дополнительный слой преобразований в тот вид, который понятен приложению

Sergey
26.06.2018
13:36:16

Artem
26.06.2018
13:39:14

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

Artem
26.06.2018
13:43:29

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

Sergey
26.06.2018
13:59:05

Artem
26.06.2018
14:02:48

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

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

Google

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

Sergey
26.06.2018
14:30:07
во славу Хоара

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

Sergey
26.06.2018
14:31:26