
Nick
18.12.2016
21:03:29
Сегодня, я писал для скалы, поэтому нах

Oleksandr
18.12.2016
21:11:30

Nick
18.12.2016
22:06:08
Да не, профит может и есть, учитывая что jit скорее всего заинлаинит довольно легко это)

Oleksandr
18.12.2016
22:15:35
интересно бы глянуть на jmh тесты на эту тему
я вот не уверен, что все так радужно будет

Google

Evgeniy
19.12.2016
03:40:47

Aleksei
19.12.2016
04:18:06

Evgeniy
19.12.2016
04:36:39
видимо имелось в виду попробовать самому реализовать

Aleksei
19.12.2016
04:37:10
а ну это и понятно

Evgeniy
19.12.2016
04:46:38
вот тут есть нечто похожее на простую реализацию https://gist.github.com/jdegoes/97459c0045f373f4eaf126998d8f65dc#free-monad
но я не компилил, возможно там чего то не хватает

Aleksei
19.12.2016
04:51:04
проще некуда!

Evgeniy
19.12.2016
04:53:41
ну в катс и скалази - явно сложнее https://github.com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Free.scala

Aleksei
19.12.2016
04:54:09
да просто везде вот это поинт бинд и лифт
поинт это вроде пюр да?
но отсюда вопрос

Evgeniy
19.12.2016
04:54:54
да point, pure, id все одно и тоже

Aleksei
19.12.2016
04:55:10
немного конфьюзит
каждый раз читаешь и новый набор терминов

Google

Evgeniy
19.12.2016
04:56:30
Lifting
Often, for some value X, F[X] is referred to as the "lifted" version of X, because it is the same value, but placed "inside" of some functor F. For example, you can lift the function x => x * x inside List by writing List(x => x * x).

Aleksei
19.12.2016
05:06:54
выходит что Point это значение, Effect операция над значением и FlatMap это чеининг операций?

Evgeniy
19.12.2016
05:47:57
хм щас не уверен но возможно, что не совсем так может там что то типа Effect(F(Effect(F(Effect ... (Pure(a)))))
типа эффект он применяет F к предыдущему Free и создает в результате новый
(мое предположение верно если Effect == Suspend из катс)

Oleg
19.12.2016
06:12:59

Aleksei
19.12.2016
06:13:49
Ну если юнит и флэтмэп, значит эффект это мэп

Oleg
19.12.2016
06:14:59

Aleksei
19.12.2016
06:15:53
Надо теперь придумать где это все в рабочий проект ввинтить ?

Oleg
19.12.2016
06:18:10
map фримонада не реализует, она требует функтора от первого параметра. Если нужно отрезать или фьюзить map, как вчера говорилось, ещё одним слоем используют Coyoneda

Alexey
19.12.2016
06:19:07
была уже ссылка тут

Oleg
19.12.2016
06:21:22

Aleksei
19.12.2016
06:26:30
или найти работу где это уже применяется как вариант )
вообще для развития фп навыков я так понимаю надо читать Де Госа и Рунара?
ну и слушать мешугу
я пока начал с прослушивания мешуги
вот добрался до Де Гоеса =)

Oleg
19.12.2016
06:40:22

Aleksei
19.12.2016
06:41:40

Andrey
19.12.2016
06:42:58
... или
Kleisli[Free[Mpose[...]]]

Google

Nick
19.12.2016
08:17:04
Жесть какая)
Попахивает конечно адски

Anatoliy
19.12.2016
08:40:51
Всем привет!
Народ, а можно как-то при общении через вебсокет узнать с какой страницы пришел запрос?)

Юрий
19.12.2016
08:41:46

Anatoliy
19.12.2016
08:42:18
Каким образом? Мне надо обращаться на что-то вроде ws://example/ws?path=... так что ли?
Просто это вообще нормально или не очень?

Юрий
19.12.2016
08:42:46
в тело запроса добавляй, вместо с полезной нагрузкой

Alexandr
19.12.2016
08:43:06
А в чем проблема то добавить это в json?

Anatoliy
19.12.2016
08:43:12
Не понимаю. Т.е. уже после установки соединения?
Я цепляю актор на каждый WS, но при подключении я не вижу откуда оно пришло
Сразу после установки соединения - я могу это сделать. Я же хочу создать актор который бы сразу работал с нужной страницей и знал об этом

Alexandr
19.12.2016
08:44:25
Но js, который отправляет запрос, знает, с аакой страницы он отправляется

Anatoliy
19.12.2016
08:44:48

Alexandr
19.12.2016
08:45:20

Anatoliy
19.12.2016
08:45:44
откуда берется json?

Andrey
19.12.2016
08:45:53
что-то идея выглядит нездоровой
зачем бэку знать такие подробности о ui?

Alexandr
19.12.2016
08:46:43

Anatoliy
19.12.2016
08:48:04
После установки соединения я общаюсь используя json, это верно. Но блин мне надо создать актор который бы сразу знал какой странице он соответствует. Что бы если надо было уведомить пользователя он сам уже принимал решение надо отправлять конкрентно ему уведомление или нет.
Т.е. у каждого пользователя может быть открыто несколько страниц. И мне надо вывести уведомление только на одной из них. При этом есть актор пользователя, а есть - браузера. У пользователя может быть дофига и больше браузерных акторов.
Я отправляю данные актору пользователя, а он - актору браузера, и уже там принимается решение что именно должно уйти в сам браузер, и должно ли
Как-то так я пока это вижу

