@oop_ru

Страница 775 из 785
Sergey
12.10.2018
19:51:43
Ну тип длина строки какого-то названия не должна парить домен, валидность к примеру мыла тоже.
валидность мыла может парить домен и это хорошо выражается типами и всякими VO типа Email

Павел
12.10.2018
19:53:17
то что ты описал - это просто полинг. Лонг полинг это когда ты подключаешься к серверу и соединение держится какое-то время (например 30 секунд) и если у сервера чего есть для клиента - выплевывается. А если нет - тайпаут и реконнект.
Да я так и представлял себк лонг полинг. Что конект держиться и ответ шлет сервер клиенту. А то что я описал я думал это говнище которое не используют уже лет 10 со времен как js на сайтах в таймере опрашивал сервер. И точто это просто полинг не знал. Спасибо, пойду гуглить)

Yury
12.10.2018
19:53:31
валидность мыла может парить домен и это хорошо выражается типами и всякими VO типа Email
Да но может и не парить. Тогда что мыло валидно проверяет кто-то другой, а то что к примеру мыло может быть только от mail.com или google это домен. Ну правда опять зависит от контекста. Но я имел ввиду, что есть проверки которые домена не касаются

Google
Yury
12.10.2018
19:53:33
Верно?

Павел
12.10.2018
19:54:32
тебе нужен просто полинг либо поставить какой centrifugo и не ебать голову
Хз что за centrifugo погуглю пойду. А так у меня в несколько потоков куча систем будет ебать мой сервер.

Sergey
12.10.2018
19:55:49
это надежнее

сервер шлет запрос с задачей + что дернуть когда закончишь работу. Ты заканчиваешь работу и дергаешь вэбхук

так типа будет клево и удобно и не надо никого бомбить

Павел
12.10.2018
19:56:21
тогда тебе нужны вэбхуки
Да не) там все сложней. Я работаю по протоколу готовому и он диктует правила

Это soap сервис который реализует протокол общения описаный в xsd

Yury
12.10.2018
19:57:46
ну так базу email-ы тож не парят. И вообще никог тогда не парит.
Я исхожу из логики, что тк это модель бизнеса. То там нет поняти я валидный email. Там он просто email уже подразумевает, что он валиден. А значит что в домен уже должен приходить валидиным. Валидный, валидный, валидный...)

Google
Павел
12.10.2018
19:57:52
Ктонибудь работал со SMEV протоколом?)

Yury
12.10.2018
19:59:01
и с этим прекрасно справляются VO.
Типа при создании VO email идет эта проверка?

Павел
12.10.2018
19:59:34
Sergey
12.10.2018
19:59:38
Типа при создании VO email идет эта проверка?
да. У тебя там где надо email все контракты просто принимают не string а Email. И ассампшен что этот объект не может содержать невалидный email.

Aleh
12.10.2018
20:00:58
Ну либо Email<Valid>|Email<Unchecked> и тип может меняться

Если может где-то неважно валидный ли он, а где-то важно

Sergey
12.10.2018
20:01:39
Ну либо Email<Valid>|Email<Unchecked> и тип может меняться
ну это разумеется в языках которые умеют в такие вещи как алгебраические типы, да?)

пойду смотреть на PHP и плакать

Yury
12.10.2018
20:02:20
Java 152?

Sergey
12.10.2018
20:03:55
Кст что за языки?)
F#, Scala, Clojure, OCaml, Haskell

knopkod4v
12.10.2018
20:04:00
да. У тебя там где надо email все контракты просто принимают не string а Email. И ассампшен что этот объект не может содержать невалидный email.
а вот кстати, что если проверка валидности VO тяжёлая и нужно сползать в какую-нибудь бд или на диск, пихать зависимость от объектов получающих данные для валидации?

knopkod4v
12.10.2018
20:05:36
фабрики
но тут надо типа запретить как-то объект напрямую создавать =\ Хотя может конвеншенами обойтись нормально получится =\

Yury
12.10.2018
20:06:16
Если проверки зависят от стейта?

Sergey
12.10.2018
20:06:49
но тут надо типа запретить как-то объект напрямую создавать =\ Хотя может конвеншенами обойтись нормально получится =\
ну блин, опять же, елси твоему бизнесу реально плеватьт на валидность email - то достаточно регуляркой собачку проверить. А если же бизнесу не насрать - то опять же бизнес пусть решает как будут проверять валидность. Обычно отправляют email.

Google
Sergey
12.10.2018
20:07:13
А стоит ли вообще при создании и валидации VO лезть за стейтом? VO ли это?
лазить за стэйтом будет штука пораждающая VO. Ассампшен что у этой штуки этот стэйт есть.

короч, опять же может хватит коней в вакууме обсуждать? Лучше придумай мне кейс при котором мне надо что-то сложно валидировать на что бизнесу в целом насрать

F01134H
12.10.2018
21:48:44
что бы можно было честно flow of control мутить
почему на ивентах честно, а на эксепшенах - нет?

