Юра
Да это сильно упрощает понимание кода
Юра
Сразу видно даже без доки какие функциональные элементы есть в системе
Юра
Этот принцип как-то по умному называется на англ но я забыл
Юра
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
Андрей
мне просто интересно, а кто это все объединяет
фронт?
Андрей
так не хочется залазить в эти все vue\react)))
у нас вот монолит монолитней некуда.
вот подумываю начать разгрузку и некоторые вещи перенести на сервисы (если это можно так назвать). например, сходить/забрать информацию в 1с
Андрей
это ведь будет считаться микросервисом?
Андрей
и по уму получается, надо бы сделать некий гейт?
если предусмотреть, что в будущем кто-то может тоже им пользоваться
Андрей
или напрямую
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
Alexander
Alexander
Alexander
Я стараюсь в админках бутстрап использовать, для этого достаточно в шаблоне добавить
{% form_theme form 'bootstrap_4_layout.html.twig' %}
или
{% form_theme form 'bootstrap_5_layout.html.twig' %}
Переопределять шаблоны форм не самая простая задача, к сожалению.
jenia
Alexander
<small class="text-danger">{{ form.myname.vars.help }}</small>
Попробуйте так
jenia
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 мне нужно добавить поле в промежуточную таблицу и не поломать логику, как лучше сделать?
Dmitry
Alexander
Сделать третью сущность many2one и в нее добавить поле. С не поломать логику могут быть проблемы.
Anonymous
тут надо гетеры и сеттеры перенести и миграцию вручную переделать надо
Юра
Логика видимо по-любому меняется раз добавилось поле в промежуточную таблицу
Andrey
Всем привет. Мне нужно сделать подсчёт времени, чтобы когда пользователь на клиенте заходит в задание начинался отсчёт времени на сервере, это время передавалось на клиент и там отображалось сколько времени осталось, и как только время истечёт выбрасывать пользователя из задания. Так как приложение клиент-серверное просят реализовать подсчёт времени на сервере. Кто-то делал это на симфони? Посоветуйте пожалуйста как лучше это реализовать, а то сижу вот не могу найти ничего подобного в гугле.
Maxim
Всем привет!
Как в VS Code настроить чтобы при нажатии на клавишу TAB устанавливались символы табуляции, а не пробелов?
Ivan
Вебсокеты?
Юра
Иван
Юра
Вообще пофигу на пояса
Юра
У тебя на сервере время в одном часовом поясе
Юра
А чтобы отрисовать таймер на фронте пояс не нужен вообще
Иван
На сервере фиксировать время добавления в задачу.
На клиенте следить. Если страница обновляется, то сервер знает, когда отсчёт начат. Если время закончилось, то обратно сервер знает.
А гонять с сервера сигналы точного времени не надо.
Юра
На фронте тоже сохраняй а локалсторадж таймер
Юра
При обновлении страницы можно из локалстораджа вытянуть остаток
Andrey
Спасибо за помощь, понял как надо!)
Юра
Главное на сервере валидировать, а фронт чисто для отрисовки
Иван
Юра
Ну тут могут как раз таки вылезти вопросы с часовым поясом
Юра
Если с сервера возвращать время начала таймера
Иван
Таймстамп начала и конца
Юра
С тайм стампом не должно быть траблов да
Alexander
Подскажите пожалуйста, как настроить xdebug 3 в докере на удаленной машине, чтобы он с пхпштормом подружился?
Alexey Mishurovskiy
кто знает, что что за прозрачный квадрат в убунту ?
Alexey Mishurovskiy
висит поверх всех окон
jenia
Alexey
Юра
Юра
Делаешь порт форвардинг с удаленного хоста 9000 на свой локальный 9000 а в удаленном контейнере прописываешь иксдебаг клиент хост на gateway (обычно это типо 172.ХХ.0.1 в зависимости лт подсети), т.е. на удаленный хост (из контейнера в хост)
Юра
Пробовал работает лайк э шарм
Иван
Alexander
С помощью доктрины можно как-то сделать таблицу для энтити всего с одной строкой и не больше?
Иван
Alexander
Окей, спасибо
The Ant
Обед в хату :D
Вопрос такой. А вообще нормально не чето хендлить дополнительное в аргумент резолверах?
Валидация например, бросать всякие исключения и т.д.?
Мне вот кажется это очень не очень.
atcq (Алексей)
The Ant
Не сказал бы прям успешный, но с вонючего уии потихой мигрирую да )
Иван