Юра
Да это сильно упрощает понимание кода
Юра
Сразу видно даже без доки какие функциональные элементы есть в системе
Юра
Этот принцип как-то по умному называется на англ но я забыл
Юра
https://medium.com/clarityhub/low-coupling-high-cohesion-3610e35ac4a6
Юра
Вот тут про это примерно
Alexander
Я в целом грущу что от бандлов отказались.
Alexander
https://habr.com/ru/company/ispring/blog/560074/ По теме хорошая статья.
Dmitry
Какую конкретно проблему решают микросервисы?
А вообще микросервисы дают свои преимущества: Жёсткие границы. В монолите можно подзабить на дисциплину и декомпозицию и написать запутанный код, связывающий несколько мест. В микросервисах такой костыль сделать не получится, так как код и базы данных разделены. Легковесность и простой код. В каждом сервисе всего десяток контроллеров и примерно столько же сущностей. Простой конфиг из десятка параметров. Перевод на Symfony 5 займёт пару дней. Декомпозиция и аккуратность. В монолите можно накидать любой код как попало. Например, бездумно сделать сущность User с сотней полей за-JOIN-ить со всеми другими сущностями. И это будет работать. А с микросервисами придётся досконально продумывать, как эти поля разнести по смыслу на сервисы. А иначе неверно разделённые сервисы будут лишний раз ходить друг в друга за недостающей им информацией. Толерантность к падениям. При отказе одного сервиса отвалится только его виджет на фронте, а все остальное продолжит работать. А монолит рухнет весь. Независимую масштабируемость под нагрузку каждого сервиса. Но это актуально только у кого хайлоад. Раздельный быстрый деплой. Маленький сервис с десятком или сотней тестов собирается, тестируется и деплоится за две минуты. А огромный монолит нужно ждать по полчаса. Разделение разработки. Каждый сервис может программировать отдельная микрокоманда из нескольких человек в своём репозитории. Иначе когда 50 человек коммитят в один репозиторий 500 коммитов в день это сложно. Выбор технологий. Отдельный сервис подбора рекомендуемых товаров можно запилить с нейронными сетями на Python. А сервис обработки фотографий для скорости спрограммировать на Go. А в монолите всё придётся делать на PHP. Безопасность и контроль доступа. Отдельный сервис обработки картинок можно доверить разрабатывать любому безбашенному фрилансеру с улицы, не боясь, что он сломает другие сервисы. И он не сможет в корыстных целях подсмотреть код более важных сервисов. А в монолите дать доступ только к части репозитория не получится.
Dmitry
Так что преимущества более человеческие. Что проще работать с маленькими проектами, удобно делить на команды, экспериментировать и выбирать подходящие технологии. Но это приносит и неудобство, что нужно обеспечивать взаимодействие всех сервисов прямо и через очереди. И нужно больше думать. Иначе если микросервисы разлелены неверно, то они будут только запутывать и мешать.
Nikolay
https://habr.com/ru/company/ispring/blog/560074/ По теме хорошая статья.
Точнее я там тоже работаю, статья недавно вышла
Андрей
мне просто интересно, а кто это все объединяет фронт?
Dmitry
мне просто интересно, а кто это все объединяет фронт?
Да, фронт работает со шлюзом, который ходит во все сервисы и склеивает JSON-ы: / auth front -> api gateway - blog \ shop
Андрей
так не хочется залазить в эти все vue\react))) у нас вот монолит монолитней некуда. вот подумываю начать разгрузку и некоторые вещи перенести на сервисы (если это можно так назвать). например, сходить/забрать информацию в 1с
Андрей
это ведь будет считаться микросервисом?
Dmitry
это ведь будет считаться микросервисом?
Без разницы как называть. Лишь бы было удобно.
Dmitry
это ведь будет считаться микросервисом?
Полноценный микросервис как отдельный проект живёт своей независимой жизнью со своей БД.
Андрей
и по уму получается, надо бы сделать некий гейт? если предусмотреть, что в будущем кто-то может тоже им пользоваться
Андрей
или напрямую
Dmitry
и по уму получается, надо бы сделать некий гейт? если предусмотреть, что в будущем кто-то может тоже им пользоваться
Можете пока из того же контроллера в монолите ходить в API этого вынесенного сервиса и ответ из него как и раньше рендерить в twig. Так со временем после выноса сервисов сам монолит превратится в такой фронт-шлюз.
Dmitry
это ведь будет считаться микросервисом?
И в общем из монолита выделить сразу полноценный микросервис не получится. Будут мешать связи всего со всем. Поэтому монолит сначала надо будет постепенно разделить на слабосвязанные модули. И потом уже эти модули выносить в отдельные сервисы.
Андрей
ну вот пока пилим, делим..)
Alexey Mishurovskiy
всем хай. а как правильно десериализовать в апишке сущность, в которой приходят id других сущностей, которые имею связь many to many
Alexey Mishurovskiy
Alexey Mishurovskiy
вот activity Codes это idшники существующих сущностей
Alexey Mishurovskiy
jenia
Хочу обойтись без отображения тега <p> в HTML. Подскажите как такое сделать ? Twig: <small> {{ form_help(form.myname, { 'help_attr': {'class':'text-danger'}}) }} </small> HTML: <small> <p id="form_test_myname_help" class="text-danger help-text">Pflichtfeld</p> </small>
Katulos
Не юзать твиг уже советовали?
Alexander
Я стараюсь в админках бутстрап использовать, для этого достаточно в шаблоне добавить {% form_theme form 'bootstrap_4_layout.html.twig' %} или {% form_theme form 'bootstrap_5_layout.html.twig' %} Переопределять шаблоны форм не самая простая задача, к сожалению.
Alexander
<small class="text-danger">{{ form.myname.vars.help }}</small> Попробуйте так
jenia
<small class="text-danger">{{ form.myname.vars.help }}</small> Попробуйте так
Сработало. Спасибо большое за разблокировку !
Alexander
Не за что )
Alexey
Добрый день всем! Есть люди кто пользуется aws/aws-sdk-php ?! Дело в том что на амазоне поменял ключ, в Postfix все настроил, письма ходят В проекте поставил новые ключ и тут на тебе сообщение об ошибке 2021-06-28 13:43:41] Postal.ERROR: Aws\Ses\Exception\SesException: AWS Error Code: InvalidClientTokenId, Status Code: 403, AWS Request ID: 4be1e447-5df5-4c36-85b0-b8818983bf53, AWS Error Type: client, AWS Error Message: The security token included in the request is invalid., User-Agent: aws-sdk-php2/2.8.7 Guzzle/3.9.3 curl/7.58.0 PHP/7.2.24-0ubuntu0.18.04.7 В чем прикол непойму
Dmitry
/2612
Anonymous
Привет! Подскажите, плиз. Есть две сущности, которые связаны many2many мне нужно добавить поле в промежуточную таблицу и не поломать логику, как лучше сделать?
Alexander
Сделать третью сущность many2one и в нее добавить поле. С не поломать логику могут быть проблемы.
Anonymous
тут надо гетеры и сеттеры перенести и миграцию вручную переделать надо
Юра
Логика видимо по-любому меняется раз добавилось поле в промежуточную таблицу
Andrey
Всем привет. Мне нужно сделать подсчёт времени, чтобы когда пользователь на клиенте заходит в задание начинался отсчёт времени на сервере, это время передавалось на клиент и там отображалось сколько времени осталось, и как только время истечёт выбрасывать пользователя из задания. Так как приложение клиент-серверное просят реализовать подсчёт времени на сервере. Кто-то делал это на симфони? Посоветуйте пожалуйста как лучше это реализовать, а то сижу вот не могу найти ничего подобного в гугле.
Maxim
Всем привет! Как в VS Code настроить чтобы при нажатии на клавишу TAB устанавливались символы табуляции, а не пробелов?
Ivan
Вебсокеты?
Andrey
На сервере фиксировать времч старта задания, на фронте таймер
Тоже вот так думаю, а как поступить с часовыми поясами, ну то есть если сервер в Москве а пользователь во Владивостоке там же по идее таймер некорректно будет работать?
Юра
Вообще пофигу на пояса
Юра
У тебя на сервере время в одном часовом поясе
Юра
А чтобы отрисовать таймер на фронте пояс не нужен вообще
Иван
На сервере фиксировать время добавления в задачу. На клиенте следить. Если страница обновляется, то сервер знает, когда отсчёт начат. Если время закончилось, то обратно сервер знает. А гонять с сервера сигналы точного времени не надо.
Юра
На фронте тоже сохраняй а локалсторадж таймер
Юра
При обновлении страницы можно из локалстораджа вытянуть остаток
Andrey
Спасибо за помощь, понял как надо!)
Юра
Главное на сервере валидировать, а фронт чисто для отрисовки
Иван
Юра
Ну тут могут как раз таки вылезти вопросы с часовым поясом
Юра
Если с сервера возвращать время начала таймера
Иван
Таймстамп начала и конца
Юра
С тайм стампом не должно быть траблов да
Alexander
Подскажите пожалуйста, как настроить xdebug 3 в докере на удаленной машине, чтобы он с пхпштормом подружился?
Alexey Mishurovskiy
кто знает, что что за прозрачный квадрат в убунту ?
Alexey Mishurovskiy
висит поверх всех окон
Alexander
https://blog.denisbondar.com/post/phpstorm_docker_xdebug
Работает для локального докера, но не работает для докера на сервере.
Юра
Делаешь порт форвардинг с удаленного хоста 9000 на свой локальный 9000 а в удаленном контейнере прописываешь иксдебаг клиент хост на gateway (обычно это типо 172.ХХ.0.1 в зависимости лт подсети), т.е. на удаленный хост (из контейнера в хост)
Юра
Пробовал работает лайк э шарм
Alexander
С помощью доктрины можно как-то сделать таблицу для энтити всего с одной строкой и не больше?
Иван
С помощью доктрины можно как-то сделать таблицу для энтити всего с одной строкой и не больше?
Если это идентификатор, то какие проблемы? Но вообще странная будет сущность.
Alexander
Окей, спасибо
Alexander
Читай про ssh port forwarding
Вчера пробовал, что-то не взлетело. Проверю ещё раз, спасибо.
Alexander
Но зачем делать отладку на сервере?
Чтобы не запускать зоопарк сервисов локально. Не от хорошей жизни.
The Ant
Обед в хату :D Вопрос такой. А вообще нормально не чето хендлить дополнительное в аргумент резолверах? Валидация например, бросать всякие исключения и т.д.? Мне вот кажется это очень не очень.
The Ant
Не сказал бы прям успешный, но с вонючего уии потихой мигрирую да )