@scala_ru

Страница 71 из 1499
Grigory
06.09.2016
12:40:12
и мб просто переопределить resolvers

resolvers := Seq(...)

folex
06.09.2016
12:41:12
Ну в общем убрал централ. теперь везде Failed to read descriptor dependency

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

Google
folex
06.09.2016
12:43:31
pizdec.jpg

Daniel
06.09.2016
12:50:31
еще пара глупых идей переменные окружения проверить и попробовать отрубить плагины у сбт

folex
06.09.2016
12:53:00
сработало что ли О_О

addMavenResolverPlugin в plugins.sbt удалил

ошибки пропали, точнее теперь пишет [warn] Host repo.t2v.jp not found. url=http://www.t2v.jp/maven-repo/org/ow2/asm/asm-parent/4.1/asm-parent-4.1.jar [info] You probably access the destination server through a proxy server that is not well configured. Посмотрим, как это скажется

Юрий
06.09.2016
12:53:58
А он зачем был нужен?

folex
06.09.2016
12:54:23
Юрий отличный вопрос. Не знаю. Возможно раньше нужен был для работы с мейвеном

Nick
06.09.2016
12:58:49
у тебя какие-то репозитории странные)

folex
06.09.2016
13:01:37
Для apache common logging? :)

Nick
06.09.2016
13:01:46
вообще

да и apache common logging нах не нужен)

folex
06.09.2016
13:02:29
-_-

Nick
06.09.2016
13:02:41
нормальные люди slf4j юзают

Google
folex
06.09.2016
13:02:53
У нормальных людей есть транзитивные зависимости

Nick
06.09.2016
13:03:08
плохая практика)

folex
06.09.2016
13:03:20
Транзитивные зависимости? Это троллинг?

Nick
06.09.2016
13:03:37
да)))

folex
06.09.2016
13:04:13
понятно

Nick
06.09.2016
13:04:37
на самом деле, если не юзаешь logging сделай на него exclude

Sovent
06.09.2016
13:48:19
Кто-нибудь юзал: https://github.com/strongtyped/fun-cqrs ?

Nick
06.09.2016
17:53:37
Давно rc стал релизом?)

Nikolay
06.09.2016
17:55:41
github release

Vadim
06.09.2016
19:00:58
хэй - новый выпуск http://scalalaz.ru/series-03.html

Foo
06.09.2016
20:01:16
класс

Artem
06.09.2016
20:19:28
спс!

Denis
07.09.2016
09:07:33
Akka 2.4.10 http://akka.io/news/2016/09/07/akka-2.4.10-released.html

Viacheslav
07.09.2016
09:09:29
народ подскажите есть ли нормальный враппер над slf4j, чтобы простой и без фокусов внутри?

Foo
07.09.2016
09:09:49
Typesafe Logging?

Grigory
07.09.2016
09:10:14
да, скала логгинг который

Viacheslav
07.09.2016
09:15:42
лично мне тайпсейф не нужон

Юрий
07.09.2016
09:18:21
В каком смысле?

Grigory
07.09.2016
09:20:18
https://github.com/typesafehub/scala-logging

Viacheslav
07.09.2016
09:24:03
ну вот там в исходниках какая-то магия происходит с макросами. Зачем всё это? Разве нельзя сделать тончайший враппер с меодами в стиле: def trace(message: String, arguments: Any *) = if (log.isTraceEnabled) log.trace(message, arguments)? Тайпсейф - я так понимаю это когда у нас есть форматированная строка и несколько параметров, дык вот если параметры разъезжаются с форматированной строкой то в тайпсейф логгере у нас будет ошибка компиляции. Мне такая фича не нужна

Google
Юрий
07.09.2016
09:25:00
Там тайпсейф это просто название

Grigory
07.09.2016
09:25:05
+

они спцом переименовались в лайтбенд

Юрий
07.09.2016
09:25:26
Макросы нужны, чтобы не вычислять аргументы

Ivan
07.09.2016
09:27:37
А зачем вообще тогда враппер

У них там 5 методов всего логгеров который 90% времени юзаются

Nick
07.09.2016
09:29:09
чтобы написать with Logger

и не создавать филд логгера

