
folex
21.12.2016
16:40:58
да
так какая разница? Что сам, что не сам

Nikolay
21.12.2016
16:41:06
там кажется используется PatienceConfig глобальный скалатеста

folex
21.12.2016
16:41:20
в скалатестах иногда внутрях такая жуть, что лучше не трогать
eventually например

Google

Nikolay
21.12.2016
16:41:30
futureValue и whenReady отлично работают - никогда не было проблем

folex
21.12.2016
16:41:54

?Ivan
21.12.2016
16:42:56
никто не в курсе как сделать partial apply полиморфной функции ?

Nikolay
21.12.2016
16:43:26

folex
21.12.2016
16:43:45
понятно

Nikolay
21.12.2016
16:44:23
а есть встроенная возможность сделать retry теста с большим PatienceConfig?

folex
21.12.2016
16:45:16
Мы не нашли. Пытались делать авторетрай тестов, не взлетело. сбт конечно сохраняет зафейленные тесты, но вот запустить их потом не особо выходило автоматически
не помню уже почему

Kirill
21.12.2016
16:45:48
кстати, ребзи, что думаете по поводу такого паттерна - есть задача послать сообщение адресату(tcp) и потом когда на него придет ответ, что-то с этим сделать, если при отправке сообщения запихивать в конкаррент мапу пару uuid->completablefuture, и в другом потоке когда будет получен ответ на это сообщение, доставать из мапы футуру, комплитить её, может выполнять какие-то действия...норм?
и если сообщение пришло позже какого-то таймаута, делать какие-то другие действия, фейлить футуру например...дает возможность в отправляющем потоке при необходимости посидеть подождать эту фьючу

Nikolay
21.12.2016
16:48:21
в смысле все тесты окружать withRetry, и если что-то там по таймауту отвалилось, то делать retry

Google

folex
21.12.2016
16:49:15
ну можно и так

Nikolay
21.12.2016
16:49:19
у нас для конкретных кейсов такое было, нормально работало

folex
21.12.2016
16:49:39
можно в проперти/конфиг переменную с patience прокидывать, и после фейла тестов перезапускать их просто

Mikhail
21.12.2016
16:50:17
ну и тебе нужно прослойку сделать, которая будет скрывать в себе уиды и выступать транспортом для уровня выше, который об этом ничего знать не будет


folex
21.12.2016
16:52:02
кстати, ребзи, что думаете по поводу такого паттерна - есть задача послать сообщение адресату(tcp) и потом когда на него придет ответ, что-то с этим сделать, если при отправке сообщения запихивать в конкаррент мапу пару uuid->completablefuture, и в другом потоке когда будет получен ответ на это сообщение, доставать из мапы футуру, комплитить её, может выполнять какие-то действия...норм?
В целом норм, только нагрузочные тесты не забудь, и поиграться с параллелизмом мапы.

?Ivan
21.12.2016
16:53:42
Вот как заставить вот это скомпиляться? http://scastie.org/24346

Kirill
21.12.2016
16:54:07

Mikhail
21.12.2016
16:54:52
узнает конечно, просто чтобы у тебя не остался не замеченным факт того, что потом все таки ответ пришел)

Kirill
21.12.2016
16:55:15
Только вопрос, как фейлить то на что вообще респонса не пришло, какой то отдельный воркер который периодически бегает по мапе и ищет те которые уже точно затаймаутились?

folex
21.12.2016
16:55:16

?Ivan
21.12.2016
16:55:16

Kirill
21.12.2016
16:55:45

Viacheslav
21.12.2016
16:55:48
Микросервисы в тестах соу сэкси

Mikhail
21.12.2016
16:58:31

Kirill
21.12.2016
16:59:50

Mikhail
21.12.2016
17:00:24
типа того. если ты прослойку делаешь - у тебя все карты на руках и ты можешь любую мета-инфу добавить к таску и ее чекать когда надо и не надо
синкануться только не забудь или на акторах наплоди, чтобы эта просыпашка ничего не попортила)

Kirill
21.12.2016
17:02:03

folex
21.12.2016
17:02:45

Google

folex
21.12.2016
17:03:26

Kirill
21.12.2016
17:04:03
кстати, кто может пояснить за механизмы разруливания конфликтов при ожидании респонса на одинаковый реквест от нескольких узлов: госсип, кворум, за/против?

Mikhail
21.12.2016
17:04:13
конкаррент мапа же
ну и что) взял ты по ключу ( не вынул, а просто для рида) и посмотрел не пора ли фейлиться, а пока ты смотрел - ему уже ответ пришел

