@symfony_php

Страница 776 из 1418
Vladislav
24.03.2018
23:10:50
поддерживают же

очень медленно

Who
24.03.2018
23:10:56
да?

аа))

Google
Vladislav
24.03.2018
23:10:58
но поддерживают

Andrey
24.03.2018
23:11:02
но, если ты только зашел в это все - бери и юзай) потом через какое-то время прозреешь и выбросишь ))
a few moments later... "ой, я его юзаю в одном проекте, так исторически сложилось, но не советую"

Vladislav
24.03.2018
23:11:26
ну а что советовать чуваку? идти в доку смотреть и не понимать как написать свой юзер провайдер?

Andrey
24.03.2018
23:11:50
стебу)

Vladislav
24.03.2018
23:11:55
можете бросаться камнями, но если чувак новичок уровня джуна который только вот вот что-то пытается делать - пусть берет фос и норм

Who
24.03.2018
23:12:33
дак а гайдов в нете какбудто больше и нет никаких

Vladislav
24.03.2018
23:12:33
что-то да контрибютят

Who
24.03.2018
23:12:48
ага, вижу

Andrey
24.03.2018
23:12:50
всё ок. С секьюрити сам не сразу въехал. Правда и фос не ковырял на тот момент

Vladislav
24.03.2018
23:12:58
всё ок. С секьюрити сам не сразу въехал. Правда и фос не ковырял на тот момент
ну я как-то засел на пару дней и разобрался оч хорошо полазив по сорцам) понимаю как создаются фаерволы, что на каком этапе и оч помогло)

Who
24.03.2018
23:13:33
дальше будет фиксить/чинить/менять по мере надобности
и с фреймворком разберусь хорошенечко уже)

Google
Vladislav
24.03.2018
23:13:55
ну вот) так что иди сделай что-то рабочее и будешь менять части как только они будут ботлнеком

на твоем этапе ща главное решить задачу, а не задрочить код

Who
24.03.2018
23:14:39
согласен

Vladislav
24.03.2018
23:15:14
там есть гайд как lexikjwt + fosuserbundle склеить

Andrew
25.03.2018
09:03:31
да, доки по сукурити имеют много букаф

Konstantin
25.03.2018
12:30:53
касательно такого момента "entity should always be valid" - как проверять уникальность только что созданой сущности до persist/flush ?

f4rt~
25.03.2018
12:31:28
у тебя констрейнты в базе для чего даны

Konstantin
25.03.2018
12:31:42
так это в базе

мне не надо уже в конце это проверять и ловить uniqueConstraint

мне надо вот прям тут на месте

f4rt~
25.03.2018
12:33:10
UniqueEntity/UniqueEntityValidator

Konstantin
25.03.2018
12:35:10
UniqueEntity/UniqueEntityValidator
ну так это сработает когда я буду вызывать flush, но на текущем уровне у меня нет entityManager чтобы флэшнуть. можно конечно в репозитории создать save($entity) а там внутри уже $this->_em->persist/flush, но это кажется грязный хак, не?

тогда уникальность то как бы проверится "на месте", по идее

f4rt~
25.03.2018
12:35:57
какой профит отказываться от персиста/флаша, запихивая их в один метод ;c

пинай @fes0r , а я послушаю, мне самому интересно

но я нахожу твой кейс, чутка странноватым

имхо

Konstantin
25.03.2018
12:36:57
профит того что доктрина при записи проверит на уникальность и если такая запись есть вылетит исключение которое я поймаю и пойму что это уже дубликат, и не буду создавать дальше связи сущности с другими сущностями (чтобы потом не удалять их)

Google
f4rt~
25.03.2018
12:37:19
касательно такого момента "entity should always be valid" - как проверять уникальность только что созданой сущности до persist/flush ?

Konstantin
25.03.2018
12:38:43
я понимаю что доктрина сама откатит прямые релейшны. а если вот я ручками их создаю без доктрины? надо будет и руками все это откатывать, те же файлы например

