Крылатый
До сих пор проигрываю с того, что останов итерирования там штатно делается через raise StopIteration
Denis
ну если ты пишешь на питоне тебе как то похуй на перфоманс
Denis
более или менее
Denis
Надо шоб работало, а как - это уже другой вопрос
Denis
если мне нужно распарсить что то по быстрому или хуйнуть реквест или изи админку сделать - я выберу питон, просто потому что на нем это можно сделать быстро и без секса с компилятором
Ayrat
в питоне!
Denis
Потому что его НЕТ
Denis
ага
Ayrat
😄
Denis
(тут видео с веселым молочником Джаспером)
Roman
10 пранков которые вышли из-под контроля
Denis
изи админка по-быстрому лол
джанга, модельки хуяк хуяк генератором, готов
Roman
хуй знает, на моем опыте админка никогда не была изи, и вовсе не из-за того, что нет нужного фреймворка чтобы что-то там хуйнуть генератором
Roman
ну да ладно, можт это у меня опыт вырожден, а у нормальных людей админки изи пизи
Denis
я не про те админки которые подразумевается юзать больше пары дней-недель
Mikhαil
ну да ладно, можт это у меня опыт вырожден, а у нормальных людей админки изи пизи
Ну хз. Чот тоже не скажу что изи админки часто встречаю
Mikhαil
Типа совсем на коленке что-то
Denis
как временное решение например для готовой базы или там когда тебе нужно просто что то потыкать в вебморде самое норм решение
Denis
тк админка генерируется самостоятельно и там уже есть авторизация, jwt, вот это вот все из коробки
Roman
аа. Ну, тут есть другая проблема — многие большие админки именно и так зарождаются, но их никто не переписывает вовремя. Все время еще всего лишь пару фич докидывают
Shub
Ну, я говорю про простые вещи вроде Async<Result<Account, AccountCreateError>>
ты намекаешь, что стоит завернуть все в result и проставить сигнатуры - и все, контроль эффектов?
Denis
аа. Ну, тут есть другая проблема — многие большие админки именно и так зарождаются, но их никто не переписывает вовремя. Все время еще всего лишь пару фич докидывают
с одной стороны это зря, но с другой стороны - если работает и приносит вэлью, то почему нет Айрат выше писал - дешевле железа купить чем программистов для того чтобы это переписать
Roman
А потом их не переписывают потому что ну добавить еще одну фичу это конечно геморрой, но переписать это же еще больший гемор, поэтому ну добавим еще а что делать
Roman
ты намекаешь, что стоит завернуть все в result и проставить сигнатуры - и все, контроль эффектов?
я не знаю, что такое православный контроль эффектов. Я всего лишь утверждаю, что когда в сигнатуре есть асинк — это удобно, чтоб понять, что функция делает ИО со всеми вытекающими. И если в сигнатуре резалт с нормально описанными доменными ошибками — с этим тоже проще жить, чем выискивать по коду `BusinessLogicException`ы.
Anatoly
Ай короче впизду. Пишите как хотите, словно мне больше всех надо
да что сразу в пизду-то. Игрались мы с этими резалт-монадами или как это называется. В результате пришли к тому, что и резалты остались, и исключения. И в код всё равно надо смотреть, если у тебя проект больше полусотни строк
Roman
а я и не говорю, что надо полностью отказаться от исключений. Все ситуации в резалт не запихнешь, да оно и не надо. Я вон даже в докладе про это и говорил)
Anatoly
могут, да. При этом пихать везде резалт тоже, кмк не вариант.
Anatoly
Мы остановились на разнесении типов на входе и на выходе и на validationexceptions
Roman
поэтому я и уточнил, что доменные ошибки надо в резалт
Anatoly
Task<Account> CreateAccount(AccountCreateRequest acr)
Roman
домен, валидация, бизнес логика — это в резалт. Инфраструктура / непредвиденное говно — в исключения
Doge
Самый лучший вариант
Roman
ну в сишарпе резалты делать больно
Roman
я до сих пор не определился для себя, как там лучше — городить честные резалты или исключениями обмазываться. Потому собсно и сбежал в фшарп, чтоб не искать ответ на этот вопрос)
Roman
полагаю, что дальше речь там идет о том, чтобы написать универсальные обвязки, чтоб в будущем экономить кол-во кода
Shub
я до сих пор не определился для себя, как там лучше — городить честные резалты или исключениями обмазываться. Потому собсно и сбежал в фшарп, чтоб не искать ответ на этот вопрос)
по свидетельствам преподобного Сайма, исключения используются в нижних слоях. в горнем мире - result. на нижнем уровне у тебя с вероятностью 99% интероп с .net и там будут исключения. зато домен - это почти всегда чистый код и там вполне можно выразить через резалты все
Roman
Но иногда эти обвязки как и очень многие "универсальные фреймворки" получаются слишком многословными и неповоротливыми
Shub
я например позволяю клиентам (космос, кафка и т.п.) кидать исключения, но перехватываю их почти по месту, т.к. крашить сервис из-за ошибки как-то... мелочно, что ли?
Doge
это ты про фшарп наверное
Ну это везде верно, где можно резалты нормально выразить.
Roman
да, там где можно нормально резалт выразить — этот вопрос не стоит
Shub
космос клиент например использует исключения как штатный механизм сообщения о... обо всем. причем очень энтерпрайзно так: выкидывает system.agreggate exception, в который завернуто еще один exception и у этого внутреннего есть некий числовой статус, подозрительно похожий на http status code
Roman
мы вроде уже решили от него отказаться
Mikhαil
И потом ещё огромный трай кетч
Mikhαil
И про бизнес и про другие ошибки
Mikhαil
Мммм
Roman
типа if (money > moneyLimit) throw new NotEnoughMoneyException(…)
а какие варианты у бедных джавистов/сишарпистов?
Shub
мы вроде уже решили от него отказаться
он двоякое впечатление производит. с одной стороны крутой дизайн и обещания. с другой стороны на практике он настолько гибок, что по виду напоминает диарею
Roman
согласен
Shub
джойнить коллекции нельзя. Вот это гибкость! Но про диарею и обещания согласен
так нигде нельзя. в DynamoDB точно, в монге можно уже или нет? а так у них отдельная статья в документации на эту тему
Roman
в постгресе можно!)
Shub
ну там таблицы все-таки :)
Ilya
Самый лучший вариант
А вариант с тройственностью хуже? Я в скала чате что-то такое видел. Типа, хороший ответ, ошибка бизнес-логики, неожиданная ошибка? Там ещё загоняли что-то про 4 для таймаутов, но это уже совсем как-то перебор.
Doge
А вариант с тройственностью хуже? Я в скала чате что-то такое видел. Типа, хороший ответ, ошибка бизнес-логики, неожиданная ошибка? Там ещё загоняли что-то про 4 для таймаутов, но это уже совсем как-то перебор.
Ну так это всё равно укладывается в то, что хороший ответ и обрабатываемую ошибку бизнес-логики мы кладем в резалт, а остальное в исключение
Ayrat
Очередная порция бухлишка по подпиське @grishace
Ayrat
Hog
ого!
Ayrat
Ага!
Ayrat
Каждые 2 недели
Ayrat
Нормас шлют
Ayrat
Не дают просохнуть
Hog
бирадвокат чо про них говорит?
Ilya
Минздрав предупреждает. Алкоголь вредит вашему здоровью.
Ayrat
бирадвокат чо про них говорит?
Хуй знает, я просто бухну
Hog
Минздрав предупреждает. Алкоголь вредит вашему здоровью.
в малых дозах полезен в любом количестве!
Ayrat
И привыкание не вызывает.
Конечно нет, я каждое утро могу не пить
Hog
во-во
Ayrat
Иногда даже в обед могу