folex
21.12.2016
17:04:40

Mikhail
21.12.2016
17:05:32

folex
21.12.2016
17:06:21

Kirill
21.12.2016
17:06:32

Mikhail
21.12.2016
17:07:38
а дальше агрегация обычная
наслаиваешь

Kirill
21.12.2016
17:10:23

Mikhail
21.12.2016
17:14:05
с учетом того, что от каждого транспорта( который работает только со своим соединением) ты получишь футурку - то на выходе у тебя сиквенс футурок, которые ты естественно легко сагрегируешь

Mikhail
21.12.2016
17:14:33
и на выход выше отдашь уже общую футурку
там дальше детали шибко зависят от требований

Aleksei
21.12.2016
17:17:40
ребята а в плане бенчмарков расскажите кто быстрее, финч или акка-хттп?

KrivdaTheTriewe
21.12.2016
17:25:27

Mikhail
21.12.2016
17:25:30
держи, если это тебе подходит)

KrivdaTheTriewe
21.12.2016
17:25:36
В ридмд

Mikhail
21.12.2016
17:26:48
ну или сокращенно val f2 = (f[String] _).andThen(_._1)
вобщем как обычно, нужно немного помощь компилятору)

Google

Mikhail
21.12.2016
17:30:57

?Ivan
21.12.2016
17:36:36
Так мы тип явно указываем, а я хочу чтобы ф-я была такой же как и f, но возвращала только первый эл-нт из тупла

Mikhail
21.12.2016
17:41:10
а чем она у тебя не та же? также принимает на вход параметр) тут просто имплисит выводится

Daniel
21.12.2016
17:41:15
ща накидаю пример
хотя нет, тут не нужен

Mikhail
21.12.2016
17:43:41
def f2[T: test](value:T) = f(value)._1 - можешь еще такую обертку сделать
тут контекст сохраняется, а синтаксис внутри не очень важен - ведь на выходе все равно функция с имплиситом

Admin
ERROR: S client not available

?Ivan
21.12.2016
17:46:57
Засада в том, что у меня много имплиситных параметров, и не хочется плодить boilerplate

Mikhail
21.12.2016
17:47:05
вон там Одерски недавно даже пулл реквест запилил специально для неявной прокидки имплиситов - наверное и макросы потом под это дело подтянуться)
да здравствует ад)
имхо, лучше архитектурку пересмотреть в сторону уменьшения имплиситов)

?Ivan
21.12.2016
17:48:29
Они нужны для всяких json и футур, в общем имплиситы не мои

Oleksandr
21.12.2016
17:51:38

Mikhail
21.12.2016
17:52:15
в скаламете то конечно не сделают и не в ближайшее время) а вот в шейплесах каких-нибудь - пожалуйста)

Daniel
21.12.2016
17:54:42
Лови: http://scastie.org/24353
без шейплеса обошлось
?
@vndzzz

Google

?Ivan
21.12.2016
17:58:40

Daniel
21.12.2016
18:00:03
тут увы, имплиситы из ниоткуда не появятся

Oleksandr
21.12.2016
18:00:43
всецело поддержу @rudogma , не надо колдунств на имплиситах

?Ivan
21.12.2016
18:04:03
Завтра код полный код скину. Посмотрим

KrivdaTheTriewe
21.12.2016
18:06:15
@fomkin к разговору о гитхаб аккаунте интервьюемого, на скале сложнее в опенсорс влиться в том плане, что качество кода сильно выше среднего по больнице

Denis
21.12.2016
18:13:31
так наоборт имхо проще. Из-за порядка сразу видны паттерны.
Имея паттерны проще написать новую фичу

KrivdaTheTriewe
21.12.2016
19:13:59
Просто нужно знать как писать библиотеки , а там уже шейплес , скала, теория типов и так далее
Собственно поэтому конечные решения использовать легко

Oleg
22.12.2016
07:34:11
оба идёте наXYй

Oleksandr
22.12.2016
07:35:26
вот из-за мудаков типа тебя, скалистов и считают снобами
иди туда сам

Semyon
22.12.2016
07:35:29
=)
я не настоящий скалист, писал на ней всего два проекта
но имплиситы реально сложные в плохом смысле слова
Oleg, я пойду?

Oleg
22.12.2016
07:36:46
Oleg, я пойду?
нет, ты пока останься. Тебя ещё можно обучить тёмной стороне

Semyon
22.12.2016
07:37:04
Я уже в секте Рича
имплиситы вызывают у меня боль