@scala_ru

Страница 772 из 1499
Mikhail
27.06.2017
10:14:31
но пример где таггеттипы не работают с дерайвом - все таки давай)

Фрилансер
27.06.2017
10:14:44
Господа, кто может посоветовать инструменты, чтобы продьюсить SOAP сервис? Желательно не Play. В Akka не нашел ничего подобного, кроме camel.

Не уж то jax-ws только остается?

Alexey
27.06.2017
10:15:47
scalaxb

Google
Mikhail
27.06.2017
10:16:32
т.е. каноничное использование - это implicit class Ops(val u: Int) extends AnyVal ....
не назвал бы это каноничным. просто преследуются разные цели)

Oleg как назвать метод вместо который будет выдавать на выходе потрошенку? (вместо @@ )

Oleg
27.06.2017
10:21:20
это каноничное использование shapeless.newtype

https://scalafiddle.io/sf/LN0OTMC/0

тут даже без дерайва

просто вот опс

очевидно, что провернуть такое же с тегом не получится, т.к. у функции, которая завраплена есть свой apply

ну или если получится, проверни

Mikhail
27.06.2017
10:25:35
очевидно, что провернуть такое же с тегом не получится, т.к. у функции, которая завраплена есть свой apply
еще раз. то, что сабин назвал ньютайпом и есть самый настоящий тег. то, что выдает на выходе супертаггет - есть ТегированныйТип with Тег. и мне нет проблем выдать на выходе только Тег без теггированного типа. я и спрашиваю, как назвать метод дополнительно к @@ который будет делать все тоже самое, только на выходе выдаст ньютайп без основания и будет удовлетворять твоим представлениям о каноничности)

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

Фрилансер
27.06.2017
10:27:53
scalaxb
В их бедноватой документации нашел только пример с SOAP клиентом, а примеры сервера есть?

Oleg
27.06.2017
10:28:21
еще раз. то, что сабин назвал ньютайпом и есть самый настоящий тег. то, что выдает на выходе супертаггет - есть ТегированныйТип with Тег. и мне нет проблем выдать на выходе только Тег без теггированного типа. я и спрашиваю, как назвать метод дополнительно к @@ который будет делать все тоже самое, только на выходе выдаст ньютайп без основания и будет удовлетворять твоим представлениям о каноничности)
ещё раз. То, что сабин назвал ньютайпом не есть никакой тег, потому что в отличие от тега, он полностью модифицирует теганный тип, а не дополняет его typelevel информацией. Для того и другого он использовал одну и ту же технику, но семантика разная. Корова с тегом "Сколково" - это всё ещё корова. Ньютайп же технически это более эффективная замена конструктору с одним параметром

Google
Diemust
27.06.2017
10:28:36
а чем camel не нравится, вроде ж была связка akka+camel, правда не знаю, на скок актуальная

Oleg
27.06.2017
10:29:45
Так что если вы с Александром запилили либы с тегами, это ещё не значит, что всё, что людям нужно - это теги

Yuriy
27.06.2017
10:31:00
Всем привет!

Mikhail
27.06.2017
10:31:19
Так что если вы с Александром запилили либы с тегами, это ещё не значит, что всё, что людям нужно - это теги
я и не говорю такого. я же говорю - меня интероп впервую очередь интересовал. тебя интересует полное разделение - нет проблем. давай название метода и будет работать так как ты думаешь)

Митко Соловец?
27.06.2017
10:33:43
господа, кто-нибудь писал ИИ на скале?

Mikhail
27.06.2017
10:35:36
ты так процитировал, будто до моей реплики где-то это сказал
если взять, что тегированный тип T with Tag[T,U], T - основание. Tag[T,U] - сам тег, а также можно назвать как дополненная тайплевел инфо, то ньютайп как раз и есть тег(а также дополненной тайплевел инфо) без основание. просто я использовал слово "тег" исключительно для дополненной тайплевел части) я запилю, нет проблем - ты мне скажи, как лучше назвать метод дополнительно к @@ - потому что я пока теряюсь как будет лучше?

Yuriy
27.06.2017
10:36:07
Коллеги, тут есть спарководы? Странное дело - гоняю алгоритм поиска кратчайшего пути на графе: BSP/Pregel API graphX с исходным RDD в Cassandra. 4,5 миллиона ребер в графе. Кластер кассандры - 6 узлов. Кластер спарка - до 80 ядер. По всем показателям нагрузка очень низкая, но быстрее 22 секунд алгоритм еще ни разу не отработал. Куда копать?

