Roman
Отказоустойчивость, в первую очередь. Приложение на эрланге падает частями и перезапускается частями
Юра
Типо как микросервисы?
Юра
Толко на уровне приложения?
Roman
Супервизоры следят за процессами. К примеру, отвалилась бд. В стратегии супервизора написано, пробуй перезапустить воркеры, которые подключаются к бд 10 раз в течение 3 секунд, дальше умирай с ними со всеми. Супервизор дохнет, вышестоящий видит это и переключается на резервную бд
Roman
Да, чуть похоже на микросервисы
Roman
Далеко не везде "искаропки"
Maxim Kainov
Далеко не везде "искаропки"
Какая разница искаропки или нет
Roman
В эрланге переменных нет, тоже классная штука
Maxim Kainov
В эрланге переменных нет, тоже классная штука
Это куча вложенных функций одна в другую тогда будет
Roman
Какая разница искаропки или нет
Большая разница. Нет зоопарка технологий - легче поддержка, дешевле
Roman
Это куча вложенных функций одна в другую тогда будет
В нем сообщениями процессы общаются
Roman
Ваше право считать как угодно)
Roman
Я не агитирую
Roman
На эрланге пишешь позитивный сценарий и все. Оно работает. Все, что не так - действует принцип языка let it crash.
Maxim Kainov
Ваше право считать как угодно)
Как ограничения в выборе технологий удешевляют поддержку, загадка
Roman
Не нужна стайка девопсов, например. Когда ты владелец бизнеса, это понимается очень быстро и хорошо)
Roman
Они вообще не нужны (по секрету). Докер, кстати, тоже ;)
Юра
Не ну хто теоретически можно сделать с помощью того же pm2 на ноде
Roman
Есть много инструментов, да
Roman
Я не спорю с этим)
Юра
Тоже перезапуски, зависимости воркеров друг от друга межпрлцессное взаимодействие
Юра
Отсутствие переменных ч так.понимаю позволяет легко параллить приложение
Юра
Потому что нет по сути shared state
Roman
Отсутствие переменных ч так.понимаю позволяет легко параллить приложение
В том числе. А уж отлаживать вообще одно удовольствие
Юра
Если все на стеке то автоматом все thread safe
Юра
Хотя тут я не силен немного не понимаю как происходит передача объектов
Юра
Копируется всегда?
Maxim Kainov
Вообще не представляю как можно совсем без переменных )
Roman
Копируется всегда?
Там сообщения и процессы, объектов нет. Да, копируется.
Roman
Вообще не представляю как можно совсем без переменных )
Константы. И рекурсия вместо циклов. В эрланге она хвостовая, оптимизированная.
Roman
Запутаться легко в рекурсиях
Это кажется :) там на весь процессинг их единицы
Roman
Для сайтов он, конечно, не оч. Там эликсир уже подойдет, на виртуальной машине эрланга сделали язык
Roman
Точно :))
Roman
Но процесс менеджеры на пхп я бы не писал 😝
Юра
Кардиостимулятор на пхп
Юра
If $noPulse die()
Юра
Big_Shark
Как сиделать симфонии валидацию типов в объекте, и при этом использовать тайп хиниы из 7.4?
Big_Shark
Александр
Как сиделать симфонии валидацию типов в объекте, и при этом использовать тайп хиниы из 7.4?
Просто используй валидацию и тайп хинты одновременно. На самом деле вопрос непонятен, чего именно ты хочешь достичь.
Big_Shark
Просто используй валидацию и тайп хинты одновременно. На самом деле вопрос непонятен, чего именно ты хочешь достичь.
У меня и валидацию и тайп хинты, в валидацию значится что это должен быть массив, но на вход приходит строка, и получается что у меня не успевает сработать валидацию, потому что ошибку выбивает ещё на моменте присвоения строки в переменную где может быть только массив
Александр
есть текст ошибки?
Александр
У меня и валидацию и тайп хинты, в валидацию значится что это должен быть массив, но на вход приходит строка, и получается что у меня не успевает сработать валидацию, потому что ошибку выбивает ещё на моменте присвоения строки в переменную где может быть только массив
Строгая типизация является фундаментальной частью, а валидация это логическая надстройка, понятно что если у тебя свойство типа array а ты пытаешься присовить string, то выпадет ошибка типизации. Ты не передавай string и все будет норм.
Александр
либо убирай строгую типизацию если не можешь повлиять на входящие параметры, одновременно не получится
Big_Shark
Строгая типизация является фундаментальной частью, а валидация это логическая надстройка, понятно что если у тебя свойство типа array а ты пытаешься присовить string, то выпадет ошибка типизации. Ты не передавай string и все будет норм.
Там перед этим сериалайзер, я понимаю как это работает, я спрашиваю, кто и как решил эту проблему, и решил ли, у меня есть вариант распарсить правила в дто, и собрать их в кучу, и прогнать эти правила на массиве, а потом уже делать преобразования этого массива в дто
Big_Shark
есть текст ошибки?
Ошибка несоответствия типов стандартная
Big_Shark
Хотя вру, возможно симфонии сериалайзер что-то пишет, о том что не может сделать присвоение
Юра
Почитай про property info component
Egor
https://symfony.com/doc/current/components/serializer.html#recursive-denormalization-and-type-safety
Big_Shark
Почитай про property info component
И что там читать? Про него то я знаю
Big_Shark
У тебя два варианта. Либо не задавай тип эррэй, либо через дто валидруй данные.
черещ двто валадируй данные? Так это и есть дто уже сама по себе.
Юра
А почему у тебя приходит строка?
Юра
Сериалайзер значит не вкуривает что тип поля массив?
Maxim Kainov
Сериалайзер значит не вкуривает что тип поля массив?
А при чем тут сериалайзер. Он же не приводит строку к массиву.
Юра
Короче я не пойму его проблему вообще
Юра
При чем тут валидатор и тайпхинты
Maxim Kainov
Я тоже не пойму ))
Maxim Kainov
черещ двто валадируй данные? Так это и есть дто уже сама по себе.
Что у тебя за строка вместо массива приходит?
Big_Shark
А почему у тебя приходит строка?
Потому что партнёр заслал не то что нужно
Big_Shark
А второго дто быть не может )
Два одинаковых дто, смысл, просто больше кода
Big_Shark
К нам приходит вебхук, и мы через симфонии сериализатор превращяем его в дто, и потом эту дто валидируем, и все хорошо, пока мы не начинаем использовать тайпхинты для переменных.
Big_Shark
Зачем задавать тип эррэй, если туда строка приходит
Туда должен прийти массив, но формат вебхук поменялся, и туда пришла строка. Нас разумеется не уведомили.
Maxim Kainov
Либо ловить исключение
Big_Shark
В чем проблема тип убрать
В том и проблема что не хочется убирать тип, иначе статические анализаторы начинают ругаться
Big_Shark
Либо ловить исключение
Гемор, и получится если проблема в 2 полях, в ошибке все равно будет только одно
Big_Shark
В пхп8 юнион типы появились
Все равно это криво, я рассчитываю что там будем массив, и в валидацию указано что там может быть только массив