
Daniel
19.09.2017
12:47:17

Андрей
19.09.2017
12:47:26
/toxic
/toxic

Евгений
19.09.2017
12:47:38
/toxic

Google

Евгений
19.09.2017
12:47:59
/verytoxic

Kirill
19.09.2017
12:48:07
чё сразу токсик-то

Andry
19.09.2017
12:48:33

Alexander
19.09.2017
13:01:55
/toxic

Kirill
19.09.2017
13:04:15
да не умеет бот еще это делать, Даниил же говорил вроде

folex
19.09.2017
13:04:45
я думаю все просто тыкают на команду, и она постится. Сомнительное UX решение канеш.
/toxic
/shrug

Denis
19.09.2017
13:11:53
В Италии что-то знают :)

Aleksei
19.09.2017
13:12:38
что то? мне кажется вполне конкретное знают, например, итальянский язык =)

Henadz
19.09.2017
13:13:44
туалет типа Лестница

Google

Denis
19.09.2017
13:14:02
Why so serious? )

Nikita
19.09.2017
13:15:31
в Германии у меня был точно такой же!

Mikhail
19.09.2017
13:32:30
это не в котлин ресторане?

Oleg
19.09.2017
14:04:00
коресторан
Reactive Sink implementation for scala

Ramon
19.09.2017
14:12:44
/toxic

Daniel
19.09.2017
14:29:14
походу надо хоть что-то привинтить на /toxic
слишком популярный запрос))

Grigory
19.09.2017
14:30:34
бота который будет ссылку на аккумонгу отправлять по этой команде

Kirill
19.09.2017
14:31:09
бота, который будет меншн Олега делать

Nikolay
19.09.2017
14:42:19
гифку с бритни

Luger
19.09.2017
14:44:52

Vyatcheslav
19.09.2017
14:45:39

Aleksey
19.09.2017
14:49:38

Grigory
19.09.2017
14:51:06

Aleksey
19.09.2017
14:51:20
Сначала брал на одиннадцать, а потом подумал, что я блин сижу, ни кто со мной пить не хочет, сдал билет и купил новый на шесть.

Vyatcheslav
19.09.2017
14:52:01
блин :( как-то некогда было проверить скала-чатик

Aleksey
19.09.2017
14:52:22

Grigory
19.09.2017
15:40:54
@fomkin ты когда в мск перезжаешь?
а наврен интернета нету уж укатил за час в дали

Aleksey
19.09.2017
16:02:10

Google

KrivdaTheTriewe
19.09.2017
16:43:58
Не сталкивался кто с таким склайкеджбс (2.10) package macros contains object and package with same name: blackbox
.ivy2\cache\org.scalikejdbc\scalikejdbc-interpolation_2.10\jars\scalikejdbc-interpolation_2.10-2.5.2.jar(scalikejdbc/SQLSynt
axSupportFeature.class)' is broken
[error] (class java.lang.RuntimeException/error reading Scala signature of SQLSyntaxSupportFeature.class: package macros contains object and package with same name: blackbox

Grigory
19.09.2017
17:08:41
@krivdaallstarts попробуй флаг -Yresolve-term-conflict ?

Евгений
19.09.2017
17:15:16
/toxic
Сорри)

a.
19.09.2017
17:41:06
Чат, подскажи. Пытаюсь разобраться с akka-persistence и CQRS подходом на примере простого сервиса управления пользователями. Примерно так я себе представляю реализацию: https://pastebin.com/bdwSKiuf
насколько это правильно\неправильно?

Oleg
19.09.2017
17:52:53

a.
19.09.2017
17:56:14
Эххх...
А че компилятор пишет?

Aleksei
19.09.2017
17:59:21
/toxic

KrivdaTheTriewe
19.09.2017
18:00:27

Oleg
19.09.2017
18:00:37
Говорит "Моё увожение, все дела, я не могу нарадоваться на ваши архитектурные изыски. Но разве юзер-сторейдж это не одна из наболее чувствительных к целостности предмедных областей? Неужели вы действительно по собственной инициативе готовы пропускать через эту вашу ивентсорсовую эвенчуал консистенси запросы на регистрацию"

Arthur
19.09.2017
18:01:15
лол

KrivdaTheTriewe
19.09.2017
18:04:22

a.
19.09.2017
18:17:06
юзер-сторэйдж просто первый пришедший в голову пример, видимо не удачный

Max
19.09.2017
18:52:16
нормальный пример - вполне реализуемый на cqrs
эвенчуал консистенси здесь не причем - агрегат держит состояние о существующих логинах и консистентно проверяет уникальность
я правда не очень понял про UserCommandProcessor: - это отдельный актор такой? на самом деле лучше создавать агрегаты именно по консистетной области - тоесть для регистрации лучше создать какого нибудь UserRegistrator который будет знать что есть пользователи и у них есть логины
лучше я думаю на это ответит @notxcain - но сюда по унитазу он в италии сейчас))

Google