Sergey
25.03.2018
12:38:45
касательно такого момента "entity should always be valid" - как проверять уникальность только что созданой сущности до persist/flush ?
уникальность сущности не относится к самой сущности. Дальше - много вопросов о том что ты и как пихаешь. У меня например есть штуки которые нельзя разрулить просто ключами в базе - потому приходится чрезе рэдис ставить писсемистик лок при добавлении в репос и тот уже кидает ошибку

Konstantin
25.03.2018
12:38:52
но ведь если проверить на уникальность заранее можно этого ничего не делать

Sergey
25.03.2018
12:40:02
но ведь если проверить на уникальность заранее можно этого ничего не делать
ну так проверяй, главное исключить вероятность того что между "проверкой" и "вставкой" никто не успеет вставить)

ну то есть гарантируй атомарность а потом пляши

Konstantin
25.03.2018
12:40:14
так я не знаю как

вот и спрашиваю как это сделать без вызова persist+flush

f4rt~
25.03.2018
12:40:41
но ведь каждая проверка на уникальность = +1 запрос в базу, вряд ли можно их как-то заперсистить и заккомитить все сразу

Sergey
25.03.2018
12:42:14
вот и спрашиваю как это сделать без вызова persist+flush
ну вот смотри - у меня есть ситуация когда ни персист ни флаш мне ответа на вопрос не дают)

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

пришел запрос - сказал мне "я собираюсь машнить чето с этой фигней". Остальные штуки будут ждать пока ресурс освободится. Семафор типа или мьютекс

f4rt~
25.03.2018
12:44:13
дык я о том же

Sergey
25.03.2018
12:44:42
интересное наблюдение - 90% ситуаций когда у меня возникал эксепшен что "не уникальная запись" - это когда юзер два раза кликал по кнопке и уходило два запроса

потому "проверка заранее" не всегда имеет смысл

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

Konstantin
25.03.2018
12:45:28
подожди это куда то в глубь уже уходите. давай проще - вот есть dto, есть сущность. я делаю например $newEntity = $someFactory::makeEntityFromDTO($dto); как мне этот $newEntity проверить что он уникален, пусть например по комбинации 2 полей? например name-description

f4rt~
25.03.2018
12:45:53
ну я к тому, что не вижу профита проверять заранее, это почти всегда N+1 проблема, а констрейнты в базе и ее целостность, самый простой вариант

Google
Sergey
25.03.2018
12:45:56
не надо усложнять

f4rt~
25.03.2018
12:46:04
в чем профит, чекать до персиста, не понимаю

Konstantin
25.03.2018
12:46:04
хаха

дак я про это и спросил

Sergey
25.03.2018
12:46:24
при флаше у тебя будет конкретное исключение - конфликт бла бла бла

вот его транслируешь клиенту как "ты уже зареган, может быть ты просто пароль забыл?!"

но далеко не всегда можно повесить индекс в базе и быть счастливым)

Admin
ERROR: S client not available

Sergey
25.03.2018
12:47:24
хотя... не пожалуй это редкий кейс...

f4rt~
25.03.2018
12:47:37
но когда можно не усложнять

лучше не усложнять)

Sergey
25.03.2018
12:47:56
но бывает, у меня например юзерам запрещено иметь одинаковый email но в некоторых ситуациях (групповые аккаунты) - можно. Правда тут больше проблема с херовой моделью данных но я пока не смог в этом убедить коллег

Konstantin
25.03.2018
12:49:37
так в конце концов

чтобы проверить уникальнотсь надо попытаться сохранить объект в базе, и все? других способов нет никаких ?

зачем проверять "до" это уже другой вопрос)

f4rt~
25.03.2018
12:50:57
ну можешь метод в модели сделать

checkIfExist

Konstantin
25.03.2018
12:51:07
я хотел бы в репозитории сделать этот метод

это вполне логично было бы. а там внутри уже try/catch с возвратом true/false

Google
f4rt~
25.03.2018
12:51:52
просто пока ты говоришь "зачем проверять до, это уже другой вопрос", никто не понимает какого рода профит ты пытаешься получить переливая из пустого в порожнее

