
Wystan
14.05.2017
19:13:34
а сильно завязли в авсе?
нет, ну если интересно прочитай пост., хоть он и большой, но там написано что этот мезосфере железо-агностик

Nick
14.05.2017
21:34:38
Кстати, что там насчёт подската на google play? Он так и не появился?

folex
14.05.2017
21:40:46
щас проверю
но я находил багрепорты о том что заапложеннаф музыка не появляется в шареных плейлистах

Google

folex
14.05.2017
21:41:15
https://play.google.com/music/playlist/AMaBXykAdAJ34PZeeSQoLfXKetejwkgpXYG6b2xbbMHTF4cKAG0EnOeDiYRi5srJAOHWynao1oRS4VoZg-XK5fhhlmcOpdOw1Q%3D%3D
пусто
для проверки делал плейлист из 1го эпизода и одного трека https://play.google.com/music/playlist/AMaBXynKtJoEPxAo-lHyEo51SRDh-6Fe_hBCRp6r6eafhaUt_eKcDLbPVGEWIu6z1mVBnCmdX7aXZPnbkKmqSro2roPrE4QYrw%3D%3D
там только трек :(

Eugene
14.05.2017
22:17:43
чят, а поясните мне за shapeless, ну в смысле - кто-то ее пользовал чтоб прям с ней было все так легко-легко?
например апдейты полей внутри вложенных case class

folex
14.05.2017
22:24:53
это линзы, не обязательно шейплесс, например эти https://github.com/adamw/quicklens

Eugene
14.05.2017
22:26:37
ну я для примера привел то, что мне кажется более-менее практически полезным
coproducts я например никак не понимаю где бы их прям применить
ну вот например у меня есть некий API, который может вернуть типы A, B, C и D
и вот зачем бы мне тут надо был сопродукт - я не оч понимаю
ну или я совсем тупею тут

Ilya
14.05.2017
22:43:43
Например у тебя функция принимает IntOrString
Или поле в кейсклассе UsernameOrUserid

Google

Eugene
14.05.2017
22:44:13
можно сразу спросить - какой юз-кейс тут?
ну то есть зачем бы мне функция, которая принимает IntOrString?
я не троллю,есличо

Ilya
14.05.2017
22:45:44
У меня конкретный юз-кейс. В домене есть транзакция, в ней поле адреса
А потом оказалось, что нужно не только на адрес уметь деньги переводить
Но и на алиас
Вот и завел AdressOrAlias
Могу представить EmailOrUsernameOrID
Ну и при использовании паттернматч
Норм?

Pavel
14.05.2017
22:53:19
для меня, shapeless, когда есть "почти модель" в виде строки csv/slick_row/googleBigQuery/json/etc, а в коде очевидно хочется работать с нормальной моделью (case class).
Можно ручками с кучей бойлерплейта писать маппинги (или преобразрвания в обе стороны), либо магией (shapeless) где только выходные типы указывать

Eugene
14.05.2017
22:54:23
я вот про паттерн-матч не очень понял
type X = Int :+: String :+: CNil
val z = Coproduct[X]("test")
дальше-то как?
http://stackoverflow.com/questions/34107849/pattern-matching-with-shapeless-coproduct
это офигеть удобно
[sarcasm]
я бы для AddressOrAlias завел какой-нибудь sealed trait и на нем уже делал нормальный паттерн-матч
хз короч

folex
14.05.2017
22:59:01
или either

Eugene
14.05.2017
22:59:55
ну да, keep it simple

Google

Eugene
14.05.2017
23:00:20
кстати аммонит можно любить зотя бы и за это
@ import $ivy.`com.chuusai:shapeless_2.12:2.3.2`
в целом идею взять тапл, сделать из него HList и затем перегнать в case class я нахожу весьма занятной
ровно до момента
@ case class Test(param1: String, param2: Int)
@ val zT = ("p",1)
@ Function.tupled(Test.apply _)(zT)

folex
14.05.2017
23:17:21
из шейплесса теги хороши, и сразу понятно зачем они :)
type checked type alias

Eugene
14.05.2017
23:24:37
http://stackoverflow.com/questions/32250845/using-shapeless-tags-with-labelledgenerics
у одного меня от этого натурально глаз начинает дергаться?

Mikhail
15.05.2017
04:24:48

Daniel
15.05.2017
04:29:14
Шейплезз подходит отлично, когда нужно много интерпретаций делать и мапить на модели. В этом случае бойлерплейт снижается очень сильно. Сериализация/десериализация, например. Коллега еще рассказывала про то, что нужно было очень большую форму на странице разобрать с учетом того какие поля заполнены. С шейплеззом все оказаолось на порядок короче. Достаточно было описать базовые типы.


