@scala_ru

Страница 1366 из 1499
Luger
24.03.2018
19:39:03
Wystan
24.03.2018
19:39:18
Я смотрю в сторону чего-то типа BidiFlow.fromFunctions

Google
Luger
24.03.2018
19:39:44
Да
Вот я делал на Source.queue

как Олег выше написал

но я думал, что я херню сделал и можно красивее :(

Александр
24.03.2018
19:40:21
так это работать не будет, но самый просто вариант - Source.actorRef или Source.queue
функция шлет msg в акктор который являеться сорсом?

Oleg
24.03.2018
19:40:35
Luger
24.03.2018
19:40:43
функция шлет msg в акктор который являеться сорсом?
ага. или в актор или в очередь, а очередь мерджить потом

Wystan
24.03.2018
19:41:21
То есть надо делать промежуточный актор чисто для того, чтобы слать туда сообщения, а он слал их в stream?

Oleg
24.03.2018
19:41:46
У вашей ИДЕ сублаймит

отнесите её к ветеринару

нет, это не ивент сорсинг, спасибо

Wystan
24.03.2018
19:43:28
Я в процессе.

Google
Oleg
24.03.2018
19:43:33
Или просто начал хреначить, предполагая, что ты и так всё знаешь про стримы?

Source - это не поток, это не процесс, который течёт

Это Граф

с одним выходом

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

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

Source.actorRef - это граф, который при материализации может запустить для тебя актор и дать тебе ссылку на него. Внутри будет буфер, контроль бэкпрешшура и всё остальное, чтобы связаться с остальной частью материализованного стрима

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

M
24.03.2018
19:48:08
можно руками етот самый актор публишер написать как тебе удобней

Александр
24.03.2018
19:48:09
M
24.03.2018
19:48:11
если есть нужда

Wystan
24.03.2018
19:48:20
Source.actorRef - таки понял.

Oleg
24.03.2018
19:48:56
Главное, что нужно понять, что ты не должен брать вот какой-то свой горящий процесс и трансформировать его в Source, потому что Source предположительно что-то многоразовое

Ты можешь писать такой у[REDACTED для админов]ский код только если ты разработчик akka-http или StreamRef. Все эти исключения ярчайший показатель отвратительного дизайна сабжа и однажды наконец будут переписаны, я надеюсь

Wystan
24.03.2018
19:51:18
В принципе, да, понял. Но с этим акторрефом у меня тогда следующий вопрос.

Допустим, я на каждого пользователя создаю ActorRef, Stream храню их в мапе. А потом если что-то происходит, там есть какой-то onComplete( => удалить из мапы; отослать PoisonPill актору) ?

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

M
24.03.2018
19:53:51
actorRef ! Status.Success("Done")

Wystan
24.03.2018
19:55:07
то есть удаляю из мапы, отправляю PoisonPill и никакой утечки не будет.

Google
Wystan
24.03.2018
19:55:13
Спасибо, все понял!

Oleg
24.03.2018
19:55:14
M
24.03.2018
19:55:21
у меня чет не взлетело

я проверял

))

https://github.com/akka/akka/issues/20421

Oleg
24.03.2018
19:55:46
Говоря про стримы, не стоит быть уверенным, что у тебя не будет утечки

Wystan
24.03.2018
19:59:08
А есть какие-то метрики из коробки, чтобы быть уверенным? Типа как когда создаешь/убиваешь акторы, можно вручную счетчики увеличивать/уменьшать на onCreate onTerminate или как там эти методы называют

Kirill
24.03.2018
19:59:22
можно руками етот самый актор публишер написать как тебе удобней
оно депрекейтед и очень не рекомендуется так делать, много заморочек.

Wystan
24.03.2018
20:03:51
Хочешь быть уверенным - купи DLC

Wystan
24.03.2018
20:04:47
моних попробую в другом пет-проджекте, спасибо за любезное предложение

Nick
24.03.2018
20:06:39
M
24.03.2018
20:06:54
https://youtu.be/qaiwalDyayA

хочешь быть уверен отнеси данные в руках на бумажке %(

Oleg
24.03.2018
20:07:23
юзай cats-effect )
вместе с монихом

в эффектах стримов нет

а ФС2 - пулл, всё равно толкатели ручками писать

Александр
24.03.2018
20:09:31
Google
Oleg
24.03.2018
20:09:39
Monix utterly destroys both fs2 and scalaz-stream on anything that isn't super hilariously heavily chunked, at which point fs2 can edge out an advantage. And by "utterly destroys" I mean "1500x faster". Literally. djspiewak

https://github.com/functional-streams-for-scala/fs2/issues/768