Konstantin
25.03.2018
12:52:39
просто пока ты говоришь "зачем проверять до, это уже другой вопрос", никто не понимает какого рода профит ты пытаешься получить переливая из пустого в порожнее
не обижайся но я часто вижу вопросы, не только тут, вообще, в духе "зачем". зачем - какая разница ) все любят спрашивать зачем )

Sergey
25.03.2018
12:52:55
тут вопрос в том что вероятнее - что у тебя два запроса которые пытаются вставить что-то в одно и то же время (и тут только уповать на индексы в базе, или другие варианты локов) либо запросы точно приходят в разное время и ты можешь гарантировать что стэйт между проверкой и записью не поменяется

не обижайся но я часто вижу вопросы, не только тут, вообще, в духе "зачем". зачем - какая разница ) все любят спрашивать зачем )
от задачи которую ты решаешь зависит решение которое эффективнее для этой задачи. Вот почему все спрашивают зачем.

иногда путем нескольких вопросов "зачем" можно придти к тому что задача неверно поставлена или цели неверны

Konstantin
25.03.2018
12:53:52
нет, я не пытаюсь уйти от случая когда дважды нажали и отправили в одну секунду

Sergey
25.03.2018
12:54:15
и это не только про программистов - тебе когда заказчик приходит с просьбой запихнуть эту кнопочку и что бы она вот так вот мигала когда что-то происходит - ты должен разобраться нафига ему эта кнопочка и какую проблему он хочет решить

f4rt~
25.03.2018
12:54:22
не обижайся но я часто вижу вопросы, не только тут, вообще, в духе "зачем". зачем - какая разница ) все любят спрашивать зачем )
так это самый важный вопрос, он поможет тебе понять какого рода профит ты пытаешься получить и, возможно, заставит тебя обдумать все еще раз, может то, что ты делаешь, лишено смысла

Dmitry
25.03.2018
12:55:29
на энджинксе лимитировать число запросов в секунду ;)

f4rt~
25.03.2018
12:57:13
@fes0r а как ты борешься с парсерами, в случае апихи?

f4rt~
25.03.2018
12:57:27
я тут недавно доклад от 2гис смотрел на эту тему, вспоминал тебя, все интересно было спросить

Konstantin
25.03.2018
12:57:27
ну, зачем зачем. у меня просто нет бесконечного количества времени разбираться во всём сразу, да, работал с редисом и знаю что удобно но пока что не хочу его настраивать и вводить в проект если можно обойтись. зачем мне проверять на уникальность - затем что я принимаю пачку файлов в base64, а потом сохраняю их. и мне не хочется прибираться, потому что чисто не там где прибираются а там где не мусорят. файлы - пусть это будут картинки для товара. они больше ни к чему не относятся. зачем проверять уникальность товаров - затем что не хочется сначала сконвертировать целую галерею , сохранить на диск, а потом обнаружить что сущность невалидная, и делать костыли с откатом всех этих изменений. хочется изначально проверить - есть уже такой уник или нет. если есть уник - значит сразу отдадим ошибку и дальше ничего не происходит - если нет - значит сохраняем файлы

f4rt~
25.03.2018
12:57:36
рэйт лимит)
а когда нельзя рейт лимитить налево и направо

по сути нужно строить realtime аналитику, получается

Konstantin
25.03.2018
12:58:04
я читал и помню что вы там разные задачки на микросервисы кидаете или заставляете по 1 запросу на файл грузить, но увы вот мне хочется просто чтобы был 1 запрос на создание и все

Sergey
25.03.2018
12:59:06
по сути нужно строить realtime аналитику, получается
ну тип того, ты можешь подобрать примерный рэйт с которым к тебе обращаются в реальных условиях. Ну и потом - для апихи это нормально ограничивать количество запросов, особенно если апиха публична

Dmitry
25.03.2018
12:59:28
ну да, я так делал на энджинксе ;) когда беком у меня была не база, а апи, которая оказалась подвержена состоянию гонки... быстрый костыль

Страница 776 из 1418