
Kirill
15.02.2018
06:24:46
Не, ну писать обертку над 15 jaxb кусками будет тоже больно и долго

Vadim
15.02.2018
06:24:57

Kirill
15.02.2018
06:24:57
Если бы их было поменьше, то норм

Oleg
15.02.2018
06:25:08
</ETOZDOROVOUDACHIDERZHITESTAM>

Google

Daniel
15.02.2018
06:25:24

Oleg
15.02.2018
06:25:27
оппп, мноходовочка

Daniel
15.02.2018
06:27:35

Oleg
15.02.2018
06:27:56
хаха
ха

Grigory
15.02.2018
06:28:29
я все ждал когда реакция то будет, думал ошибся
а ожидания то опрадываются, пусть и надо было подождать

Oleg
15.02.2018
06:31:18
слезу за всех тех пацанов, что вот уже который год саппортят скалаксбишный код, поправленный руками

Yuri
15.02.2018
06:49:16
Вопрос немного не по теме, но думаю будет кому подсказать. Насколько большие сообщения можно гонять через Rabbitmq и ему подобные? Это только в потребляемую им память будет упираться? Или есть какие то ограничения или другие какие то моменты.

Daniel
15.02.2018
06:55:55
очевидно это влияет на latency и траффик
и вероятно можно упираться в настройки клиентов

Google

Daniel
15.02.2018
06:58:38
но всегда можно позвращаться, например, передавать в сообщении не само жирное тело в утёсах, а указатель на него где-то в другой галактике

Daniel
15.02.2018
07:14:06

Vadim
15.02.2018
07:14:27

Oleg
15.02.2018
07:14:48
я так про скалу говорю

Grigory
15.02.2018
07:15:01

Daniel
15.02.2018
07:15:26

Nick
15.02.2018
07:15:33

Александр
15.02.2018
07:17:59

Alexey
15.02.2018
07:35:29
Читаю тут папир который скидывал лысый про high order streams. Там во всю fix и mfix. Подскажите где про это почитать?
Папир тоже подойдет

Oleg
15.02.2018
07:38:04
Про рекурсивные монады?
https://wiki.haskell.org/MonadFix

Alexey
15.02.2018
07:39:07
а просто fix это что?

Oleg
15.02.2018
07:39:24
Y -combinator

Daniel
15.02.2018
07:39:27
абстракция рекурсии

Evgeniy
15.02.2018
07:39:31
вот тут было https://www.youtube.com/watch?v=7xSfLPD6tiQ

Oleg
15.02.2018
07:39:39
def fix(f) = f(fix(f))

Alexey
15.02.2018
07:40:05
аааа... спасибо. затупил

Oleg
15.02.2018
07:40:17
нерелевантно фиксу на значениях

Google

Oleg
15.02.2018
07:40:41
там про Fix[F], Free[F], Mu[F], Nu[F] и всё это ближе к матрёшке

Evgeniy
15.02.2018
07:41:25

Oleg
15.02.2018
07:41:36
а mfix - это другая штука совсем
это когда ты можешь воспользоваться в предыдущем эффекте следующим
типа такой
for {
x <- shit(y)
y <- crap(x)
} yield ...
вот для этого mfix

Alexey
15.02.2018
07:44:07
эээ... в скале же так не сделать?

Oleg
15.02.2018
07:44:25

Alexey
15.02.2018
07:44:50
для хаскела вроде есть такое расширение

Oleg
15.02.2018
07:45:12
но если в качестве базовой монады сделаеть Eval, Task, IO и т.п. mfix вполне реализуем на них и на трансформированных

Alexey
15.02.2018
07:49:12
пока я не готов это обсудить, но почитаю и тогда поговорим! %)

Oleg
15.02.2018
07:56:31

Alexey
15.02.2018
07:57:23
я ничего не понимаю. нужно повтыкать

Oleg
15.02.2018
07:57:26
o.getOrElse(sys.error("empty"))
такой вот фикс

Diemust
15.02.2018
08:11:46
есть какая-нибудь структура reverse option, которая пробросит тебе значение по флатмапу, если значение есть, но будет выполнять следующую команду, если там None?