Google

Anatoliy
19.12.2016
08:48:23
т.е. актор браузера по сути является шлюзом, и не более. Он просто пересылает то что ему отправляют. Но что бы знать что ему отправлять надо знать какой странице он соответствует

Юрий
19.12.2016
08:49:48
У тебя клиент - это single page application?

Anatoliy
19.12.2016
08:49:57
Нет

Юрий
19.12.2016
08:49:57
или у тебя на каждую страницу перезагрузка всего?

Anatoliy
19.12.2016
08:50:16
перезагрузка всего

Aleksey
19.12.2016
08:50:50


Юрий
19.12.2016
08:50:52
перезагрузка всего
ну тогда нормально при установке соединений отправлять эту инфу один раз. Ну или как ты предложил, добавить через query parameter (хотя выглядит слегка странно это конечно)

Admin
ERROR: S client not available

Anatoliy
19.12.2016
08:52:51
И соответственно я просто не понимаю как в плее сказать что вебсокет может приниматься откуда угодно....

Aleksey
19.12.2016
08:53:23

Anatoliy
19.12.2016
08:53:59
Не, у меня же play слушает вебсокет только на /ws, как ему сказать что бы слушал везде?

Nikita
19.12.2016
08:54:48
Могу ошибиться, но я бы попробывал /ws/*

Юрий
19.12.2016
08:55:16
GET /ololo/:trololo controllers.Ololo.get(trololo: String)

Anatoliy
19.12.2016
08:55:18

Юрий
19.12.2016
08:55:19
тип того

Anatoliy
19.12.2016
08:55:30

Юрий
19.12.2016
08:55:34
можно и так и так

Google

Anatoliy
19.12.2016
08:56:06
аналогичен тому что предлагал я, просто было предложение обращаться по WS прямо по адресу открываемой страницы, и как делать это - я не понимаю пока....

Юрий
19.12.2016
08:58:52
ну выше же написали, ты можешь по любому урлу обращаться. Главное чтобы сервер это умел
а построение урлов в плее есть в доке

Nick
19.12.2016
09:59:25

Max
19.12.2016
10:06:24
Всем привет вопрос по protocol buffer
Есть ли библиотеки помимо этих?
https://github.com/scalapb/ScalaPB
https://github.com/sbt/sbt-protobuf
Они пишут прямо исходники скалы в определенные файлы - я так понял что это вообще общая идея протобафа - нагенерить кода который будет педалить байтовый протокол - как бы максимально быстро
а почему в скале это реализовано как и в остальных языках - почему не реализовать через макросы или лучше просто генерацию .proto файлов?

Grigory
19.12.2016
10:08:18
генерация классов в любом случае по схеме; какая разница как классы генериться по схеме будут? это как-то на сокрости сгенерированного протокола отразится?

Max
19.12.2016
10:09:55
схема ввиде кода на скале помоему гораздо более управляема
я хочу сам писать кейс классы - ну как это сделано во всех json библиотеках
ну да ладно - я не ратую за такой вариант - генерят классы мне из .proto пусть генерят
я просто уперся в то, что я не могу повторно перегенировать классы - я наверняка криворукий - получаю ошибку ... is already defined as object...
я вытащил .proto в отдельный сбт подпроект и собираю там

Denis
19.12.2016
10:31:38
Схема первичней твоих кейс классов, так как именно она шарится

Max
19.12.2016
10:32:44
ок

Alexey
19.12.2016
10:54:41
Други, а какие http либы поддерживают routing dsl с возможностью из него сгенерить swagger/raml описание?


Anatoliy
19.12.2016
11:14:10
Народ, помогите разобраться пожалуйста что не так. Создаю при подключении к WS актор завязанный на него. Опять же при этом подключении получаю куки, по кукам проверяю существует ли уже активный актор пользователя с такими куками. Если нет - создаю. Потом создаю уже актор связанный с WS(актор браузера) и даю ему при создании ссылку на актора пользователя которому он принадлежит.
в preStart актора браузера пишу что бы он уведомил актора пользователя о своем существовании. Актор пользователя эту инфу получает.
Но - при попытке отправить уже инфу о существовании актора браузера(что-бы соединение с WS установилось) - идет таймаут, причем всегда.... не понимаю в чем ошибка...
Вот тут падает судя по всему, на строке sender():
userActor.map { userAc =>
val child: ActorRef = injectedChild(browserFactory(sessionName, out, userAc, rh, path), s"browserActor-$id")
browsers = browsers + child
log.debug(s"Получили акторы пользователя: $userAc и браузера: $child")
sender() ! child
}


Юрий
19.12.2016
11:16:46
Мне кажется, ты пытаешься обратиться к sender внутри асинхронной операции. Так нельзя. Читай про pipeTo

Anatoliy
19.12.2016
11:17:23
Эм.. вам не кажется, пошел читать, спасибо
Эм... но ведь есть обращения в футурах...

Mikhail
19.12.2016
11:19:47

Юрий
19.12.2016
11:20:17

Mikhail
19.12.2016
11:20:39
userActor.map - порнография какая-то)

Anatoliy
19.12.2016
11:22:38
https://gist.github.com/Visteras/6c217b22374600ce4606b981666f438a
Пытался просто получить актор, и соответственно его сгенерить если не выходит...

Aleksei
19.12.2016
11:23:46
у нас тут что то типа правила кидать код ссылками на ресурсы где его читаемость чуть чуть повыше чем в телеграмме =)