
OlegYch
03.05.2018
17:15:58
добавь
беда

Александр
03.05.2018
18:07:23
Новый выпуск
https://mailchi.mp/softwaremill/scala-times-issue-2607905?e=e642d805da

Nick
03.05.2018
18:45:45
А зачем ты эт сюда постишь? У них ж рассылка есть

Google

Sergey
03.05.2018
18:50:52
Поручик с Наташей Ростовой плывут на лодке.
- Наташа, а вас случайно веслом по голове не били?
- Да что вы себе позволяете, поручик!?
- Да это же я так, разговор поддержать!
(ц)

Sergei
03.05.2018
18:55:44

M
03.05.2018
18:58:43
)))))

Александр
03.05.2018
18:58:58

Nikita
03.05.2018
19:18:03
А когда 43 выпуск скалалаза будет в подкастах тунца?

Evgeniy
04.05.2018
06:42:55
@nikitamatveenko сегодня планируем выложить

Nikita
04.05.2018
06:49:37

Vadim
04.05.2018
06:50:38
а что за подкасты тунца?)

Grigory
04.05.2018
06:50:59

KrivdaAllStars
04.05.2018
09:24:23
https://github.com/RBMHTechnology/eventuate юзал кто?

Nick
04.05.2018
09:34:22
Rbmk ток юзал

Alexander
04.05.2018
10:08:32
Ковырял

Google

Max
04.05.2018
10:24:16
и он же почти перестал ее пилить

Vasiliy
04.05.2018
13:47:12
Всем привет. У меня был некоторый List[_], после вызова map я получил List[(_, _)], при этом мне нужен Map[_, _]. Что в данной ситуации будет лучше, вызвать .toMap или breakOut передать?

Alexander
04.05.2018
13:50:53
view -> map -> toMap
breakOut deprecated считай

Vladyslav
04.05.2018
13:55:16

Alexander
04.05.2018
13:55:50
в новых коллекциях его убрали, смотри описание изменений, где-то было общедоступное

Vladyslav
04.05.2018
13:56:08
в строумене?

Alexander
04.05.2018
13:57:20
https://scala-lang.org/blog/2017/02/28/collections-rework.html
ищи breakOut (там несколько вхождений)

Vladyslav
04.05.2018
13:58:05
?

Vasiliy
04.05.2018
14:10:30
Спасибо, про view я благополучно забыл

Oleksandr
04.05.2018
14:12:33
а scalafix этот breakOut фиксит?
глупо выйдет, если нет

Daniel
04.05.2018
14:19:46

Сергей
04.05.2018
14:21:37
А как он его пофиксит? Там каждый случай уникален. Врядли там обученную нейронную сеть встроят.

Alexander
04.05.2018
14:28:21
знатоки макросов и прочих шаплесов, подскажите, есть ли какие-то непреодолимые преграды в написании макроса, который выведет Circe Encoder для голого трэйта?

Mikhail
04.05.2018
14:31:36

Alexander
04.05.2018
14:32:41

Google

Alexey
04.05.2018
14:32:48

Alexander
04.05.2018
14:33:17
зачем нужны наследники, мне же их создавать не надо, речь про Encoder (trait -> JSON)

Alexey
04.05.2018
14:33:40

Vadim
04.05.2018
14:34:47
а зачем макрос если можно в рукопашку объявить?

Mikhail
04.05.2018
14:34:55
не про силд, а зачем знать это? Есть trait { def name: String def age: Int } например
ну ок. допустим ты забил на то, что могут появится новые поля которые имеют значение. поехали дальше, вот твой трейт конкретно написанный - как макрос должен вкурить что из его мемберов подлежит сериализации, а что нет? вобщем это конечно не преграда для костыля и в таком ракурсе это не представляет трудностей. но явно далеко не самое хорошее и универсальное решение)

Alexander
04.05.2018
14:36:19
все def в трэйте подлежат сериализации, как все поля в case class сейчас

Mikhail
04.05.2018
14:36:50

Alexander
04.05.2018
14:37:12
почему ты называешь это костылём?

Mikhail
04.05.2018
14:40:44
почему ты называешь это костылём?
потому что сложно представить кейс в котором требуется сделать именно так, чтобы был базовый трейт который кто угодно будет наследовать и при этом если кто-то захочет наследников в жсон перегнать - получит исключительно мемберов базового трейта)

Oleksandr
04.05.2018
14:41:31
а через semanticdb можно откопать наследников незапечатанного трейта?

Alexander
04.05.2018
14:41:55

Vadim
04.05.2018
14:41:56
тот же самый эффект можно получить просто введением доп кейс класса, в который твой трейт переводится

Alexander
04.05.2018
14:42:39

Alexey
04.05.2018
14:43:30
Знаю я тут одну либу где можно без копирования в аст писать json ?

Alexander
04.05.2018
14:43:41
levsha?

Alexey
04.05.2018
14:43:52

