@scala_ru

Страница 358 из 1499
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
там кажется используется PatienceConfig глобальный скалатеста
а ты скейлишь этот конфиг? Я вот никогда не пользовался скейлом времени в тестах, периодически страдаю от этого

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

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
и если сообщение пришло позже какого-то таймаута, делать какие-то другие действия, фейлить футуру например...дает возможность в отправляющем потоке при необходимости посидеть подождать эту фьючу
других вариантов челочевеского "рек-респ" в ро-тсп и нет по сути) только не забудь, что респ может придти после того как ты уже зафейлишь)

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

?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
Только вопрос, как фейлить то на что вообще респонса не пришло, какой то отдельный воркер который периодически бегает по мапе и ищет те которые уже точно затаймаутились?

?Ivan
21.12.2016
16:55:16
никто не в курсе как сделать partial apply полиморфной функции ?
вот пример, но оно не компилится https://scalafiddle.io/sf/lz08Gmj/0

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

Mikhail
21.12.2016
16:58:31
в смысле таймер, timertask на каждую вешать?
если у тебя тоннами реквесты - нет смысла плодить таймеры. делаешь один инфинит (ну или пока таски есть) шедул и там уже проверяешь очередь

Kirill
21.12.2016
16:59:50
если у тебя тоннами реквесты - нет смысла плодить таймеры. делаешь один инфинит (ну или пока таски есть) шедул и там уже проверяешь очередь
мапу, ты имеешь в виду? типо поток просыпается раз в n времени, пробегает по всей мапе и ищет те которые уже опроздали? или я тебя неправильно понял?

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

синкануться только не забудь или на акторах наплоди, чтобы эта просыпашка ничего не попортила)

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

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

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
значит каждой ноде ты отошлешь свой отдельный запрос и в рамках конкретного соединения у тебя будет свой айди - даже если они будут одинаковые, они все равно в рамках соединения уникальны
подожди, у каждого отправленного запроса - свой уникальный id, но несколько отправленных запросов(и полученных ответов) могут относиться к одному и тому же запросу внешней стороны, и по какому-то признаку и надо определять их общность и определять, как сагрегировать, я про это

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
вот пример, но оно не компилится https://scalafiddle.io/sf/lz08Gmj/0
что-то там не сохранилось, вот тут ворк https://scalafiddle.io/sf/yVn8oVw/0

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

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

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 и футур, в общем имплиситы не мои

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
Лови: http://scastie.org/24353
Это уже предложили. Засада в кол-ве тайп классов и имплиситы. Не хочу их дублировать

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
Просто нужно знать как писать библиотеки , а там уже шейплес , скала, теория типов и так далее

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

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
Я уже в секте Рича

имплиситы вызывают у меня боль

Страница 358 из 1499