
Dmitriy
07.04.2017
07:19:16
ну я так понимаю он топит за то чтобы всегда получалось )

Andrey
07.04.2017
07:19:20
и начинаем обсуждать сроки и скоуп

Dinar
07.04.2017
07:19:43
Это не отменяет факта что ты будешь рефакторить.

Andrey
07.04.2017
07:19:55
как это простите связано?

Google

Andrey
07.04.2017
07:20:14
если сущности изолированы, поведение четко очерчено
есть моменты в которых их поведение будет изменено
но оно покрыто тестами и покажет, где сломано

Dinar
07.04.2017
07:21:20
И у меня порыто тестами. И бехат и юнит.
И показывает, где ломается.
Блин, ок, чувак.
Я тебя услышал

Andrey
07.04.2017
07:21:48
в любом случает контракт между распределенными системами не должен меняться

Дмитрий
07.04.2017
08:41:07
в репо мы пишем только работу с таблицами (получить данные, сохранить данные), правильно?
1. из контроллера или сервиса обращаюсь к методу в репо (получить данные)
2. в контроллере или сервисе, делаю необходимые операции с данными
3. чтобы записать результат эти данные передаю назад в репо

Andrey
07.04.2017
12:03:45
есть практика тонких контроллеров
это проще покрыть тестами и реиспользование кода улучшается
вся логика на обработку данных в сервисах, репо делает обычно лишь персист готовых сущностей и выдачу по фильтрам
архитектура MVC хороша до момента появления предоставляемого для автоматизации апи, дальше приходится делать слои (авторизация, валидация, трансформации в нужный формат, версионирование) и в этот момент на сцену выходят мидлвари

Google

Boris
07.04.2017
13:17:22
в 4й версии планируют мидлвейр интересно или как в 3й на ивентах городить

Sergey
07.04.2017
13:18:15
а чем ивенты не устраивают?

Boris
07.04.2017
13:19:31
сильно широкая область применения , те же ларавелевские мидлвейр как-то проще по структуре и понимания

Sergey
07.04.2017
13:21:32
привет, ипользую fosrest. Есть такая задача, нужно где-то для половины роутов наличие обязательного кастомного заголовка, как лучше такую ситуацию разрулить?

Sergey
07.04.2017
13:21:47
ивентами)

Boris
07.04.2017
13:22:48
да, ими родными =)
у меня много входных данных на лету трансформируется на ивентах

Sergey
07.04.2017
13:23:21
создал листенер на kernel.request, мне нужно для половины роутов если заголовка нету кидать exception, а для остальных ничего не делать. Как с роутами быть не понимаю

Sergey
07.04.2017
13:23:45
у тебя в ивенте доступа информация по реквесту и контроллеру
выбирай по каким-нибудь признакам и бросайся эксепшенами
типа по FQCN контроллеров

Sergey
07.04.2017
13:26:39
а что-нить типа кастомной аннотации у контроллера можно сделать?

Sergey
07.04.2017
13:26:53
да
можешь кастомные параметры к роуту просто добавить

Sergey
07.04.2017
13:27:32
понял, спасибо!

Daniel
07.04.2017
13:36:11
А я вот не понял по-поводу мидлваров
Можно же написать ивент листенер, который будет смотреть на:
public function secureAction(MiddlewareFilterByUserAge $middleware)
при каждом запросе. Оттуда потом получать объект этого мидлвара и запускать его.
По-любому уже есть че нибудь готовое

Andrey
07.04.2017
13:44:00
Написать свое на базе psr7
Все готовое как yii, очень специфичное

Google

Andrey
07.04.2017
13:45:43
Раньше диакторос был
Ща есть спека
Старайтесь без аннотаций, проще парсер на неоне подключить
И иметь котлеты отдельно от мух
Yaml тяжеловат по ресурсам

Evegniy
07.04.2017
14:19:28
Всем привет. Подскажите, а где для дактрины для типа array найти дефолтное значение? достаточно долго уже ищу, найти не могу

Dima
07.04.2017
14:26:29
http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#array-types

Evegniy
07.04.2017
14:32:34

Sergey
07.04.2017
14:47:22
совет по доктрине. не пытайтесь кешировать записи по айдихе и делать методы типа getById вместо стандартного find

Andrey
07.04.2017
14:50:40
в моей практике именно оверюс find приводил к аду
если что-то надо - надо писать dql

Sergey
07.04.2017
14:51:09
как именно приводил?

Andrey
07.04.2017
14:51:51
в бизнес логике редко идет поиск по одному полю

Sergey
07.04.2017
14:52:03
эм
я говорю за find по айдихе
первичный ключ, а не поиск по какому-то полю

Andrey
07.04.2017
14:52:17
ребята сначала пытались сделать findBy([])
и это характерно убивало бд

Sergey
07.04.2017
14:52:33
не, findBy это другая история

Andrey
07.04.2017
14:53:26
вообще лучший способ это иметь prepared statements

Google

Sergey
07.04.2017
14:53:49
для таких вещей заводить нужно отдельные методы в кастомных репозиториях

Andrey
07.04.2017
14:54:51
ваще доктрина очень плохо дружит с неинтовыми айдишниками

Sergey
07.04.2017
14:55:06
uuid нормально живет

Andrey
07.04.2017
14:57:07
uuid это инт)

Sergey
07.04.2017
14:58:01
если у тебя инт на 128 бита тогда да

Dinar
07.04.2017
15:05:56
И о скорости
Его невозможно эффективно индексировать

Admin
ERROR: S client not available

Dinar
07.04.2017
15:06:28
И почему UUID -это int?
123e4567-e89b-12d3-a456-426655440000
Это вроде как никак не int

Sergey
07.04.2017
15:09:10

Dinar
07.04.2017
15:09:27
Потому что не строится по нему бинарное дерево
Нормальное
Огромное и не быстрее чем обычный поиск

Sergey
07.04.2017
15:10:57

Dinar
07.04.2017
15:11:20
А ок. Не задумывался.
Тогда вопрос с поиском отпадает наверно

Sergey
07.04.2017
15:12:02

Dinar
07.04.2017
15:12:11
Если хранить как текст - есть

Google

Sergey
07.04.2017
15:12:36
храни его в бинарном виде
в 16 байт влазит

Dinar
07.04.2017
15:12:47
А по нему можно нормально искать?
Бинарный как PK?
Новый мир какой-то для меня :)

Sergey
07.04.2017
15:16:08
да, нет никаких проблем с ним
в кассандре и других распределенных базах же живут как-то без инкрементов

Dinar
07.04.2017
15:18:48
Ну это же не SQL базы данных
Я понимаю, что и в монде там Object ID Не простой int
Но мы-то говорим про MySQL, PgSQL и т.д.
Если писать PK как UUID текст, проблемы со скоростью поиска очень быстро появятся по мере роста данных

da horsie
07.04.2017
15:22:42

Dinar
07.04.2017
15:23:08
Потому что текст уникальный, не индексируемый нормально.

da horsie
07.04.2017
15:24:44
http://thebuild.com/blog/2015/10/08/uuid-vs-bigserial-for-primary-keys/
Вот этот текст утверждает обратное

Andrey
07.04.2017
15:25:09
есть стенд от перконы

da horsie
07.04.2017
15:25:35

Andrey
07.04.2017
15:25:37
https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/

Dinar
07.04.2017
15:25:57
Сам не пробовал. Говорю на основании того, что читал где-то.
Допускаю, что могу ошибаться.