
Nikita
06.06.2016
11:42:40
стримы конечно
eventbus он без backpressure
но проблема в том что оба они локальные

Viacheslav
06.06.2016
11:43:38
pub/sub ?

Google

Nikita
06.06.2016
11:43:38
если будет несколько инстансов - то кафка то что нужно

Viacheslav
06.06.2016
11:44:12
*akka publish subscribe я имею ввиду

Vladimir
06.06.2016
11:45:51
eventbus он без backpressure
теоретически backpressure на основе AtLeastOnceDelivery в AkkaPersistence не получится реализовать впоследствие для EventBusа?

Igor
06.06.2016
11:47:38
А что между ними общего?

Vladimir
06.06.2016
11:55:28

Viacheslav
06.06.2016
11:58:11
тогда почему бы не взять кафку/раббит и не заморачиваться на создании своего велика?

Alexandr
06.06.2016
12:01:25
Зачем rabbit, если есть akka event streams + akka persisnense?

Denis
06.06.2016
12:03:43
Кролик имеет смысл, если у вас не монолит, и некоторые части не скала/джава

Alexandr
06.06.2016
12:04:29
У нас не нужно слать уведомления об ивентах в другие микросервисы

Vladimir
06.06.2016
12:06:27

Nikita
06.06.2016
12:21:32
кстати, народ, кто крутит пенсистенс в проде?
как решаете проблему со сплит-брейнами?

Denis
06.06.2016
12:42:38
Исходники split brain resolver есть в сети

Google

Nikita
06.06.2016
12:43:53
а легально их использовать можно?

Denis
06.06.2016
12:44:42
Вдохновиться можно

Nikita
06.06.2016
12:46:34
да документации с головой хватить для вдохновения :)

Denis
06.06.2016
17:48:50
"...у которых в жизни есть вещи важнее, чем разбираться в системе типов Scala" охлол
конечно, важнные вещи типа дебага stringly typed кода

Alex
06.06.2016
22:14:52
некогда думать, трясти надо

Nikolay
06.06.2016
22:24:34
Ну список претензий вполне стандартный, забыл только про медленную компиляцию сказать

Bulbu
07.06.2016
06:42:52
а как в идее обернуть выражение в Some?
есть live template какой-то?
по типу: "foo".sout + Tab => println("foo")

Slavik
07.06.2016
07:33:26
"foo".op + Tab => Option("foo")

Aleksei
07.06.2016
07:36:02
ого
надо посмотреть на такие плюшки =)

Bulbu
07.06.2016
08:01:22
не работает у меня
может вы сами добавили это?

Viacheslav
07.06.2016
08:11:21
File->settings->editor->live template->scala можно лицезреть все темплейты (или добавить). Idea eap 2016.2 есть opt - делает паттерн матчинг для Option

Andrey
07.06.2016
22:11:01
рекурсивно добавил сам себя в чат

Ivan
07.06.2016
22:11:42
Номер телефона сменил)

Ivan
08.06.2016
05:24:48
можно же в аккаунте изменить номер

Ivan
08.06.2016
05:26:08
Он заблокирован сейчас. Доступ только из веб приложения есть. А в веб приложении нельзя.

Google

Vladimir
08.06.2016
14:25:34
Есть ли легкий способ patter matchить по типу класса? что-то вроде подобного юзкейса
def caseClassFactory[T <: SomeTrait](c: Class[T]) = c match

Nikita
08.06.2016
14:26:23
да, classtag нужен

Vladimir
08.06.2016
14:27:12

Nikolay
08.06.2016
14:55:24
https://gist.github.com/jkpl/5279ee05cca8cc1ec452fc26ace5b68b
ссылку на саму статью найти не могу, поэтому гист

Daniel
08.06.2016
14:56:27
http://www.cakesolutions.net/teamblogs/ways-to-pattern-match-generic-types-in-scala?utm_campaign=Technical%20Blogs&utm_content=35197950&utm_medium=social&utm_source=linkedin

Nikolay
08.06.2016
14:57:37
там вариант с shapeless описан, и с тайп тегами

Vladimir
08.06.2016
14:58:07
спасибо, прокурю

Nikolay
08.06.2016
15:03:13

Vladimir
08.06.2016
15:06:30
пример в пару строк не гуглится, т.е. что-то околоэзотеричное

Daniel
08.06.2016
15:07:35
там нет эзотерики, небольшой чит, который бывает полезен

Vyatcheslav
08.06.2016
15:10:03
с класстегами нормально работает. никакой эзотерики :)

Nikolay
08.06.2016
15:10:40
http://eax.me/scala-typetags/ - тут коротко и на примере
http://docs.scala-lang.org/overviews/reflection/typetags-manifests.html - тут не сильно практично, но с пояснениями
и та статья что выше была - хорошо объясняет, мне кажется

Daniel
08.06.2016
17:22:29
Всем привет. Кто-нибудь при работе с CORS в akka-http использовал https://github.com/lomigmegard/akka-http-cors? Не очень понимаю, почему выходит ошибка "No 'Access-Control-Allow-Origin' header is present on the requested resource" в:
val routes: Route = ...
post {
entity(as[User]) { user =>
userService.createUser(user)
complete(StatusCodes.OK)
}
}
Хотя если просто complete(StatusCodes.OK) без entity(as[User]), то все ок. Кто-нибудь сталкивался с подобным? Спасибо!

