
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).