Sergey
12.10.2018
21:49:02
почему на ивентах честно, а на эксепшенах - нет?
потому что мутить control flow на исключениях грешно)

F01134H
12.10.2018
21:49:18
Ну а мне интересно - почему

что такого плохого в исключениях и как это решается ивентами

Sergey
12.10.2018
21:53:20
справедливости ради - исключения плохо только тогда, когда ты кидаешь исключение с мыслью что кто-то его обязательно поймает. Как эдакое сообщение которое идет в разрез с обычным потоком управления кодом. Как goto. А чем плохи goto - читать тут: http://david.tribble.com/text/goto.html

Sergey
12.10.2018
21:54:51
Но ведь ивенты точно так же будут работать, разве нет?
ну я про доменные ивенты - они не такие шустрые и не работают как goto (не вылазят по стэку вызовов)

опять же, повторюсь - проблема только когда код который кидает исключение знает что кто-то его обработает. Типа как ивент.

а если ты кидаешь исключение потому что "ну для меня это исключительная ситуация и тут мои полномочия все, если никто не словит и упадет мне побоку" - то тогда как бы и проблемы нет

но оч легко поддаться на всякие плохие штуки

Valentin
12.10.2018
22:02:32
О, спасибо, это рассуждение порядок в голове в этом уголке навело)

Артур Евгеньевич
13.10.2018
09:37:16
Мне ваш диалог напомнил историю которую недавно у лида услышал. На собесе пришел чувак и с гордостью продемонстрирвоал свой фреймворк с "убийцей сервис контейнера". Суть в том что он ВСЕ сервисы наследовал от Exception и в случае когда ему нужен какой то сервер он просто делал Throw, отлавливал его и юзал. Из минусов своего фреймворка он указал то, что нужно следить за тем что все сервисы отлавливались, т.к если взять сервис и не обернуть в кэтч то все упадет

Aleh
13.10.2018
09:41:42
кидок в сторону контейнера какой-то

Sergey
13.10.2018
09:46:36
на хабре был один наркоман с которым мне нравилось спорить - у него async/await на исключениях и норм

работало без всех этих ваших сложностей с генераторами

Google
Sergey
13.10.2018
09:47:17
Т.е?
я был слишком туп что бы понять как это работает

но это работало

First
13.10.2018
09:47:28
А пример не накинешь?

Sergey
13.10.2018
09:47:46
там вся магия под копотом и я реально не помню как он это делал

First
13.10.2018
09:47:59
Потому как у меня 2 варианта реализации того что ты сказал

Sergey
13.10.2018
09:48:15
я хз, честно

просто делюсь что люди творят под веществами

Aleh
13.10.2018
09:48:29
const a = throw asyncF() все хорошо, но обратно ж не вернуться

First
13.10.2018
09:48:41
А, все таки это

Aleh
13.10.2018
09:48:56
а как?

First
13.10.2018
09:49:12
Именно в выполнение без .catch?

Aleh
13.10.2018
09:49:20
да

First
13.10.2018
09:49:25
Сек

Aleh
13.10.2018
09:49:33
ну дальше же этот a заюзать хочется с каким-то значением)

First
13.10.2018
09:50:40
С await у тебя будет тот же exception

Только само исключение будет обернуто в промис

Но выполнение дальше не пройдет если не обработаешь

Aleh
13.10.2018
09:51:01
если я throw заменю на await?

Google
Aleh
13.10.2018
09:51:28
нет же, в случае генераторов я могу продолжить вычисление генератора

gen.next()

и даже значение прокинуть

или exception

а как в случае эксепшена мне значение обратно прокинуть

First
13.10.2018
09:53:18
а как в случае эксепшена мне значение обратно прокинуть
Ты имеешь в виду asyncThrow.catch(value => value / это?)

Я не юзал генераторы, пардоньте (юзал, но не помню)

Никита
13.10.2018
09:54:17
f = async () => { x = await foo() }

как без генераторов в x вернется значение foo ?

First
13.10.2018
09:55:39
А что не так? ?

Aleh
13.10.2018
09:56:25
const f = () => { const x = throw foo(); console.log(x) } и дальще runAsync(f)

как должен быть реализован этот runAsync?

First
13.10.2018
09:56:48
Он должен обработать exception

Aleh
13.10.2018
09:57:03
const runAsync = f => { try { f() } catch(e) { // wtf should be here?? } }

дальше?)

First
13.10.2018
09:57:24
Тебе x нужен?)

Aleh
13.10.2018
09:58:15
ну да, мне надо чтобы f отработал

предположим, что foo такой: const foo = () => Promise.resolve(20)

по итогу запуска f в консоль должно вывестись 20

First
13.10.2018
10:00:43
Окей. А как ты себе это представляешь?) Ты кидаешь исключение и хочешь, чтобы код ниже исключения был выполнен

Страница 775 из 785