• Почему получается deadlock? Что-то не так с получателем?

    passionkillah
    @passionkillah
    Backend-разработчик
    Могу ошибаться, но по-моему, дело в том, что вы переопределяете labelChan. Сначала вы в labelsReceiver передаете переменную, которая была объявлена над main() (она передается по значению - то есть в labelsReceiver вы взаимодействуете с копией переменной labelChan), а затем вы из метода labelsEmitter возвращаете другой канал, в который вы пишете, но из которого не читаете. А при увеличении буфера до 10 ошибки нет потому, что чисел в input'е меньше 10-ти => они просто записываются в буфер, но их все еще никто не читает.
    Ответ написан
  • Как генерируются уникальные ссылки на сайт, если бэк и фронт работают отдельно?

    passionkillah
    @passionkillah
    Backend-разработчик
    Можно сгенерировать уникальную строку на бэкенде и отправить пользователю ссылку на фронтенд, в которой эта строка будет в качестве параметра. Когда пользователь будет переходить по этой ссылке - на фронтенде из нее будет извлекаться эта уникальная строка и с ней же будет отправлен запрос на бэк.
    Ответ написан
    Комментировать
  • Фильтрация по большому количеству параметров QueryBuilder, какие есть варианты?

    passionkillah
    @passionkillah
    Backend-разработчик
    Можно сделать интерфейс для фильтров и реализовывать его для каждого конкретного фильтра. В нем будут методы для получения алиаса (для того, чтобы превратить массив фильтров из запроса в массив классов), установления значения фильтра, а также добавления условия в queryBuilder. Получая из запроса массив фильтров, собираем массив классов, реализующих этот интерфейс (можно, кстати, сделать коллекцию, но это по желанию) и в репозитории проходимся по нему циклом и для каждого элемента вызываем метод, который добавляет условия к текущему queryBuilder'у.
    Ответ написан
    Комментировать
  • Как на PHP предсказывать события с помощью ML?

    passionkillah
    @passionkillah
    Backend-разработчик
    PHP для подобной задачи - неподходящий инструмент. Готов предположить, что выбор пал на него в связи с тем, что вы хотите написать полноценное приложение, в котором ваша ML-модель будет использоваться.

    Я бы посоветовал саму модель сделать на Python и написать для нее простейшее API, через которое можно было бы запрашивать данные и использовать их в вашем PHP-приложении
    Ответ написан
    2 комментария
  • Laravel vs Symfony?

    passionkillah
    @passionkillah
    Backend-разработчик
    Выше в комментариях вы сами ответили на свой вопрос: используйте CMS. До окружающих вы смогли донести то, чего вы хотите добиться, только написав фразу "наподобие плагинов wordpress". Обосновать же, почему вам необходимо сделать два обособленных модуля в рамках одного проекта, вы не смогли.
    Ответ написан
  • Symfony - разделение на модули?

    passionkillah
    @passionkillah
    Backend-разработчик
    Можно действительно разделить приложение на бандлы, хотя разработчики Symfony не рекомендуют такую структуру проекта, начиная с 4 версии.

    Лично я бы сделал разделение по доменному слою: для каждой сущности выделял бы по сервису + репозиторию. А контроллеры бы разграничил просто по уровню доступа, а шаблоны - по папкам. Миграции бы оставил в одном месте в том случае, если БД у вас одна: в противном случае это имеет мало смысла
    Ответ написан
  • Является ли доступ к env параметрам минуя конфиг плохой практикой?

    passionkillah
    @passionkillah
    Backend-разработчик
    Я бы, пожалуй, не советовал так делать, т.к это, по сути, мало отличается от использования глобальных переменных. Почему бы не внедрять ваш класс-сценарий работы в другой класс через конструктор точно так же? Я думаю, что это оптимальное решение, тем более что для внедрения вашего класса-сценария вам уже не придется ничего прописывать в кофиги.
    Ответ написан
    1 комментарий
  • Как заполнить таблицу базы данных в symfony?

    passionkillah
    @passionkillah
    Backend-разработчик
    Обычно я, при необходимости заполнить БД, использую миграции, где пишу запросы на чистом SQL. Не стоит вызывать EntityManager и тем более протаскивать контейнер целиком в миграции, как писали выше - это плохая практика.
    Фикстуры, как здесь уже написали, - тестовая история, хотя никто вам не запрещает их использовать.
    Ответ написан
    Комментировать
  • Как заставить доктрину увидеть поля в jointable?

    passionkillah
    @passionkillah
    Backend-разработчик
    У вас маппинги уже настроены таким образом, что вы можете просто достать нужный город и через геттер получить коллекцию сервисов, которые в нем есть - доктрина все сделает за вас.

    Что касается запроса, он не совсем корректен. Во-первых, вы подставляете параметр не туда, куда необходимо: последний параметр в innerJoin'е отвечает за то, по какому параметру соединять две сущности. Во-вторых, вы обращаетесь к city_id при том, что делаете запрос не на SQL, а на DQL - то есть по сути во время выполнения этого запроса вы присоединяете не таблицу, а коллекцию объектов. На этом уровне доктрина не в курсе ни о каком city_id. В-третьих, доктрина при присоединении коллекции понимает, что речь идет о many-to-many - соответственно, последние два параметра при join'е можно опустить:
    ->join('service.cities', 'city')
    ->andWhere('city.id = :id')
    ->setParameter('id', $id)

    Работая с доктриной, следует немного поменять мышление: стоит абстрагироваться от бд и думать о сущностях как об обычных объектах. Надеюсь, что мне удалось корректно сформулировать ответ.
    Ответ написан
  • Symfony, SPA аутентификация, какова лучшая практика в настоящий момент?

    passionkillah
    @passionkillah
    Backend-разработчик
    Security прекрасно может быть использован в REST, потому что он, по сути, просто предоставляет вам middleware для аутентификации пользователя, запускающееся при каждом запросе к вашему API. Саму же реализацию вы можете как выбрать из готовых, так и написать собственную. А UserProvider в свою очередь предоставляет вам доступ к объекту текущего пользователя внутри вашего кода, что весьма удобно.

    Действительно, JWT достаточно, и никто не запрещает вам сделать реализацию без компонента security, однако его использование будет существенно удобнее при использовании этого бандла, который взаимодействует с security. В случае с ним вам не нужно будет даже писать реализацию middleware.
    Ответ написан
    2 комментария
  • Как правильно передавать разрешения с токеном в API?

    passionkillah
    @passionkillah
    Backend-разработчик
    Если у Вас API + отдельный фронт - то мало смысла явно передавать на фронт разрешения. Вам достаточно будет при запросе ресурса получать текущего пользователя по токену, проверять его права и отдавать 403 (или 401, если пользователь не предоставил токен вовсе), если их недостаточно для доступа к ресурсу.
    В свою очередь на фронте Вы будете обрабатывать код ответа и выводить на экран то, что нужно.
    Ответ написан
  • Актуален ли MacBook Pro 2010 года в 2018 году?

    passionkillah
    @passionkillah
    Backend-разработчик
    Насчет мака 2010 года сложно сказать, но ретину конца 2012-начала 2013 надо очень аккуратно брать, т.к там проблемы с дискретной графикой могут быть. Либо ноутбук будет уже на грани наступления этих проблем
    Ответ написан
    Комментировать