
?
09.12.2017
02:36:50
P.S. опыт общения с симфони: 2 месяца

Artem
09.12.2017
05:49:09
тут было обсуждение, что завязка формы на сущности - зло. если кто в теме, то объясните как правильно. контекст: делаю всякие модели, если форма нетривиальна (динамическая, композиция сущностей и т.д.). но большинство форм имеют сущость в data_class. чем это фигово и как быть?

Danil
09.12.2017
06:01:29
http://seyferseed.ru/ru/php/ne-ispolzujte-sushhnosti-v-formah-symfony-ispolzujte-luchshe-obekty-znacheniya.html#sthash.gcG1FLSP.6NKKWrUo.dpbs

Google

Artem
09.12.2017
06:12:51
спасибо. увидел там что-то вроде C[без Q]RS. не очень понравился нейминг в статье: я бы называл такие реквесты командами. отправлял бы их в шину команд. а так идея понятна.
в статье не очень понятна мотивация такого решения. я бы добавил, что с появлением тайп хинтинга методы с такой сигнатурой setTitle(string $a) могут приводить к TypeError, если поле в форме будет пустым. можно сделать setTitle(string $a = null), но это может противоречить намерению гарантировать атрибут title !== null. Ну и от сеттеров можно избавиться в пользу VO.
а как по-ветерански готовить объекты для представлений? тут был вариант с проекциями (от @fes0r). кто еще как делает, чтобы сущности не шарить?

Jan
09.12.2017
06:49:18
Либо изначально делать выборку не сущностей, а каких-нибудь массивов.

?
09.12.2017
09:35:37

Sergey
09.12.2017
09:43:22
https://www.tiobe.com/tiobe-index/
чет пхп сдает позиции

Artem
09.12.2017
09:46:21
странно что R выполз

Sergey
09.12.2017
09:47:16
big data ж

Artem
09.12.2017
09:47:34
эт понятно
все равно это не массовый сегмент рынка

Google

Sergey
09.12.2017
09:48:26
Scratch тоже как бы)

Artem
09.12.2017
09:49:30
о, прикольная штука)
вот чем полезны эти индексы..

Sergey
09.12.2017
09:51:16
исследуют популярность
как часто ищут их в гугле, ютубе, пишут на блогах и тд
котлин в 2016м был на 99м месте, в июне на 43м и щас уже на 28м


smile
09.12.2017
10:24:58
Есть вопрос, который лучше постараюсь сразу обьяснить на примере.
Есть самописная erp/crm система (кодовая база которой в ужасном состоянии, который боишься трогать и всё это на устаревшем стеке) далее буду называть монолит.
У монолита есть сотрудники.
У сотрудников есть: должности, офисы, имена.
Понадобилось сделать небольшой фановый магазин для сотрудников с основными функциями:
- дать возможность задавать правила начисления бонусов для сотрудников (по ролям, должностям с определенной переодичностью)
- дать возможность покупать товары за начисленные бонусы (доступность товара для сотрудника - ограничивается его наличием в офисе)
Собственно в чем сложность - не хочется писать этот магазин внутри монолита, а сделать его отдельно.
Изначально была очень простая идея: пишем отдельным приложением магазин, синхроним переодически по апи из erp/crm сотрудников, офисы, должности (данные изменяются редко) - сохраняем в базу магазина. Всю логику начисления бонусов, управления товарами, покупки пишем в магазе - вроде все счастливы.
Но вчера мы задумались что на самом деле в такие отдельные приложения можно вынести еще ряд функционала из нашего монолита приведя его в порядок. Например : учёт рабочего времени. Он нафиг нафиг не надо монолиту, кроме как для месячного отчета, но содержит в себе кучу логики - праздники в различных офисах, отгулы, больничные и т.д.
И вроде можно сделать все опять очень просто - засинкать из монолита нужную для учёта рабочего времени инфу в еще одну базу и вроде опять все довольны.
Все это начинает смахивать на микросервисы.
Вчера обсудили это с чуваками из другого отдела, которые типо варят микросервисы. Они заговнили это всё, сказав что дублировать инфу синкая её это рак и что нужно тянуть данные по апишке из монолита как-будто из собственной базы.
Тут же возник вопрос: оокей, если для создания правила начисления бонуса нужна инфа о должности и офисе сотрудника - как я такое правило сохраню в магазине? Ответом было: значит правила должны лежать в монолите.
Если придерживаться этой логике, то тут я вообще ничего не понял:
- правила я не смогу держать в магазине, потому что мне нужны офисы сотрудников - уезжает в монолит
- товары я тоже смогу держать в магазине, потому что мне нужны офисы - тоже уезжает в монолит
- для каталога нужны товары, а они в монолите - тоже уезжает в монолит? :D
Может кто че подсказать как такие штуки лучше организовывать или скинуть чтива по вопросу хранения данных, если одна и таже инфа нужна в несколько приложениях?


