Павел
я даже не слежу что там в своп летит, возможно м2 дает знать, я даже хз
Вот поднял проект, ну и еще хром с 10 вкладками(что мало). Но правда там штук 20 воркеров крутится, если уронить - будет естественно меньше
Павел
Опять же если какая нить инмемори и надо потестить что то неплохо - тоже можно встрять
Павел
Но это скорее редкие кейсы
Павел
Воркера уронил 14.7 занято :)
Dmitriy
это скорее вопрос к тому - а почему для работы у тебя подымается 20 воркеров, возможно локальное докер окружение настроено не оптимально
Павел
Что впритык к 16
Павел
Другое дело что при 16 будет выгружать более резво я думаю
Dmitriy
локально можно многими вещами пренебречь и запускать отработку нужных месседжей руками
Павел
Неиспользуемое
Павел
локально можно многими вещами пренебречь и запускать отработку нужных месседжей руками
Да это много что можно да, когда у меня было 8 - я тупо базы выключал которые не использовал))) Но я скорее про беспроблемную работу, когда об этом уже не думаешь. Запустил проект и кодишь, а не думаешь что нужно сейчас, а что нет
Dmitriy
ага запустил весь проект локально в кубере )
Dmitriy
опять же своп = оперативка * 2, ставишь м2 и пофиг
Павел
опять же своп = оперативка * 2, ставишь м2 и пофиг
Ну да, можно за счет ssd выехать, но оно все же помедленнее будет и ssd сажать
Dmitriy
ну ты его сильно не посадишь, если постоянно не перезапускажешь контейнеры
Павел
Ну короче имхо, 16 да, еще более комфортно, но если есть кэш - лучше 32, поддерживаю
Павел
ну ты его сильно не посадишь, если постоянно не перезапускажешь контейнеры
Я имею ввиду если юзать на полную как оперативку ssd через спов там уже много чтения записи будет.
Dmitriy
чтение пофиг
Павел
чтение пофиг
Ну наверное да.
Dmitry
Привет! В сущности есть поле json. C фронта прилетает массив объектов, если их тупо смаппить в DTO, то в таблицу пишется корректно, а если в DTO использовать поле, как массив другой DTO, то в таблицу кладется пустой массив объектов [{},{},{},{},{},{},{},{},{},{},{}] как надо дополнительно настроить doctrine, чтобы не было так
Kirill
ничего не понял)
Kirill
json - это же тупо stdclass, скаляры и массивы
Kirill
DTO он хавает просто потому что так получается
Kirill
фактически это багло и оно не должно с ними работать, всегда генерируя для них пустые объекты
Dmitry
ничего не понял )
Kirill
так что путь следующий: 1) или из DTO сделать VO, добавив jsonSerialize 2) или написать свой тип для доктрины, где будет использовать serializer, который и будет нормализовывать значения
Kirill
или самый нормальный и правильный вариант - отправлять в сущность нормализованные объекты сущности, т.к. они даже не рядом с данными/dto из запросов и не имеют к ним никакого отношения
Dmitry
есть же вроде расширения, которые это делают
Dmitry
ExampleDTO { /**@var FooDTO[] $fields */ private array $fields; так не работает
Dmitry
ExampleDTO { private array $fields; а так работает
Dmitry
по идее свой тип, хорошая идея
Kirill
оно и так и так не должно
Anton
ExampleDTO { private array $fields; а так работает
Лучше всегда использовать явное поведение
Kirill
это просто багло, что у тебя второй вариант пашет
Anton
не совсем понял
Лучше явно сериализоватб объект и отправить в бд
Kirill
у нас же орм
Anton
А не надеяться на не явные штуки, которые это сами сделают
Anton
Не явных штук в ларе много. И к чему это их привело 😄
Dmitry
Лучше явно сериализоватб объект и отправить в бд
те нужно сначала сериализовать и положить в базу, получается свой тип запилить или можно перед записью сделать?
Kirill
final readonly class ExampleValueObject implements \JsonSerializable { public function __construct( /** * @var iterable<array-key, FooValueObject> */ public iterable $fields, ) {} public function jsonSerialize(): array { return [ 'fields' => \iterator_to_array($this->fields, false), ]; } } final readonly class FooValueObject implements \JsonSerializable { public function __construct( public string $foo, public string $bar, ) {} public function jsonSerialize(): array { return \get_object_vars($this); } }
Kirill
ну хотя бы
Kirill
хотя тоже не очень из-за прибития гвоздями JsonSerializable но т.к. это VO, то можно
Anton
Dmitry
там просто массив объектов и объекты простые, без вложенности
Kirill
а так-то лучше свой тип сделать для этого json
Kirill
а внутри него уже руками положить в VO при получении и разложить обратно в ассоциативный при сохранении явно
Dmitry
Спасибо
Kirill
но вообще, в принципе json только для одного норм, имхо - делать что-то вроде EAV) Где можно в поле value сохранять значения разных типов, а не под каждый тип своё поле фигачить))))
Kirill
больше ни для чего json нафиг не нужен
Kirill
ну вот я только там для значений json и использовал
Kirill
ну вот я только там для значений json и использовал
типа: // Дискриминатор мапа по type abstract class AttributeValue { // json protected mixed $value; // many2one public Attribute $attribute; } final class IntAttributeValue extends AttributeValue { public function __construct(int $value, ...) { $this->value = $value; } }
Kirill
в нее dto маппить получается
VO - это DTO с поведением)
Dmitry
#[MapRequestPayload] UserVO $userVO поймет?
Kirill
MapRequestPayload - это слой представления вообще)
Kirill
а пользовательские данные никакого отношения к энтитям и бд не имеют
Павел
а пользовательские данные никакого отношения к энтитям и бд не имеют
Ну такое, имеет ли VO отношение к энтити? имеет. Может ли представление сразу создать VO из реквеста? Почему бы и нет.
Kirill
ну.... хотя...
Павел
нет же)
Ну а почему бы и нет? Что случится если будет сразу емейл VO?
Kirill
Ну а почему бы и нет? Что случится если будет сразу емейл VO?
например то, что в запросе должна быть пользовательская валидация, а в VO достаточно инвариант на непустое значение
Павел
Тут скорее главное чтобы обратного не было, чтобы логика о реквесте не знала. А то что представление что то подготовит, ну хз, имхо почему бы и нет
Kirill
ну я понимаю, конечно, что можно забить болт
Kirill
но проблем там ппц
Kirill
не, если из одного поля VO, то вполне норм ещё
Kirill
ну т.е. не норм, конечно
Kirill
но терпимо
Павел
)))))
Kirill
кроме валидации - никаких проблем
Павел
Ну короче надо просто прогать и всё =) Если не мешает - значит норм
Kirill
это сейчас не мешает
Павел
кроме валидации - никаких проблем
Валидация вообще по хорошему должна быть не на ДТО, раз уж на то пошло, а на реквест - которая кучка данных
Kirill
non empty в частности