Mikhail
04.05.2018
14:43:56
ну ок, я могу легко это представить
ну я верю, что человек который задает такие вопросы - всегда приходит с кейсом - в этом я тоже не сомневаюсь) мы же все здесь свое имхо высказываем, но ты всегда можешь поделиться с нами конкретным кейсом с аргументами
за
и мы с радостью это обсудим)

Alexey
04.05.2018
14:45:41
Если уж вам жалко памяти даже на копирования в case class, то я для этого и писал https://github.com/tethys-json/tethys

Oleksandr
04.05.2018
14:45:45

Google

Oleksandr
04.05.2018
14:46:08
типа сперва скомпилируй и собери семантикбд, а потом уже нормально скомпилируй

Mikhail
04.05.2018
14:46:16

Oleksandr
04.05.2018
14:47:07

Mikhail
04.05.2018
14:47:20

Oleksandr
04.05.2018
14:47:34
но вообще это жесткий костыль :)

Mikhail
04.05.2018
14:47:49

Admin
ERROR: S client not available

Oleksandr
04.05.2018
14:48:05

Alexander
04.05.2018
14:48:14

Oleksandr
04.05.2018
14:48:18
скаламета как раз так и делает

Mikhail
04.05.2018
14:48:24

Nikolay
04.05.2018
14:49:23

Mikhail
04.05.2018
14:49:41

Alexey
04.05.2018
14:49:58

Mikhail
04.05.2018
14:50:10

Alexey
04.05.2018
14:50:18
И он сам решает какие трейты подходят

Alexander
04.05.2018
14:50:24
трэйты в скале перегружены сильно, в моём случе речь про что-то типа "pure trait" (no implementation, just defs/vals)

Alexey
04.05.2018
14:54:57

Alexander
04.05.2018
14:55:22

Google

Alexey
04.05.2018
14:55:42

Mikhail
04.05.2018
14:55:44
мне нужны def трэйта и его предков
твои настроения мне понятны. просто Николай затронул генерик тему, которая как бы должна подходить под все трейты - поэтому я уточнил, что считать полем в трейте исключительно в рамках генерик, но не твоего кейса)

Alexander
04.05.2018
14:56:06

Nikolay
04.05.2018
14:56:49
да, про поле в трейте - имелось в виду def name: String - то есть def без параметров, который возвращает что-то, не Unit
@tvaroh не проще ли для такого трейта руками написать encoder-ы? или это очень частый кейс?

Alexander
04.05.2018
14:58:41

Nikolay
04.05.2018
14:59:13
хочется избавиться от прослойки dto?
не помню точно библиотеки, которые с помошью shapeless перегоняют данные между типами. если какая-то из этих либ может из трейта в кейс класс конвертнуть по имени и типу полей, то стоит взглянуть

Alexander
04.05.2018
15:01:29
хочется избавиться от прослойки dto?
хочется избавиться от необходимости во всех контроллерах делать это копирование, писать код в смысле, память вторична в целом, не хай лод... Но если убрать JSON модели в виде case class-ов, то независмость JSON теряется, непрозрачно. В общем пока прикидываю...


Mikhail
04.05.2018
15:02:07
Есть модуль common-model с трэйтом UserLike, он отдаётся из сервисов, которые внутри используют его реализацию User недоступную вызывающим - чтобы такие классы не попали в JSON, т.е. чтобы JSON модели были независимы от внутренней модели и легко можно было понять, если API меняется. В контроллерах такие трэйты копируем в соотв. UserJson модели и их уже сериализуем. Любопытно, можно ли избежать этого копирования, но при этом сохранить разделение JSON и внутренней модели. Если начать энкодить трэйт напрямую, то это условие не выполняется...
разделение на паблик и приват в рамках апи - мне понятны и приятны, особенно в рамках финансов и корпоративной безопасности. но в последнее время я стал слишком ленив для каких-то особых выкрутасов и остановился на том, что мне проще использовать соседние паблик модели, для которых енкодеры автоматом по привычным схемам будут делаться. грубо говоря, если совсем все строго, то разрешаем только отдачу только паблик моделей -
case class PublicUser (...) (название не связано с реальностью, просто для примера)
, для которых при необходимости будут однострочные правила, которые будут разрешать перегонку (посредством уже привычных наверное всем перегонок между не связанными родителями моделями) из приват модели в паблик перед конвертацией в жисон.
скрывать полностью реализации UserLike - тоже ушел давно от подобного, но если вдруг шибко понадобилось - то предпочел бы сделать ему .toPublicModel = return case class Model


Alexander
04.05.2018
15:05:43

Mikhail
04.05.2018
15:18:17
декларировать необходимость передачи определенных моделей при использовании внутреннего апи - это одно, от этого особо не уйти. а навязывать всем около-сервисам выстраивать их собственные модели вокруг моделей внутренних сообщений апи - это немножко другое)


Alexander
04.05.2018
15:25:29

Mikhail
04.05.2018
15:35:04