Sergey
09.12.2017
10:26:06
Sam Newman и в принципе многие вопросы отпадут
основные данные будут храниться в твоем монолите, но айдишники тех же юзеров могут лежать в отдельных базах и там использоваться

smile
09.12.2017
10:27:55
т.е если допустим я хочу изменить наличие товара - то офисы подтягиваю с монолита, товары из своей базы и отдаю всё это на фронт?

Sergey
09.12.2017
10:28:24
да
только убедись что в монолите пустой ответ от апи приходит за хотя бы десяток мс, а не несколько секунд)

smile
09.12.2017
10:29:39
ага понял, т.е. вконце подход я слишком буквально воспринял)) по сути могу правила сохранить в магазине с набором айдишек (которые будут выступать ссылками на монолит)

Sergey
09.12.2017
10:30:13
да, как-то так и будет

smile
09.12.2017
10:30:51
остается только вопрос, а что делать если офис удалили. Как лучше подчищять данные в магазине?

Sergey
09.12.2017
10:31:07
либо не подчищать, либо слать ивенты

smile
09.12.2017
10:31:13
слать из монолита сразу екшен какойто аля евент

Sergey
09.12.2017
10:31:30
либо делать раз в какое-то время синхронизацию
в книге это все есть

Google

smile
09.12.2017
10:32:10
http://shop.oreilly.com/product/0636920033158.do
я так понимаю эта?

Sergey
09.12.2017
10:32:15
да

smile
09.12.2017
10:32:38
спс, качаю)
вообще огонь =) ?

Sergey
09.12.2017
10:35:12
сразу в ней может показаться много капитанства, но надо дочитать до конца
а то недавно был на митапчике, там какой-то чувак то ли техлид, то ли сто не помню, рассказывал как они круто перевели все на микросервисы, не вдаваясь в тех детали. а когда просили типа "посоветуйте литературу или источники для изучения темы молодым архитекторам", оказалось что они наслушались базвордов, прочитали статью на хабре и пошли у себя хер пойми шо делать без предварительного изучения тематики

smile
09.12.2017
10:37:53

Sergey
09.12.2017
10:38:05
hype driven development

Alan
09.12.2017
10:39:59
fuckup driven)


smile
09.12.2017
10:42:11
а то недавно был на митапчике, там какой-то чувак то ли техлид, то ли сто не помню, рассказывал как они круто перевели все на микросервисы, не вдаваясь в тех детали. а когда просили типа "посоветуйте литературу или источники для изучения темы молодым архитекторам", оказалось что они наслушались базвордов, прочитали статью на хабре и пошли у себя хер пойми шо делать без предварительного изучения тематики
На последнем митапе что был, тоже схожая ситуация: был- чувак который за GraphQL рассказывал, типо он у них в проде и все такое. Думал интересно будет, чтото расскажет хоть на чем они факапили или что поменяли бы. Но нет, он - рассказал в общих чертах по доке что такое graphql без малейшего примера на хоть какуюто техчасть и месседжем - типо все изи, все удобно - вперед юзайте. А на вопросы отвечал в стиле - graphql очень гибкий - делайте как вам удобно ???
я так понимаю они тоже по схожему пути пошли "пошли у себя хер пойми шо делать без предварительного изучения тематики"


Sergey
09.12.2017
10:43:24
некоторые до сих пор воркеры на концах очередей называют микросервисами