Alexey
15.02.2018
08:12:11
Either
Either[String, Unit]

Diemust
15.02.2018
08:12:39
эх, не хотел Either юзать =( думал мож чего поприятней есть

Alexey
15.02.2018
08:13:09
type ReverseOption[T] = Either[T, Unit]

Google

Aleksei
15.02.2018
08:15:27
надо написать ReasonableCats где будет Neither[A, B] =)

Alexey
15.02.2018
08:22:59
type Neither[A, B] = Nothing

Yuri
15.02.2018
08:23:53

Diemust
15.02.2018
08:41:43
type ReverseOption[T] = Either[T, Unit]
если при этом добавлять EitherT + в левом значении могут быть свои ошибки, с которыми надо чет делать, сложновато получается в общем, ну либо я не умею готовить это

Alexey
15.02.2018
08:43:29
Ну если ты хочешь все три случая различать, то уже просто не будет.

Mikekekeke
15.02.2018
08:48:58

Nikita
15.02.2018
08:49:50
В этом случае рефлекции не будет

Mikekekeke
15.02.2018
08:50:07
а чем оно полохо?

Nikita
15.02.2018
08:50:35
А зачем она, если можно обойтись без нее?

Mikekekeke
15.02.2018
08:51:12
понятно, спасибо

Nikita
15.02.2018
08:55:05
Я соврал, в моем случае тоже будет
public class Test$Ops<A, R> {
public static java.lang.reflect.Method reflMethod$Method1(java.lang.Class);
public R bar(scala.Predef$$less$colon$less<A, java.lang.Object>);
public Test$Ops(A);
}

Alexey
15.02.2018
08:55:09

Mikekekeke
15.02.2018
08:58:26

Alexey
15.02.2018
08:58:55
Кароч в производительности будет дикая разница

Mikekekeke
15.02.2018
09:03:32

Alexey
15.02.2018
09:10:44
R лучше перенести в сигнатуру go
А так да

Mikekekeke
15.02.2018
09:16:59
А так да
а вот этот вариант тоже будет каждый вызов получать через рефлексию метод? (уж простите за назоливость)
implicit class Ops[T](val env: {def run(): T}) extends AnyVal {
def go = env.run()
}

Alexey
15.02.2018
09:17:28

Google

Alexey
15.02.2018
09:18:07
Если скомпилится, то один раз для каждого класса
Если эта функция вызывается очень часто, то конечно лучше сделать тайп класс

Mikekekeke
15.02.2018
09:20:44

Alexey
15.02.2018
09:22:45
?

Александр
15.02.2018
09:42:44
крайний вопрос, как теперь сделать case x:Ops в match

Alexey
15.02.2018
09:44:30
Что ты хочешь сделать?

Александр
15.02.2018
09:46:43
Что ты хочешь сделать?
private def requestMatch(request: java.lang.Object, delay: Option[FiniteDuration] = None): Unit = {
request match {
case x: Analytics#Data#Ga#Get => execute(x.execute(), delay)
case x: AuthorizationCodeTokenRequest => execute(x.execute(), delay)
case x: Analytics#Management#Accounts#List => execute(x.execute(), delay)
case x: Analytics#Management#Profiles#List => execute(x.execute(), delay)
case x: AnalyticsReporting#Reports#BatchGet => execute(x.execute(), delay)
case x: Analytics#Management#Webproperties#List => execute(x.execute(), delay)
case x: Webmasters#Sites#List => execute(x.execute(), delay)
case x: Webmasters#Searchanalytics#Query => execute(x.execute(), delay)
case any => logError(s"Queue GOT unhandled $any ({${any.getClass}})")
ref ! GResponse()
}
}
вот это красиво переписать

Alexey
15.02.2018
09:47:35
ой вей, а тип известен на вызове requestMatch?

Александр
15.02.2018
09:48:14
да, я знаю что он один из вышеперечисленных

Alexey
15.02.2018
09:49:55

Mikekekeke
15.02.2018
09:51:13

Vadim
15.02.2018
09:51:55

Александр
15.02.2018
09:55:33

Alexey
15.02.2018
10:10:05