Mikhail
27.06.2017
10:38:10
ну и есть нюанс. что сейчас TaggedType.apply - заточен на то, чтобы на выходе выдавать с основанием. можно добавить впринципе метод TaggedType.newtype - который как раз разделит

Mikhail
27.06.2017
10:39:15
но тогда придется все равно конечно писать Step.newtype(value) или Step newtype value . Oleg , норм?

Oleg
27.06.2017
10:40:36
если взять, что тегированный тип T with Tag[T,U], T - основание. Tag[T,U] - сам тег, а также можно назвать как дополненная тайплевел инфо, то ньютайп как раз и есть тег(а также дополненной тайплевел инфо) без основание. просто я использовал слово "тег" исключительно для дополненной тайплевел части) я запилю, нет проблем - ты мне скажи, как лучше назвать метод дополнительно к @@ - потому что я пока теряюсь как будет лучше?
короче, есть такая штука case class Foo(x: Int) extends AnyVal { ... foo ops... } т.к. AnyVal работает через раз, хотелось бы сделать drop-in replacement, чтобы implicit class FooOps(x: Int) extends AnyVal{ ... foo ops ... } type Foo = Newtype[Foo, FooOps] def Foo(x: Int): Foo = Newtype(x) вот если кода здесь будет ещё меньше - будет ещё лучше но главное, чтобы у Foo были FooOps волшебным образом

Митко Соловец?
27.06.2017
10:41:10
ИИ ?
искусственный интеллект

Alexey
27.06.2017
10:41:13
Oleksandr
27.06.2017
10:42:48
искусственный интеллект
ну я намекнул, что это очень обширное понятие что конкретно интересует? я баловался nlp с stanfordnlp / factorie

Митко Соловец?
27.06.2017
10:43:10
Google
Oleksandr
27.06.2017
10:43:35
конкретно, нейронные сети и распознование образов, например
что-то есть, но, честно говоря, лучше двигать сразу в питон

KrivdaTheTriewe
27.06.2017
10:47:03
Господа, я вот никак не могу понять, у меня была некоторая акторсистема , там была цепочка вызовов Actor1->Actor2->Actor3->Actor1 , теперь потребовалось прикрутить хттп , как теперь избежать переписывание этой цепочки вызовов в цепочку асков, чтобы можно было сделать телл из реквестхендлера, и получить ( или не получить ответ ) от актор системы?

Vladimir
27.06.2017
10:49:41
аск будет только между requesthandlerом и actor1, кмк

Alexey
27.06.2017
10:50:11
можно сохранить request context в акторе и завершать, когда приходит ответ

или падать по таймауту

KrivdaTheTriewe
27.06.2017
10:56:10
аск будет только между requesthandlerом и actor1, кмк
ну так я делаю допустим АСК первому актору, актору посылает сообщения , и ему в мейлблкс когда то должен прийти ответ

но пока я выполняю АСК я даже проверить не могу это

Vadim
27.06.2017
11:01:45
тут forward должен подойти

KrivdaTheTriewe
27.06.2017
11:02:54
не совсем понимаю

Vadim
27.06.2017
11:05:55
ну вот твоя цепочка a1 -> a2 -> a3, когда сообщение приходит a1 он его форвардит в следующий прост и так дальше - последней отвечает сендеру - и у него будет сендер там где изначально ask дернули

KrivdaTheTriewe
27.06.2017
11:14:57
actorref.tell(msg,replyTo) на msg forrward actorref заменить - это получим тоже самое. Но я не могу сделать Actor1 ? GetUserInfo из http , потому что этот UserInfo придёт как tell из последнего по цепочке актора( что изменит состояние Actor1 и тогда он будет знать , что ответить), а в рамках первого аска внутреннее состояние Actor1 не изменится ( так как он обрабатывает только одно сообщение за раз)

Mikhail
27.06.2017
11:16:17
очевидно, что провернуть такое же с тегом не получится, т.к. у функции, которая завраплена есть свой apply
вот теперь я понял, зачем именно тебе разделение) чтобы иметь возможность заоверрайдить имеющиеся операции в основании. мы конечно теряем все операции, но возможно иногда действительно можно получить больше профита чем потери. не могу сказать, что я бы сделал именно так, может быть я просто поменял бы схему и получил бы тот же профит без потерь операций. возможно синтаксис у дигитс был бы другим. как знать. но я таки сейчас добавлю ньютайпы в супертаггет.

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