Wystan
08.06.2016
17:29:18
кстати почему не handleWith {user: User => userService.createUser(user).mapTo[StatusCode]} Не всегда же создание успешно.

Daniel
08.06.2016
17:30:08
Ответ простой, я еще совсем школоло с akka-http :/

Dmitry
09.06.2016
07:59:00
handleWith {user: User => userService.createUser(user).mapTo[StatusCode]}
Количество слов user зашкаливает в этой строке)

Юрий
09.06.2016
07:59:34
ехал юзер через юзер

Wystan
09.06.2016
08:00:40
Нормально все.

Google

Viacheslav
09.06.2016
08:02:58
>>Don't repeat names that are already encapsulated in package or object name
Prefer:
object User {
def get(id: Int): Option[User]
}to
object User {
def getUser(id: Int): Option[User]
}They are redundant in use: User.getUser provides no more information than User.get.

Wystan
09.06.2016
08:04:57
ну userService.create() - одно слово только можно убрать
можно повозмущать если можно было бы написать handleWIth(userService.create(_ : User).mapTo[StatusCode]) - но так вроде нельзя
буквоеды :)

Andrey
09.06.2016
08:06:11
user.create(user) ?

Dmitry
09.06.2016
08:06:46
(user: UserService).createUser(user: User).mapTo[User]
имплицитно приводить пользователя к сервису, чтобы кейс-класс юзера не портить

Aleksei
09.06.2016
08:07:14
и всё это внутри UserHandler
чтобы больше ада

Dmitry
09.06.2016
08:07:57
val userRoutes: Routes = pathPrefix("users")

Viacheslav
09.06.2016
08:10:11
по идее как-то так было бы красиво
userService.createFrom(userHandler).mapTo[StatusCode]

Lev
09.06.2016
08:11:00
Вообще, там напрашивается u для имени аргумента, при однострочном-то скоупе
Тогда и рябить в глазах перестанет

Denis
09.06.2016
12:00:08
Привет! Ну теперь могу сказать, что ищем спеца в компанию Эвотор, которую вчера презентовали Греф с Романенко.
Что нужно знать и понимать:
1. Функциональные и ООП абстракции и паттерны
2. Особенности разработки и эксплуатации распределенных систем
3. Хотя бы один HTTP фреймворк, akka-http, finagle, play, http4s
4. Akka (sharding, persistence)
5. Как работать с потоками данных (akka-stream, fs2, monix, etc) 6. SQL
Плюсом будет:
1. Опыт/понимание CQRS/ES систем
2. Cats/scalaz (Xor, Validation и т.п.)
3. Shapeless
4. Опыт работы с Kafka
5. Опыт работы с Cassandra 6. Опыт работы с Postgres
https://vc.ru/n/sber-qiwi

Aleksei
09.06.2016
12:00:51
крутяк

Denis
09.06.2016
12:02:11
Если интересно пообщаться - офис на парке культуры, недалеко от яндекса, пишите в личку, обговорим время

Nikita
09.06.2016
12:48:59
где вы раньше были :)

Denis
09.06.2016
13:00:07
Я писал недели 2 назад ) но никто не заинтересовался
без имен и новостей (нельзя было)

Google

Nikita
09.06.2016
13:00:50
раньше = несколько месяцев назад :)

Vladimir
09.06.2016
13:51:28
Насколько хороша практика возвращать и чейнить Future[Unit] (учитывая, что map и flatMap над ними легко спутать), есть какие-то варианты?

?Ivan
09.06.2016
13:52:58
используй for comprehension

Daniel
09.06.2016
13:54:56
-Ywarn-value-discard

Sergey Tolmachev
09.06.2016
14:01:53
я для этого писал inspection в скала плагине, только он выключен по-умолчанию
Nested stateful monads
This inspection reports nested stateful monads which may lead to architectural errors.

Vladimir
09.06.2016
14:03:26
опция компилятора выглядит заманчиво, спасибо

Sergey Tolmachev
09.06.2016
14:03:59
если будет Future[Future[Unit]] или там Try[Option[_]], то идея подсветит. только не все этого хотят

Daniel
09.06.2016
14:05:55
Опыт показывает, что обычно кастование в юнит возникает по явной ошибке в коде или по ошибке структуры приложения. Имхо, лучше всегда включать проверку.
жить можно и без, но так спокойней, меньше неявного

Sergey Tolmachev
09.06.2016
14:06:38
а что должна содержать Future, которая ничего не возвращает?

Pavel
09.06.2016
14:07:31
а в чём собственно потенциальная проблема Future[Unit] ?

Vladimir
09.06.2016
14:07:45

Daniel
09.06.2016
14:07:50
я не про то что Future[Unit] плохо

Sergey Tolmachev
09.06.2016
14:07:57
аа
я думал про это

Daniel
09.06.2016
14:08:54
когда приходит некое значение туда где ждут Unit, то это и есть грабли присыпанные листвой

Pavel
09.06.2016
14:13:12
не могу придумать случая, когда это Future[Unit] приведёт к проблеме. Может кто-нибудь пример привести?