Задать вопрос
  • Как занести данные из input в php переменную?

    myks92
    @myks92 Куратор тега PHP
    Вы не пробовали хотя бы что-то почитать или погуглить?
  • Entity vs Value Object DDD?

    myks92
    @myks92
    Расул, практически так, то есть нужно смотреть на сколько будет критично если сторонний сервис отпадёт Если у вас ничего в работе не поменяется, то можно забыть об этом. Если же поменяется, то придётся копировать данные из того сервиса в ваш. Например при добавлении id вы идёте в тот сервис и кладёте в свой сервис эти группы. Так же если вам понадобиться например информация о группе при отсылке почты или уведомления, где не особо допускается отображать id в случае отказа сервиса или «группа не найдена». То есть если логика и приложение не перестаёт работать, а имя нужно только на стороне фронта, то об этом можно не париться. Вы просто можете написать «группа не доступна».
  • Entity vs Value Object DDD?

    myks92
    @myks92
    RaSul909, если следовать CQRS, DTO нужно либо для запроса (Query), либо для модификации (UseCase, Command). Ну и из Query можно возвращать данные не в массиве, а в DTO, но тут уже вам решать как поступить

    Что касается того где собирать данные для выдачи в API. Следует это делать так называемом Query (ReadRepositofy, Fetcher). С помощью Join вы собираете данные, либо подгружаете данные через какого-то клиента из другого сервиса, после этого данные можно отдавать в контроллер Api.

    Read Repository отличается от Domain Repository тем, что он работает только на чтение данных для frontend. Он и запросы использует без какой-то ORM, а хоть на чистом SQL.

    Пример на php

    interface VideoReadRepository
    {
        public function allByAuthor(string $authorId): array;
    
        public function find(string $authorId, string $id): ?Video;
    }
  • Entity vs Value Object DDD?

    myks92
    @myks92
    RaSul909, вариантов несколько для получения дополнительных данных:
    1. В контроллере с помощью Fetcher
    2. На стороне фронтенда разными api запросами
    3. Getaway например, GraphQL
  • Entity vs Value Object DDD?

    myks92
    @myks92
    RaSul909, название вам нужно на frontend части для отображения. Поэтому вы спокойно по id сможете запросить все названия ))
  • Хороший ли тон передавать Symfony\Component\HttpFoundation\Request в сервис?

    myks92
    @myks92
    gitdev, если подумаете, то ответ может придти сам) Вы планируете использовать DTO только с Request? Если же вам нужно использовать один и тот же сервис в консольном приложении, то где вы там возьмёте Request?) получается ваша DTO не может быть использована без Request, а это зависимость) Поэтому в конструкторе простые скалярные аргументы.

    Но если вам хочется сделать код более чистым, и убрать заполнение DTO из Request в DTO, тогда можно создать фабричный метод:

    VacancySearch::fromRequest($request);

    Внутри вы заполняете конструктор вашего DTO и возвращаете обратно заполненную DTO.

    Ещё момент вы немного путаете DTO и ValueObject. VO это полноценный объект из доменного слоя, который содержит в себе доменную логику. DTO же не имеет никакой логики это просто структура данных. Вы бы могли и передавать просто массив, но работать с массивом не удобно. Поэтому используем DTO
  • Ошибка профайлера в Симфони?

    myks92
    @myks92
    CenterJoin, по этим логам ничего особо не сказать. У вас какой веб сервер Apache или Nginx? И пришлите эти логи веб сервера.

    Так же важно понять у вас это появилось относительно недавно после каких-то манипуляций или же у вас настройка нового/существующего проекта?

    Как вам написали, это может быть связно с какой-то ошибкой, например, в шаблоне можете не закрыть тег body. Если у вас это произошло в процессе ваших манипуляций с кодом можно найти ломающий комит и понять что там ломается. А если это с самого начала, то проблема может быть другой.
  • Пожалуйста, проведите код ревью, норм, не норм?

    myks92
    @myks92 Куратор тега Yii
    targeting24, лучше чем первый вариант. Код чище, более понятнее. Но всё же говорю, что знаний немного не хватает. По крайней мере само написание стало лучше. Больше походит на ООП подход, а не лапшекод) Но нет понимания куда как и что разносить. Лишние комментарии. Код должен читаться, а идеале, как английский текст.
  • Пожалуйста, проведите код ревью, норм, не норм?

    myks92
    @myks92 Куратор тега Yii
    Хочу прокомментировать. Иначе человек Вас может не правильно понять.

    Денормализация не имеющейся данных, а сбор в новую таблицу(ы)/базу(ы) с нужной денормализированной структурой данных. При этом база подбирается чаще NoSQL. Собирать можно: по крону, по событию, по запросу и т.д.

    Один из примеров для понимания поиск на ElasicSearch.

    Однако до такого подхода может и не дойти. Вполне может хватит других способов: индексы в базе данных, кэширование на чтение, использование чистых SQL запросов и работать с массивами вместо работы с Объектами.
  • Как подгрузить виды в переменную "content" yii?

    myks92
    @myks92 Куратор тега Yii
    Радость моя, вы только не учли что в текущем случае адрес будет post/post)))
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Максим Федоров,
    Пример: почтовик используется для маркетинговых инструментов с некоторым лимитом, чтобы переключиться через впн к др провайдеру

    вот такой вариант уже лучше обосновывает) Но в данном случае в этом нет необходимости, как и нет необходимости искать возможности вписаться в эти лимиты mail почтовика. Это того не стоит.
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Flying, да всё понимаю) Если админ не позволяет ничего — можно взять какой-то другой почтовик с лимитом побольше. Например, sendpulse. Там хотя бы есть возможность увеличить лимит за плату, если не будет хватать бесплатных.

    Я бы ваш вариант использовал в самую последнюю очередь. Когда ничего нельзя решить и только это остаётся) Это как с оптимизацией. Многие начинают сразу всё кэшировать, хотя во многих случаях можно переписать запросы расставить индексы и т.д.

    Не будем углубляться. Мы друг друга поняли и автор нашел решение) Спасибо за диалог!)
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Flying, не обижайся) Я в целом понимаю, что это возможно. И вижу, что вроде бы сам понимаешь и попытался предложить какой-то другой вариант решения. Но тут важно чтобы ты и сам понял и другие. Я изначально ответил коротко и понятно, но когда ты включил свой ответ всё поменялось и я попытался обосновать почему не надо так как предложил ты. Со стороны кода это влечёт большие последствия, особенно, если нет понимания. Поэтому, если ты даёшь такое решение, то должен дать предостережения. Чтобы автор мог понять, какой вариант выбрать и какие последствия могут быть. Если идти твоим путём появится много лишнего кода, много лишних правил, условий и т.д. Моё же решение вообще никак не трогает код, соотвественно не будет костылей. Идя твоим путём можно только понимая всю картину. Автору, возможно, не понять. Поэтому ответ был коротким, остальное описывал чтобы ты понял к чему это может привести.
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Flying, да) Это я привёл самый крайний вариант. Когда-то, конечно, они могут и дойти. Всё зависит от частоты сообщений. Ночью, например, вряд ли есть какие-то сообщения. Но тут есть у майла ещё один лимит, о котором автор не говорит. 1000 сообщений в сутки) А это ещё негативней делает всю картину. Днём вам нужно 5 часов по 200 сообщений и ночи ждать не надо) Поэтому я сразу привёл пример, с которым сообщения никогда могут не дойти.

    Везде индивидуально. Надо оценивать много чего, но это вообще никак того не стоит) Покупаешь нормальный сервер где есть почтовик без ограничений и думать не надо.
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Flying, Webspec, не помню как у маил, но нарушая лимиты почтовика на хостинге могут вообще заблокировать вашу услугу. Поэтому это того не стоит)
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Flying,
    Другими словами, если в час будет сгенерировано 300 уведомлений, то 200 будут отправлены в первый час, а 100 - во второй, но отправлены будут все 300.


    1. А что у вас система остановит свою работу на час?) Нет. Она за этот час ещё может дать ещё 300 уведомлений. Тогда Вы за два часа отправите уже 400 сообщений, а 200 будут опять висеть. И это число может нарастать.
    2. Вы учитываете лимиты только тех сообщений, которые идут через Messenger, но ведь сообщения могут отправлены напрямую. Тогда как вы будете учитывать сколько у вас ещё осталось сообщений в час? Тогда вам придется делать таблицу, где будете учитывать сколько сообщений было отправлено через этот почтовик. Чтобы не нарушить лимиты
    3. 200 сообщений в уведомления закладывать нельзя, потому что есть более важные сообщения, как я уже написал. Поэтому этот лимит придется понизить искусственно до 100 чтобы был запас для важных сообщений.

    И это я назвал лишь самые основные моменты. Тут ещё много чего можно найти)

    Конечно, можно «накостылить» и придумать массу схем. Но решается всё очень просто — нормальный почтовик. При росте сообщений Вы в это упретесь. Особенно при организации рассылок/подписок/уведомлений.

    Подключение почтовиков типа mail имеет смысл только тогда, когда вы организовываете работу в них через IMAP или у вас реально мало сообщений, при котором вы никогда не достигните лимита что бы не произошло.
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Это не тот случай когда это нужно использовать. Как дополнительные познания - хорошо расписали. Как решение — не подходит. Разве что временный костыль. Дополнил в свой ответ обоснование.
  • Audit log (История действий), лучший вариант?

    myks92
    @myks92
    tukreb, сам вызов событий через new там допустимо и именно так нужно и делать. А вот уже подписчиков вешают через EventDispatcher. В подписчике уже идёт запись в лог.