Bulbu
27.06.2017
11:39:07
Всем привет! Есть интересная проблема: нужно long разбить на x непересекающихся подмножеств

Bulbu
27.06.2017
11:40:03
чтобы для каждого этого подмножества можно было сделать циклический инкремент

да

Google
Bulbu
27.06.2017
11:40:28
написал не совсем понятно, наверное...

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

чтобы по айди однозначно актера найти

Oleg
27.06.2017
11:41:48
битовые маски?

Bulbu
27.06.2017
11:41:55
типа того

Oleg
27.06.2017
11:42:04
а в чём задача?

Bulbu
27.06.2017
11:42:24
как это сделать)

Oleg
27.06.2017
11:42:39
сделать а-ля DHT?

Bulbu
27.06.2017
11:42:53
нужно типа лямбду каждому актеру дать правилбную

Admin
ERROR: S client not available

Bulbu
27.06.2017
11:43:13
наверное

ты про бизнес задачу? Это мапинг реквест-респонс

т.е. у меня есть параметр - кол-во актеров, с этим параметром мне нужно сделать интервалы

просто взять и поделить арифметически может?

Diemust
27.06.2017
11:47:57
юзай snowflake не думай об интервалах

у тебя ж задача сделать числа уникальными только?

Denis
27.06.2017
11:48:23
распределить по кольцу

Bulbu
27.06.2017
11:48:44
уникальные для каждого актера лонги(!)

Denis
27.06.2017
11:48:49
https://www.hakkalabs.co/articles/how-cassandra-stores-data

Bulbu
27.06.2017
11:49:16
актеры их генерят

Google
Oleg
27.06.2017
11:49:34
ну раздавай в качестве параметра актору Int, и генерь внутри Int, def key(actorIdx: Int, intKey: Int) = (actorIdx : Long) << 32 + intKey def route(message: Message) = actors((message.key >> 32).asInstanceOf[Int]) ! message

Diemust
27.06.2017
11:50:50
имхо, почему бы не рассмотреть, что лонги будет генерить тот, кто раздает таски этим акторам? а по акторам балансить с помощью хэша. Или что актор сам генерит айдишник - это жесткий констреинт?

Bulbu
27.06.2017
11:52:03
хммм

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

спасибо!

Denis
27.06.2017
11:53:15
UUID#hashCode % numActors

Bulbu
27.06.2017
11:54:30
UUID#hashCode % numActors
с таким айди как я пойму какой актер его создал?

A
27.06.2017
12:09:38
У тебя в любом случае будет хеш, по которому никак не восстановить ид актора

Если только "рядом" не будешь хранить дом инфу

UUID#hashCode % numActors
Это, наверно, на разных платформах может выдать разное

Я бы взял мурмур-хеш ?

Oleg
27.06.2017
12:15:00
UUID#hashCode % numActors
ну тогда надо хотя бы consistent hashing

Valeriy
27.06.2017
14:57:29
Подскажите, кто проходил специализацию по scala на coursera, стоит ли проходить ее всю? Пока закончил первый курс Functional Programming Principles in Scala, понравилось. Из остальных курсов не все читает Одерски, стоит ли за них платить ?

Ivan
27.06.2017
14:57:54
Коллеги, делаю примерно вот так: object Foo { implicit val fooWrites = Json.writes[Foo] implicit val eitherWrites: Writes[Either[X, Y]] = new Writes[Either[X, Y]] { ... } } case class Foo (bar: Either[X, Y]) И получаю ошибку компиляции: Reference to uninitialized value eitherWrites Если переставляю порядок имплиситов - компилится. Собственно вопрос, где можно почитать о порядке инициализации имплиситов, и вообще нормальное ли это поведение?

Alexey
27.06.2017
15:06:39
lazy val и всё будет ок

он определён просто ниже и всё

Ivan
27.06.2017
15:08:15
Это понятно. Мне интересно понять почему оно так работает.

Alexey
27.06.2017
15:10:46
ну воспринимай это как конструктор, ты еще не инициализировал ссылку eitherWrites и пытаешься её уже захватить в fooWrites, вот тебе и ошибка

я честно даже несколько удивлен, что компилятор это определил :)

Friedrich
27.06.2017
15:14:38
Это и для не имплиситов работает так же.

Но компилятор тут молодец, конечно.

Ivan
27.06.2017
15:15:24
А для чего еще работает? В каких случаях это спасает?

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