Nikita
19.09.2017
18:53:55
Только проблема что юзеры будут расти со временем
А держать их id в памяти не очень


Max
19.09.2017
18:55:13
ну шарды, консистент хэшинг и вперед
А держать их id в памяти не очень
их и так и так в какой-то памяти держать придется
это всегда часть оптимизации - можно например сделать такой актор который вообще стейт держать не будет, а который будет воскрешаться и пока считыват все свои события из бд тутже проверяет на уникальность и к концу воскрешения уже знает - подходит ли новый логин или нет
но этот вариант не рабочий совсем изза того что он на каждый запрос должен рождаться и умирать

Arthur
19.09.2017
19:01:54
ну одно дело когда можно эти акторы по кластеру раскидать, а другое когда у тебя цельный актор на миллиард юзеров

Max
19.09.2017
19:05:36
сорри не оч понял - я же говорю можно всегда сделать шардирование по логину

Nikita
19.09.2017
19:09:22
Я бы вообще не стал делать это на акка персистенсе. Уж больно много головной боли будет.

a.
19.09.2017
19:12:19
Ок, спасибо!

Oleg
19.09.2017
19:31:22
сорри не оч понял - я же говорю можно всегда сделать шардирование по логину
итак вернёмся к консистентности
В нашем вполне подходящем примере у нас есть
шардированный "аггрегат" по логину
шардированный "аггрегат" по имейлу
шардированный "аггрегат" по каждому из социальных аккаунтов
шардированный "аггрегат" авторизованных сессий
Теперь кейз. Юзер сайнапится по аккаунту гитхаба. Шард гитхаба говорит, что это новый юзер, по oauth мы получаем имейл, просим ввести юзернейм и готовы к действию.
Можно теперь описать беспроблемную реализацию строго-консистентного создания юзера, можно не стесняться раскрывать все нюансы двухфазных коммитов.

Nikita
19.09.2017
19:45:32
Можно заюзать сагу
И не мучатся с 2PC
Но конечно да, без event sourcing будет проще

Oleg
19.09.2017
19:50:24
Я теперь жалею, что проголосовал не за ES в гусёвом твиттере. Он бы вам показал, где акки зимуют

Nick
19.09.2017
19:52:40
а нафиг ты за ES голосовал
тамж конкаренси был, явно интереснее)

Max
19.09.2017
19:58:02
ну то есть
В нашем вполне подходящем примере у нас есть
шардированный "аггрегат" по логину
шардированный "аггрегат" по имейлу
шардированный "аггрегат" по каждому из социальных аккаунтов
шардированный "аггрегат" авторизованных сессий
шардированный "агрегат" по имейлу и логину гитахаба


Oleg
19.09.2017
20:02:24

Max
19.09.2017
20:07:04
Олег долго печатает мне страшно...

Google

Oleg
19.09.2017
20:08:54
не знаю
Вот добрый человек рассказал про сагу
Читаю


Max
19.09.2017
20:10:49
не, сага это это и есть распределенная транзакция
это не стронг консистенси
за акку не топлю) говорим про cqrs/es и аггрегаты(я тоже на автомате с двумя г написал)))
cqrs/es не золотой молоток - не все ситуации с помощью него можно легко и просто решить - особенно сложно жить с миграциями(если события наперсистил плохо)
> ещё раз. У нас есть X независимых...
разговор про то что не надо делать x независимых состояний и множество операций задевающие несколько из этих состояний одновременно.
в приведенном примере про пользователей АгрегатИмейлов и АгрегатИмейловЛогиновГитхаб - не должны быть связаны
тогда проблема занял имейл в одном агрегате а в другом не занял - значит отдаем это на откуп UX и ивенчуал консистенси разрешает уже сам пользователь

Oleg
19.09.2017
20:34:08

Cyrillos
19.09.2017
20:36:33
ребят, объясните, заеч нужны объекты-компаньены? я вижу смысл только в том, что 1) объекты-компаньены упрощают создание синглтона, 2) разделение динамических и статических методов между классами и объектами-компаньенами. Что-то еще?

Mikhail
19.09.2017
20:39:59


Vladimir
19.09.2017
20:43:20
ещё раз. У нас есть X независимых состояний, уникальность и доступность которых необходимо поддерживать. И множество операций задевающие несколько из этих состояний одновременно. Как проектировать данные в кассандре я знаю, но вот как взять идею легковесных транзакций оттуда и притащить в вашу акку добившись, подчёркиваю, стронг консистенси, имея возможность добавлять в эти сети состояний без перезапуска кластера новые, и не зафакапившись ни в одном месте, учитывая, что IT к такой системе будет эквивалентент рандомизированному нагрузочному тестированию и всё равно хрен что гарантирует
но формально если агрегат заперсистил, то уже ок, дальше можно какое-то время роутить запросы стейта на сам агрегат, а потом, когда ивеншуал наступит, на соотв-ю вьюху

Oleg
19.09.2017
20:44:02
где-то спрашивают, есть ли такой юзернейм, где-то пароль, где-то логин в однокласниках