
Aleksey
11.01.2017
08:46:57

Nikolai
11.01.2017
08:47:02

Andrey
11.01.2017
08:47:06

Aleksey
11.01.2017
08:47:15

Google

Nick
11.01.2017
08:47:41
Да.
Посмотри как даггер генерит фектори всякие, да так же в скале сделай?

Aleksey
11.01.2017
08:47:55

Nick
11.01.2017
08:48:14
Но и про лук посмотри
Да и вообще cake pattern юзай???

Marina
11.01.2017
08:48:35

Nick
11.01.2017
08:48:54
Кто вкурсе где офис ткс в Питере?

Nikolay
11.01.2017
08:49:57
где-то на александра невского вроде

Aleksey
11.01.2017
08:50:03

Nick
11.01.2017
08:50:15
Спсб, гляну.
И вообще, я могу вечером сесть и подумать, может замучу советик. Правда с временем у меня плохо

Aleksey
11.01.2017
08:50:59

Google

Andrey
11.01.2017
08:51:36
Народ, а ктонить может на пальцах показать, чем cake pattern не true ?

Alexey
11.01.2017
08:52:54
очень много бойлерплейта

Oleksandr
11.01.2017
08:54:52
не в БЛ дело, а в связности всего-со-всем
к чему в итоге оно приходит
как там -- вместо одного банана, ты получаешь и банан, и обезьяну с ним, и джунгли

Nick
11.01.2017
08:57:10
Aleksey как вариант, можно сделать аннотации как в спринге через мету, и на этапе компиляции связывать ?

Oleksandr
11.01.2017
08:57:30
не выйдет
мета такое не умеет сейчас
в смысле, нету "внешнего источника знаний"

Aleksey
11.01.2017
08:58:08

Митко Соловец?
11.01.2017
09:00:15
а на скале вообще есть родная либа для DI или не завезли?

Aleksey
11.01.2017
09:00:49

Nick
11.01.2017
09:01:16
не
cake pattern по сути di )

Митко Соловец?
11.01.2017
09:01:19
получается пользуются жабьими либами или вообще не юзают DI?

Nick
11.01.2017
09:01:21
что значит не

Ivan
11.01.2017
09:01:38
Scaldi

Aleksey
11.01.2017
09:02:02

Nick
11.01.2017
09:02:08
я бы сказал, что di либы вообще не нужны)

Aleksey
11.01.2017
09:02:16

Google

Nick
11.01.2017
09:02:29
есть куски
кстати, а scaladi на compile time работает?

Ivan
11.01.2017
09:03:31

Nick
11.01.2017
09:04:26
вот еще есть https://github.com/dickwall/subcut
@fomkin во http://di-in-scala.github.io/
есть такая штука еще https://github.com/adamw/macwire
тема вообще)

Alexey
11.01.2017
09:06:45
macwire оч хорошо и статически всё

Aleksey
11.01.2017
09:09:42
тема вообще)
Это все адище какое-то. Слишком легко допустить ошибку. У меня этот кейкпаттерн не влезеат в голову вообще. Вон посмотри как у меня в инжекторе. Есть конструктор, в конструкторе зависимости. Конфиг, в нем написано как зависимости инжектить.

Nick
11.01.2017
09:09:58
есть description модуля

Aleksey
11.01.2017
09:10:20
macwire то прост
Я на пример не понял, как в нем сделать инстанцируемые зависимости.

Nick
11.01.2017
09:11:49
там все понятно

Viacheslav
11.01.2017
09:13:14
кейк паттерн это как перерождение давней мечты спрингоидов - загнать всё в xml конфиги. Мол можно потом такие чудеса делать! На практике за годы гемороя с этим делом пригодилось единицам в мире
то есть в теории красиво на практике не надо

Aleksey
11.01.2017
09:13:31
там все понятно
Нет не понятно. От кейка пахнет так же как как от GoF-паттернов.

Nick
11.01.2017
09:15:50

Google

Alexander
11.01.2017
09:16:04
В "play" compile tine di как работает?

Dmitry
11.01.2017
09:17:45
никак
там джус
можно свой прикрутить, но подефолту джус

Ivan
11.01.2017
09:19:00
сколько не разбирался в cake pattern так до конца и не понял зачем он

Oleksandr
11.01.2017
09:19:06
лучший ДИ -- тупо через конструктор

Dmitry
11.01.2017
09:19:21
ну так macwire про это

Nick
11.01.2017
09:21:14

Aleksey
11.01.2017
09:21:42

Oleg
11.01.2017
09:21:49

Admin
ERROR: S client not available

Oleg
11.01.2017
09:23:50
а ещё пацаны в Haskell знакомые делают зависимости через HSet Reader monad

Alexey
11.01.2017
09:25:40
а grafter не достаточно хорош?

Oleg
11.01.2017
09:25:58
вот такой https://hackage.haskell.org/package/hreader

Nick
11.01.2017
09:25:59