Bohdan
09.12.2017
11:10:09

Sergey
09.12.2017
11:11:00
ага, только кодовая база общая, база данных тоже общая
ну или тоже мой любимый паттерн - shared database. вроде как разбили код на кучу сервисов, а базу продолжают юзать

?
09.12.2017
11:11:30

Sergey
09.12.2017
11:12:13
https://twitter.com/mathiasverraes/status/711168935798902785
во

smile
09.12.2017
11:12:31
???

Google

Bohdan
09.12.2017
11:13:12
это прямо совсем буллщит? или так, иногда можно?

Sergey
09.12.2017
11:13:32
прямо ну совмем булшит
единственные кейсы это если у тебя разделен экспорт и импорт
ну типа с одной стороны ETL, а с другой стороны апишка, которая отдает это все
какой-нибудь warehouse сервис

Admin
ERROR: S client not available

Bohdan
09.12.2017
11:14:21
мне в принципе понятно рвение народа держать общую базу
etl?

Sergey
09.12.2017
11:14:40
extract transform load
прочитали из xlsx, обработали, залили в базу
даже если нужно посчитать аналитику и статистику это тоже не повод пускать в чужую базу


Вадим
09.12.2017
12:07:30
Придумал себе такую факультативную задачку, хочу сделать базовую библиотеку классов для работы с двойной бухгалтерской записью.
Есть транзакция, у каждой транзакции есть проводки, где отображается оборот. У каждой проводки есть референсы, это могут быть любые обьекты, они детализируют проводку.
У каждой транзакции может быть owner, например документ какой-то который по которому создана эта транзакция, а может и не быть если транзакция создана в ручную.
Хочется сделать так, что б оно не зависело от фреймворка. А в каком фреймворке будет использовано, там и будет реализация хранения.
Основной интерфейс (Книга) LedgerInterface. По сути круд для транзакций.
Пока что, проектирую на уровне интерфейсов, прошу коментов. Вобщем обосрите, плз :)
https://github.com/misterx/accounting/tree/master/src

Aleh
09.12.2017
13:52:00

Alan
09.12.2017
13:55:54

darkwoolf
09.12.2017
16:57:31
Такой вопрос.Делаю блог.Как мне сделать так чтобы можно было переходить по кнопке в статье на полный вариант.Через адресную строку могу зайти на статью
П.С. Симфони 3.4
То есть мне нужно в ссылку на статью добавить слаг
как это сделать
?
Ладно, решил так делать.<p><a href="{{ 'blog/' + post.id }}">Read more</a></p> но при этом переходит по сслыке http://blog/app_dev.php/1 пропуская часть blog

Google

Squizshee
09.12.2017
17:08:09
https://symfony.com/doc/3.4/routing.html

darkwoolf
09.12.2017
17:10:02
Сенк ю

Arky
09.12.2017
17:38:43

darkwoolf
09.12.2017
17:41:42
href={{ path=" " }}
Я уже нашёл решение href="{{ path('show_post', {'id': post.id}) }}" и добавил нейм в екшн который назвал show_post

Arky
09.12.2017
17:42:56

Andrey
09.12.2017
18:09:12
Арки уже менторит

Борис
09.12.2017
18:12:41
Кек, тоже заметил :-)

Arky
09.12.2017
18:48:49
сорян :D

vlad
09.12.2017
19:09:03
ребят, что будет лучшим опытом по практике?
последнее время выхватываю всё кусками
то с событиями познакомился, то ещё с чем
но всё же - кусками
скажите по своему опыту, какой проект вам дал больший опыт? когда учились

Антон
09.12.2017
19:21:09
Интернет магазин пили

Егор
09.12.2017
19:21:39
Вот хорошая задача для джуна: https://gist.github.com/codedokode/8733007
Позволит основательно изучить фреймворк. А чатики ИМХО - это с пушки по воробьям.

vlad
09.12.2017
19:26:20
спасибо большое!
сейчас прочту, по-началу - очень интересно
и ещё вопрос к знающим и пробовавшим
насколько это хорошо - совмещать symfony с, например, angular'ом?
и как часто это бывает нужно на практике и боевых проектах?