Поэтому пока Румын лично не придёт переделывать фс2, нечего даже смотреть на них

Или лысый....

M
24.03.2018
20:14:33
лысый из бразерс

Admin
ERROR: S client not available

Wystan
24.03.2018
20:15:28
нет, это не ивент сорсинг, спасибо
А можно еще раз тот deleted пример?

M
24.03.2018
20:21:27
http://loicdescotte.github.io/posts/play-akka-streams-twitter/

Alex
24.03.2018
20:46:33
https://github.com/functional-streams-for-scala/fs2/issues/768
вроде за полтора года получше там стало

Daniel
25.03.2018
07:17:38
https://github.com/pheymann/typedapi

Oleg
25.03.2018
07:18:07
бросали

надо быстрее со своим разобраться, пока сюда люди не понаехали

ну и пока он безвреден, пока не умеет сваггер

Nick
25.03.2018
07:30:20
ну и пока он безвреден, пока не умеет сваггер
А зачем всем так нужен сваггер

Oleg
25.03.2018
07:30:50
А зачем всем так нужен сваггер
потому что без сваггера и на чистой akka-http выходит

ну т.е. самая первая цель, которую атакуют все эти typelevel DSL - расширяемая интроспекция.

Т.е. без синтаксиса в типах у тебя выбор приблизительно такой. a) Monoidal, i.e. Applicative-like F[A] х F[B] -> F[A х B] хорошо поддаётся анализу структуры, хорошо выражается параллельность, и легко написать ДСЛ но ты не можешь, например, пользоваться эффектом из A, чтобы вычислить B. Значит автоматически отметаешь все монадически ништяки эффектов б) Monoidal-Categorial, i.e. Arrow-like (A -#> B, B -#> C) -> (A -#> C) (A -#> B, C -#> D) -> ((A х C) -#> (B х D) хорошо поддаётся анализу структуры, и ты можешь чейнить эффекты, контролировать паралллельность и т.п., но ДСЛ написать для такого - просто ппц. даже в хашкеле так себе это всё выглядит в) Monadic, i.e F[F[A]] -> F[A] или (F[A], A -> F[B]) -> F[B] всё отлично чейнится, с помощью прибамбасов, можешь как-то выразить параллельность, но т.к. для того, чтобы получить "продолжение своей структуры" после A тебе нужно засунуть реальное значение в свою функцию, поэтому ты не можешь естественным способом изучить целиком структуру, не запустив На тайплевеле ты можешь описать в какой-то специальной форме весь свой синтакцис, и по желанию скомпилировать в любую из таких форм. Поэтому если тебе не нужно выяснять "а какой параметр будет читать этот метод, после того, как прочитает вот этот, и что он в итоге возвращает" до, собственно запуска своего рута ты можешь удовлетвориться Monadic DSL для akka-http, а основная мотивация выяснить такое в отношении ДСЛ для хттп - выдать схему всех твоих запросов. Например, сваггер

Alex
25.03.2018
08:59:22
ребят вопрос возможно немного не в ту группу

никто не сталкивался с такой проблемой на айфоне: когда открывается менюшка выбора фотографий останавливается вебсокет

то есть когда чувак открывает на каком-либо сайте галерею (например для загрузки фото/файлов) на сайт, то вебсокет останавливается

Google
Alex
25.03.2018
09:01:16
и перестает слать какие-либо сообщения

точнее даже вообще вся сеть останавливается

такой отстой

Grigory
25.03.2018
09:19:25
а я так понимаю что у тебя сафари в бекграунд типа уходит?

а понял; да баг какойнить

Небось и правда по тайм-ауту отваливается

Но вроде так все браузеры даже на десктопе себя ведут, эксперты типа @fomkin могут лучше сориентировать

Alex
25.03.2018
09:29:14
да походу с этим ничего не сделать

я пробовал обычные http запросы слать тоже самое

на десктопе норм

Oleg
25.03.2018
10:06:06
ну а пока здесь обсуждают айфоны, пойду обсужу скалу в ПОНВ

Daniel
25.03.2018
10:15:55
Robert
25.03.2018
10:20:35
скаланы, подскажите в чем дело, хочу сделать функтор для псевдонима типа и компилятор говорит что имплисита для Step нет, это нормально? =) type CorrectResponse[T] = Either[Error, T] type Step[T] = Future[CorrectResponse[T]] Functor[Step].map(response)(adults)

если написать вот так то заводится: implicit def stepFunctor = new Functor[Step]{ override def map[A, B](fa: Step[A])(f: A => B) = Functor[Future].compose[CorrectResponse].map(fa)(f) }

импорты лдя инстансов either и future есть

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