@scala_ru

Страница 1292 из 1499
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
оппп, мноходовочка

invalid xml
так и думал, что нужно CDATA впендюрить ещё

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
ок,понял.Этого достаточно =)
А я юзаю и мне норм :3

Vadim
15.02.2018
07:14:27
А я юзаю и мне норм :3
я так про перл говорю

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

Daniel
15.02.2018
07:15:26
я так про перл говорю
Хехе) я про scalaxb отвечал

Nick
15.02.2018
07:15:33
Вообще которые месят соап
Слезу за весь дотнет мир

Александр
15.02.2018
07:17:59
Рациональными наверное
nope, это была аллюзия

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

вот тут было https://www.youtube.com/watch?v=7xSfLPD6tiQ
это уже следующий уровень Мю и Ню на функторах

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
это уже следующий уровень Мю и Ню на функторах
хм вроде мне казалась там вот именно объясняли что вот мы рекурсию заменяем спомщью Fix[F], ну забыл может уже

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
эээ... в скале же так не сделать?
https://gist.github.com/mpilquist/4e30f217166cb2013af9

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

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
object Test { implicit class Ops[A, R](a: A) { def bar(implicit ev: A <:< { def run(): R }): R = a.run() } } class Foo { def run(): String = "foo" } import Test._ new Foo().bar
подскажите пожалста, а зачем надо вот это (implicit ev: A <:< { def run(): R })? Почему не просто implicit class Ops[T](env: {def run(): T}) { def go = env.run() } ?

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
подскажите пожалста, а зачем надо вот это (implicit ev: A <:< { def run(): R })? Почему не просто implicit class Ops[T](env: {def run(): T}) { def go = env.run() } ?
С evidence можно написать value class и тогда будет создан только один инстанс обёртки, у которого будет кешироваться получение метода через рефлексию. А в твоём примере на каждый вызов будет через рефлексию получаться нужный метод, так как каждый раз будет создаваться новый экземпляр обёртки

Mikekekeke
15.02.2018
08:58:26
Я соврал, в моем случае тоже будет 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); }
вот мнетоже идея писала "reflective access of structural type member method run should be enabled..." в обоих случаях. Но я подумал "мало ли" ))

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

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() }

Google
Alexey
15.02.2018
09:18:07
Если скомпилится, то один раз для каждого класса

Если эта функция вызывается очень часто, то конечно лучше сделать тайп класс

Mikekekeke
15.02.2018
09:20:44
Если скомпилится, то один раз для каждого класса
https://scastie.scala-lang.org/Mikekeke/Y3n6tDm6R5yvpH4U14cdKQ

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
да, я знаю что он один из вышеперечисленных
а у execute какой тип результата?

Mikekekeke
15.02.2018
09:51:13
спасибо мил человек
да я-то тут больше в качестве random code generator выступал ))

Александр
15.02.2018
09:55:33
а у execute какой тип результата?
в некотором отдалении они все возвращают com.google.api.client.json.GenericJson

Alexey
15.02.2018
10:10:05
в некотором отдалении они все возвращают com.google.api.client.json.GenericJson
private def makeRequest[R, A](request: A, delay: Option[FiniteDuration] = None)(implicit ev: A <:< { def execute(): R }): Unit = { execute(request.execute(), delay) }

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