Dmitry
11.01.2017
09:28:39
herding cats — Reader datatype
http://eed3si9n.com/herding-cats/Reader.html

Max
11.01.2017
09:33:38
https://www.youtube.com/watch?v=xPlsVVaMoB0
и рунар рассказывал тоже помоему

Dmitry
11.01.2017
09:35:28
Юджин на него и ссылается

Vyatcheslav
11.01.2017
09:41:45
Спорю тут с челом на тему мутабельных коллекций. Есть функция, которая внутри создает список (точнее - мутабельную очередь, но не важно) и по условию добавляет в него некоторые значения. Наружу отдается Iterable, через который поменять ничего нельзя. Так вот, чел настаивает, что тут надо List юзать, типа:
List(x).filter(_ => cond1) ++ List(y).filter(_ => cond2) ++ List(z).filter(_ => cond3)
а я вот не понимаю, начерта, если:
1. Это дерьмо совершенно нечитабельное, если cond состоит из 3+ условий, а x, y и z - это конструкторы с несколькими параметрами.
2. На референшл транспаренси тут вообще насрать на мой взгляд, и на ризонинг это никак не влияет
А вы что думаете?

Google

Oleg
11.01.2017
09:42:59
ну вот да, для игрушечных проектов можно юзать чистый reader, как только что-то дорастает ≳ 30 сервисов, приходит необходимость находить их в environment автоматически с помощью каких-то иплицитных геттеров
Спорю тут с челом на тему мутабельных коллекций. Есть функция, которая внутри создает список (точнее - мутабельную очередь, но не важно) и по условию добавляет в него некоторые значения. Наружу отдается Iterable, через который поменять ничего нельзя. Так вот, чел настаивает, что тут надо List юзать, типа:
List(x).filter(_ => cond1) ++ List(y).filter(_ => cond2) ++ List(z).filter(_ => cond3)
а я вот не понимаю, начерта, если:
1. Это дерьмо совершенно нечитабельное, если cond состоит из 3+ условий, а x, y и z - это конструкторы с несколькими параметрами.
2. На референшл транспаренси тут вообще насрать на мой взгляд, и на ризонинг это никак не влияет
А вы что думаете?
нихрена не понятно, между чем и чем выбор?


Nikolai
11.01.2017
09:46:44
Спорю тут с челом на тему мутабельных коллекций. Есть функция, которая внутри создает список (точнее - мутабельную очередь, но не важно) и по условию добавляет в него некоторые значения. Наружу отдается Iterable, через который поменять ничего нельзя. Так вот, чел настаивает, что тут надо List юзать, типа:
List(x).filter(_ => cond1) ++ List(y).filter(_ => cond2) ++ List(z).filter(_ => cond3)
а я вот не понимаю, начерта, если:
1. Это дерьмо совершенно нечитабельное, если cond состоит из 3+ условий, а x, y и z - это конструкторы с несколькими параметрами.
2. На референшл транспаренси тут вообще насрать на мой взгляд, и на ризонинг это никак не влияет
А вы что думаете?
Альтернативы-то какие? ифами зафигачить? В целом ничего плохого в приведенном коде не вижу


Vyatcheslav
11.01.2017
09:48:18
if (cond1) xs.add(x)
if (cond2) xs.add(y)
if (cond3) xs.add(z)
xs: Iterable[B]
vs
List(x).filter(_ => cond1) ++ List(y).filter(_ => cond2) ++ List(z).filter(_ => cond3)

Daniel
11.01.2017
09:48:52

Nikolai
11.01.2017
09:49:38

Oleg
11.01.2017
09:50:53

Sergey
11.01.2017
09:51:01
ифы быстрее ж

Vyatcheslav
11.01.2017
09:51:25
да там добавляется максимум 5-6 элементов, быстродействие тут никакой роли не играет

Dima
11.01.2017
09:52:03
я в скала новенький. Но откуда в Iterable трейте add метод?

Vyatcheslav
11.01.2017
09:52:11

Nikita
11.01.2017
09:52:37

Nikolai
11.01.2017
09:52:52
Да эти латентные хаскелисты... им бы везде иммутабельность зафигачить

Vyatcheslav
11.01.2017
09:52:52

Nikolai
11.01.2017
09:54:00

Oleg
11.01.2017
09:54:16

Vyatcheslav
11.01.2017
09:54:53
да те же ифы получаются, только писать больше

Vladimir
11.01.2017
09:55:31
тут какая-то дрянная иммутабельность: сперва предлагается инстанциировать, а потом выкидывать

Oleg
11.01.2017
09:55:55
или
tell(x) when cond1 >>
tell(y) when cond2 >>
tell(z) when cond3 >>
...
а вообще совершенно непонятно, почему не написать функцию вроде
addIf[A](x: => A, cond: Boolean): List[A]
и сделать её как угодно

Vyatcheslav
11.01.2017
09:59:41
это можно, но я хоть убейте не понимаю, в чем тут профит от иммутабельной коллекции