Kirill
кто пакетики быстрее пересылать будет
Михаил
ахахахха
Михаил
АХАХАХАХ
Михаил
бля
Михаил
А реально, я же слышал про это новость
Kirill
и в качестве фоллбека индусиков с дискетками
Kirill
отказоусточивость
Михаил
не помню в чём контекст, но мол иногда голубями быстрее
Vlad
Михаил
Блин, потерял ссылку
Михаил
Был видос про то, как Gitlab случайно удалили свою продовскую бд
Vlad
Михаил
Там финал истории в том, что они восстановили (с потерями) свою бд, поставив дамп стейджа на прод
Михаил
и из-за слабого соединеня (всё таки стейдж) дамп накатывался чуть меньше суток
Vlad
Михаил
и вот я подумал блин, просто взять самолёт, прилететь в ДЦ, скачать на диск, прилететь обратно и загрузить по проводу было бы быстрее
Юра
Ну а вообще да микросервисы все больше начинают напоминать эрланг
Михаил
Ну и бекапы
там у них полный треш был
бекапы не делались из-за какой-то проблемы с версиями постги а нотификейшены не слались об этом на почту из-за другой проблемы
Михаил
А бд они удалили просто сделаф rm -rf не в том терминале
Михаил
в мастер ноде
Михаил
Kirill
кролик живее всех живых)
Kirill
пока жив кролик жив и ерланг!
Михаил
Рубисты со своим elixir пытались его воскресить - но чот не срослось
Михаил
А LifeBook (это способ писать документацию к коду, но только код можно запустить)
Следите за пальцами
1) в комментариях к коду в elixir можно писать mardown разметку
2) из комментариев к коду можно генерировать документацию по типо readthedocs (пример: https://hexdocs.pm/telemetry/readme.html)
—мы находимся здесь—
3) эту документацию, можно было бы открыть в LifeBook и весь код который написан в блоках для кода, можно было бы запустить, импользовать результаты из кода выше в блоках кода ниже https://news.livebook.dev/
Короче вот вам идеи чо бы сделать в своих пет проектах
Михаил
Но бигтехи опять продвигают не те технологии
Kirill
Kirill
а тут вот пруфы
Kirill
потому что я буквально неделю назад пробовал и не получалось нормально создать этот кейс)
Aleksandr Khristenko
У меня сейчас вот такое нормально десериализовало
class Par
{
public function __construct(
/** @var list<Child> */
public readonly array $child
) {
}
}
Aleksandr Khristenko
Kirill
ну так я перепроверил и оно не сработало
Kirill
из чего я сделал вывод, что там какой-то костыль
Kirill
а оказалось что костыль узаконенный, просто надо переопределить нормалайзер
Aleksandr Khristenko
Я на дефолтном сеттинге проверял.
Aleksandr Khristenko
Как симфония его собирает.
Kirill
а, я чистоганом просто
Kirill
Она даже вот такие штуки умеет делать, когда можно внешние маппинги налету подменить
Kirill
Vlad
Kirill
Kirill
но там всё просто довольно
Kirill
1) есть парсер, который генерит АСТ
2) есть хендлеры, которые по определённым правилам перехватывают правила и создают типы.
3) есть визитор, который пробегается по типам и применяет для каждого правила сериализации и денормализации.
Kirill
Парсер можно потестить, я уже кидал ссыль https://phpdoc.io/parser (ну и сравнение с другими, вроде пхпстана или псалма https://phpdoc.io/language). Остальное не выкладывал пока что.
Vlad
Ну парсер видел твой да
Nikolay
Есть ли какие нибудь нормальные решения из коробки для soft delete механизма кроме стандартного костыля от доктрины?
Михаил
Nikolay
Я про это и говорю, это фигня полная
Михаил
Ты говорил про фигню от доктрины - это не фигня от доктрины
Михаил
Ну и оно работает. Добавляет поле deleted_at и если там есть дата, то сущность больше не попадает в выборки
Nikolay
Это фигня, если мне надо везде в коде эти фильтры переключать
Михаил
Не понимаю тебя. Что значит «везде в коде фильтры переключать»?
Nikolay
$em->getFilterCollection()->enable('soft-deleteable');
// This will disable the SoftDeleteable filter, so entities which were "soft-deleted" will appear in results
$em->getFilterCollection()->disable('soft-deleteable');
Shokha
если не ошибаюсь это можно сделать глобально)
Михаил
Так оно по умолчанию включено
Михаил
Короче щас залез в код. У меня просто настроен doctrine_extension.yaml и на сущности висит софтделетебле атрибут. И всё, всё по умолчанию работает.
Если мне нужно отключить эту фичу - ну у меня в репозитории есть пара методов которые получают удалённые сущности и один метод который восстанавливает сущность.
Если нужно постоянно дрочить этот флаг по всему проекту - ну это признак не очень хорошей архитектуры.
Shokha
Михаил
Ребят у меня вопрос. Я помню давно его искал но ничего толкового не нашёл. Новых попыток не делал - пишу сюда.
Короче у меня symfony messenger консъюмит сообщения из кролика и обрабатывает (дефолтная схема). Каждое сообщение - это json у которого есть числовой id.
Вопрос: как сделать так чтоб сообщения с одними и теми же id попадали в один и тот же консъюмер
Бонусный вопрос: как избежать перегрузки только одного консъюмера
Контекст: Я контролирую отправку сообщений в кролик, но я хотел бы увеличивать и уменьшать кол-во консъюмеров просто меняя их кол-во в отдельном конфиге, но при этом ничего больше не конфигурировать
Vlad
Vlad
у kafka partition key есть, надо в эту сторону копать. не юзал.. А у rabbit как решить, хз. Тока с помощью lock
Vlad
Vlad
Я так понимаю, Михаил хочет скейлить воркеры и чтобы была одна очередь
Vlad
https://silverback-messaging.net/concepts/broker/kafka/kafka-partitioning.html?tabs=destination-partition-fluent%2Cenricher-fluent%2Cconcurrency-fluent%2Cassignment-fluent
Vlad
на правду похоже
Павел
Павел
Смотреть amqpstamp
Павел
Если решается рейскондишен то по 1 воркеру на каждую очередь и скейлить количеством очередей, а не количеством воркеров на 1 очередь
Павел
Но там правда вопрос будет как грамотно скейлить это уже смотреть про шардирование бд
The Ant
Михаил
тут весь прикол в том, что я использую симфони мессангер для консъюма и непонятно как консъюмер должен понять какой у него номер
Михаил
вроде реббит - это тупые консъюмеры и умный брокер. Я думал сам реббит сможет это хендлить
Vlad
казалось бы, проблема которая давно существует. почему бы не решить на уровне кроля
Vlad
да и забыть
The Ant
Я чот пытался реализовать 1 воркер на 1 очередь, и скейлить очереди. Но кажется в мессенджере чёт не хватает для этого. Разруливать не понятно как, чтоб не в ручную, отправлять задачи в очереди, раунд Робином например
Михаил
Да, раунд роббин кажется нормальной идеей - но только если работы мало