Kirill
кто пакетики быстрее пересылать будет
Михаил
ахахахха
Михаил
АХАХАХАХ
Михаил
бля
Михаил
А реально, я же слышал про это новость
Kirill
и в качестве фоллбека индусиков с дискетками
Kirill
отказоусточивость
Михаил
не помню в чём контекст, но мол иногда голубями быстрее
Kirill
не помню в чём контекст, но мол иногда голубями быстрее
да там было что-то про то, что можно данные на диск записать и отправить диск голубем)
Михаил
Блин, потерял ссылку
Михаил
Был видос про то, как Gitlab случайно удалили свою продовскую бд
Михаил
Там финал истории в том, что они восстановили (с потерями) свою бд, поставив дамп стейджа на прод
Михаил
и из-за слабого соединеня (всё таки стейдж) дамп накатывался чуть меньше суток
Михаил
и вот я подумал блин, просто взять самолёт, прилететь в ДЦ, скачать на диск, прилететь обратно и загрузить по проводу было бы быстрее
Юра
Ну а вообще да микросервисы все больше начинают напоминать эрланг
Михаил
Ну и бекапы
там у них полный треш был бекапы не делались из-за какой-то проблемы с версиями постги а нотификейшены не слались об этом на почту из-за другой проблемы
Михаил
А бд они удалили просто сделаф rm -rf не в том терминале
Михаил
в мастер ноде
Kirill
кролик живее всех живых)
Kirill
пока жив кролик жив и ерланг!
Михаил
Рубисты со своим elixir пытались его воскресить - но чот не срослось
Михаил
А LifeBook (это способ писать документацию к коду, но только код можно запустить) Следите за пальцами 1) в комментариях к коду в elixir можно писать mardown разметку 2) из комментариев к коду можно генерировать документацию по типо readthedocs (пример: https://hexdocs.pm/telemetry/readme.html) —мы находимся здесь— 3) эту документацию, можно было бы открыть в LifeBook и весь код который написан в блоках для кода, можно было бы запустить, импользовать результаты из кода выше в блоках кода ниже https://news.livebook.dev/ Короче вот вам идеи чо бы сделать в своих пет проектах
Михаил
Но бигтехи опять продвигают не те технологии
Aleksandr Khristenko
в sf ты хрен сделаешь массив из объектов
Ну недавно же с тобой говорили на эту тему и я показывал что можно.
Kirill
Ну недавно же с тобой говорили на эту тему и я показывал что можно.
ага, только мы договорились до того, что там костыль из Some[])
Kirill
а тут вот пруфы
Kirill
потому что я буквально неделю назад пробовал и не получалось нормально создать этот кейс)
Aleksandr Khristenko
У меня сейчас вот такое нормально десериализовало class Par { public function __construct( /** @var list<Child> */ public readonly array $child ) { } }
Kirill
ну так я перепроверил и оно не сработало
Kirill
из чего я сделал вывод, что там какой-то костыль
Kirill
а оказалось что костыль узаконенный, просто надо переопределить нормалайзер
Aleksandr Khristenko
Я на дефолтном сеттинге проверял.
Aleksandr Khristenko
Как симфония его собирает.
Kirill
а, я чистоганом просто
Kirill
Тебе нельзя их писать!
Надыбал либу старую, которую под темпорал писал и обновил)
Kirill
Она даже вот такие штуки умеет делать, когда можно внешние маппинги налету подменить
Kirill
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 и на сущности висит софтделетебле атрибут. И всё, всё по умолчанию работает. Если мне нужно отключить эту фичу - ну у меня в репозитории есть пара методов которые получают удалённые сущности и один метод который восстанавливает сущность. Если нужно постоянно дрочить этот флаг по всему проекту - ну это признак не очень хорошей архитектуры.
Михаил
Ребят у меня вопрос. Я помню давно его искал но ничего толкового не нашёл. Новых попыток не делал - пишу сюда. Короче у меня symfony messenger консъюмит сообщения из кролика и обрабатывает (дефолтная схема). Каждое сообщение - это json у которого есть числовой id. Вопрос: как сделать так чтоб сообщения с одними и теми же id попадали в один и тот же консъюмер Бонусный вопрос: как избежать перегрузки только одного консъюмера Контекст: Я контролирую отправку сообщений в кролик, но я хотел бы увеличивать и уменьшать кол-во консъюмеров просто меняя их кол-во в отдельном конфиге, но при этом ничего больше не конфигурировать
Vlad
у kafka partition key есть, надо в эту сторону копать. не юзал.. А у rabbit как решить, хз. Тока с помощью lock
The Ant
race-condition хочешь решить?
Вообще, интересно как реализуют 1 очередь - 1 воркер, и вот это кмк поможет
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 очередь
Павел
Но там правда вопрос будет как грамотно скейлить это уже смотреть про шардирование бд
Михаил
Эт как? Есть пример?
"my_queue_" . hash_to_decimal($payload, min: 1, max: 10);
Михаил
тут весь прикол в том, что я использую симфони мессангер для консъюма и непонятно как консъюмер должен понять какой у него номер
Михаил
вроде реббит - это тупые консъюмеры и умный брокер. Я думал сам реббит сможет это хендлить
Vlad
казалось бы, проблема которая давно существует. почему бы не решить на уровне кроля
Vlad
да и забыть
The Ant
Я чот пытался реализовать 1 воркер на 1 очередь, и скейлить очереди. Но кажется в мессенджере чёт не хватает для этого. Разруливать не понятно как, чтоб не в ручную, отправлять задачи в очереди, раунд Робином например
Михаил
Да, раунд роббин кажется нормальной идеей - но только если работы мало