Mikhail
15.05.2017
04:34:03
@ozlol как выше написали - сериализация-десериализация один из годных кейсов где шейплез может быть заюзан. посмотри например либу https://github.com/netvl/picopickle я себе такую же написал сначала, а потом эту нашел, но правда не гонял) тебе достаточно определить только простейшие правила перегонки из одних типов в другие (нужные тебе при сериализации). все остальное под капотом проходит. и магии нет, просто то, что иначе ты делал бы кодогенерацией макросами или бойлерплейтом. да, это конечно как минимум в несколько раз(а где-то и на порядок) медленнее в рантайме чем то, что можешь получить кодогенерацией, но при наличии такой либы как указано выше - это можно сделать быстрее и не париться, если не нужно быстро что-то молотить

Aleksei
15.05.2017
04:41:20
Вообще всякие интересные кейсы описаны в шейплесс гайде. Да и то не все.
Но мне в проде не дают втащить шейплесс =) Бояться как огня, причем скорее всего бояться больше слова "шейплесс", чем чего то конкретного.

Daniel
15.05.2017
04:45:58
Так может и нет необходимости реальной. Коллега, которая мне про кейс с шейплессом рассказывала, тоже работала в команде, которая была против шейплезза. Но профит был слишком жирный, чтобы зарезать на пулл реквесте и переписывать всё руками.

Aleksei
15.05.2017
04:48:03
Не, нам он отлично зашел бы. =)

Nick
15.05.2017
05:43:54

Aleksei
15.05.2017
05:46:23
ну для всякого. например для парсинга из строки в кейс класс, для преобразования одного кейс класса в другой и просто потому что я так хочу =)

Kirill
15.05.2017
05:47:32
Последнее самое важное, кстати
Если душа просит, то надо действовать, я считаю

Aleksei
15.05.2017
05:50:26
да у нас атата по рукам за новые зависимости без обсуждения =) а обсуждение заходит в тупик на уровне "и так все работает"
ну такое, бытовое

Google

Nick
15.05.2017
05:54:22

Mikhail
15.05.2017
05:54:54

Kirill
15.05.2017
05:55:35
ну да, зачем что-то новое, и так же работает)

Nick
15.05.2017
05:56:55
Как либо может быть small , если в депенденси есть shapeless

Grigory
15.05.2017
05:59:05
шаплез очень лайтвейт деп

Aleksei
15.05.2017
06:01:49
да ну не только кейс в кейс, в шаплессе же много всяких штук, которые упростят некотороый бойлерплейт

Nick
15.05.2017
06:02:01

Grigory
15.05.2017
06:02:40

Admin
ERROR: S client not available

Grigory
15.05.2017
06:02:54
ну ток красным подсвечивает и все

Nick
15.05.2017
06:03:52
вообще идея кал
sn даже простой код не понимает

Sergey
15.05.2017
06:05:11

Aleksei
15.05.2017
06:05:44

Sergey
15.05.2017
06:06:19

Nick
15.05.2017
06:06:21

Aleksei
15.05.2017
06:06:28
мне уже даже без просьб внести шаплесс рассказали много раз какое зло коты,скалаз и шаплесс =)

Grigory
15.05.2017
06:06:28
про монгу

Nick
15.05.2017
06:06:37

Google

Grigory
15.05.2017
06:06:46
на

Nick
15.05.2017
06:07:00

Aleksei
15.05.2017
06:07:28

Grigory
15.05.2017
06:07:29
да удобряют они клумбы просто

Nick
15.05.2017
06:07:48
че в котах то злого?

Grigory
15.05.2017
06:07:54
кормить их надо хорошо, чтоб почву не портили только

Nick
15.05.2017
06:07:59
10 треитов и утильные методы)
ладно скалаз, там спеисшип операторы)

Aleksei
15.05.2017
06:08:34
ну то что придет потом другой инженер и ничего не поймет
типа надо оставить вот так как есть

Kirill
15.05.2017
06:08:55

Sergey
15.05.2017
06:08:59

Nick
15.05.2017
06:09:05

Grigory
15.05.2017
06:09:13
а как не поймет? не поймет потому что не знает абстракций
ну типа монад транформеры не видел никогда

Nick
15.05.2017
06:09:24
обычно ж код после котов строиный

Sergey
15.05.2017
06:09:37

Aleksei
15.05.2017
06:09:38
у нас подозрительно часто в дев канале в слаке проскакивают статьи про ГО
так что