Ivan
07.09.2016
09:30:17
Ну трейт можно написать

Юрий
07.09.2016
09:30:55
Ну там так и сделано

Grigory
07.09.2016
09:31:04
да тож самое получится а эта депенся из пары классов

не тяжелая ниразу

Ivan
07.09.2016
09:31:16
Не я не спорю что враппер норм

Я сам его использую

Просто зачем человеку враппер без явных преимуществ

Макросы это типо преимущество

При компиляции вычисляет параметры а не в рантайме

Nick
07.09.2016
09:32:40
не все

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

и решается эт как раз в рантаиме

Google
Юрий
07.09.2016
09:35:59
всё так

Nick
07.09.2016
09:43:33
кстати если бы был call by value для varargs то можно было бы и без макросов

Юрий
07.09.2016
09:44:03
call ba value разворачивается в куда более сложный байткод, чем просто иф, вставленный макросом

Admin
ERROR: S client not available

Nick
07.09.2016
09:44:26
не страшно

jit уберет)

Юрий
07.09.2016
09:45:24
как раз таки страшно. Потому что экономия, которую дает макрос - она не очень значительная. А если везде все параметры передавать как call by value, то там на каждый арумент фактически будет передаваться фунгкция. А это объект класса. А это уже довольно жирно.

в итоге вся экономия сойдет на нет

и враппер только жыра добавит

Nick
07.09.2016
09:47:42
не стоит быть таким категоричным

не известно какие оптимизации делает scalac

возможно есть какой-то escape analyze

Юрий
07.09.2016
09:48:19
лучше не полататься на внутренние оптимизации

Foo
07.09.2016
17:18:50
кто-нибудь в курсе, существует ли возможность в параллель запустить несколько совершенно разных Future, а потом дождаться всех сразу одним таймаутом? хочется чего-то такого: def f(a: Int): Either[ErrorResponse, ResponseForF] = ??? def g(b: String): Either[ErrorResponse, ResponseForG] = ??? def parallel[T, E](f: => Either[ErrorResponse, T], g: => Either[ErrorResponse, E], timeout: Duration): Either[ErrorResponse, (T, E)] мне как раз parallel нужен. можно написать самому с корректным учетом истекаемого таймаута, но не хочется, если уже есть библиотечная функция

Await может ждать только одну Future и не комбинируется, вроде бы

Future тоже комбинируется только в последовательность. ну или можно из List[A] и f: A => Future[B] получить List[Future[B]] - но это не то, что нужно

Nick
07.09.2016
17:24:49
Future.sequence

Не из той оперы?

Foo
07.09.2016
17:25:44
хм. невнимательно вчитался в код видимо, сейчас посмотрю еще раз

там внутри вроде последовательно все применяется

Google
Foo
07.09.2016
17:26:29
превращается в цепочку f(1).flatMap(_ => f(2)).flatMap(_ => f(3))

Nick
07.09.2016
17:26:31
Если последовательность, то в for засунь

Ну или так

Foo
07.09.2016
17:26:43
in.foldLeft(successful(cbf(in))) { (fr, fa) => for (r <- fr; a <- fa) yield (r += a) } map (_.result())

а мне нужно не последовательно, а одновременно двух фьючей дождаться именно)

и вернуть общий результат или ошибку той, что упала, если одна упала

хм. хотя я что-то ступил. flatMap выполняет фьючи параллельно

по крайней мере простой тест вида https://gist.github.com/menchauser/260d5d2653f4a3eafb28fe1351da01ce отрабатывает успешно

Alexey
07.09.2016
18:29:59
Просто в твоем примере ты запустил их ДО того как скомбинировал в for

Попробуй val f1 = ... заменить на def

Foo
07.09.2016
18:33:05
оу

опять ступил, спасибо

Alexey
07.09.2016
18:33:17
А если нужно параллельно, то Future.traverse/sequence/zip

Foo
07.09.2016
18:33:41
спасибо, попробую!

folex
08.09.2016
10:13:17
> sbt 0.13.9 release note > @cunei in #1223 discovered that sbt leaks PermGen when it creates classloaders to call Scala Compilers. sbt 0.13.9 will call GC on a set interval (default: 60s).

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