@scala_ru

Страница 1256 из 1499
Sergey
04.02.2018
10:17:23
Егора прочитал? http://www.yegor256.com/2017/03/28/solid.html
Егор мой любимый евангель комик

Wystan
04.02.2018
10:17:54
Егора прочитал? http://www.yegor256.com/2017/03/28/solid.html
>The point being these principles are nothing but an explanation of "cohesion and coupling" for dummies in a very primitive, ambiguous, and marketable way. Dummies will buy books, seminars, and trainings, but won't really be able to understand the logic behind them. Егор-сила!

Viacheslav
04.02.2018
10:22:26
кстати да https://github.com/kubernetes/kubernetes/search?l=Go&q=nil&type=&utf8=%E2%9C%93

Дядюшка Боб облез бы если бы это увидел)

Google
Alexander
04.02.2018
10:22:44
Егора прочитал? http://www.yegor256.com/2017/03/28/solid.html
Читал. Поспорил тогда с ним и предложил ему доклад другого ООПшника, который как раз таки топит за солид и якобы математически что-то там доказал. На этом наш диалог закончился.

Igor
04.02.2018
10:27:11
Sergey
04.02.2018
10:36:07
Читал. Поспорил тогда с ним и предложил ему доклад другого ООПшника, который как раз таки топит за солид и якобы математически что-то там доказал. На этом наш диалог закончился.
Я тоже общался с Егором, на тему Элегантных объектов. Задал ряд щекотливых вопросов с примерами... Создалось впечатление что он и сам понимает "несовершенство" "своего подхода", но не сильно переживает по этому поводу, т.к. книги продаются, доклады посещаются, рейтинг известности инкрементится. Вобщем человек не фанат докопаться до истины. Не сильно она ему нужна.

Pavel
04.02.2018
10:36:33
http://i0.kym-cdn.com/photos/images/original/001/167/690/e55.png
Госпаде, какой прекрасный язык. ?

Alexey
04.02.2018
10:39:11
Viacheslav
04.02.2018
10:39:55
англичашки https://www.youtube.com/watch?v=iSmkqocn0oQ

когда nil заколебал и хочется чего-то новенького {"nil", NewMapStringBool(&nilMap), ""},

Dim
04.02.2018
10:43:12
Народ а есть какой то аналог спринговой удобной @Value аннотации для конфигов в Scala мире, может быть какая-нибудь библиотека?

@Value("${value.from.file}") private String valueFromFile;

Alexander
04.02.2018
10:47:35
Я тоже общался с Егором, на тему Элегантных объектов. Задал ряд щекотливых вопросов с примерами... Создалось впечатление что он и сам понимает "несовершенство" "своего подхода", но не сильно переживает по этому поводу, т.к. книги продаются, доклады посещаются, рейтинг известности инкрементится. Вобщем человек не фанат докопаться до истины. Не сильно она ему нужна.
У меня создалось впечатление что человек сам мало понимает о чем говорит. Стоило какую-то теорию проработать, что ли, прежде чем с ней к людям выходить. Но забавнее тот факт что это вот всерьёз обсуждается сообществом, и то ли не нашлось ещё умного человека, то ли у Егора есть какие-то харизма, авторитет, что позволяют ему держаться на плаву, так сказать.

Nick
04.02.2018
10:48:23
Google
Иван
04.02.2018
10:49:18
Без Егора будет скучно.

Alexander
04.02.2018
10:49:41
Dim
04.02.2018
10:49:53
Эм, что же все не то советуют)

Мне бы в стиле спринговой аннотации)

Александр
04.02.2018
10:50:11
можно java джедаев подкалывать что у них не правильное ооп

Dim
04.02.2018
10:50:15
так то я и сам могу везде брать руками из конфига.

Nick
04.02.2018
10:50:17
В скале не любят аннотации

Dim
04.02.2018
10:50:39
В скале не любят аннотации
Я в курсе, но ведь это же удобно!))

Nick
04.02.2018
10:50:44
Pureconfig не про взятие руками

Viacheslav
04.02.2018
10:51:36
@Value аннотация приносящая меньше пользы чем гемороя

Dim
04.02.2018
10:51:52
Есть конфиг, там всё, где надо инжектим значение.

Alexey
04.02.2018
10:52:42
Это с чего же?)
это попытка слепить вместе бизнес логику и логику того как у тебя хранятся конфиги. замапь конфиг на кейс класс и инжекти его. как ты соберешь кейскласс это уже забота вызывающего

Nick
04.02.2018
10:52:43
Сайд эффект ж )

Alexey
04.02.2018
10:53:01
ижекти = передай как параметр конструктора

Dim
04.02.2018
10:53:22
ижекти = передай как параметр конструктора
Тут не о зависимостях, а о конфигах

Alexey
04.02.2018
10:53:39
читай сообщение выше

Google
Dim
04.02.2018
10:54:39
Ладно, пойду писать на спринге))))

Viacheslav
04.02.2018
10:54:42
карочи работа с конфигами должна быть ☝

"наверху" так сказать

Gennady
04.02.2018
10:54:55
Тут не о зависимостях, а о конфигах
конфигах которые обычно должны быть куда-то заинжекчены потому что от них что-то зависит

Alexey
04.02.2018
10:55:07
Погоди, тут как раз разделение, а вот замаплвивание конфига на кейс класс это уже смешивание.
нет. вот смотри - если сервису нужен таймаут и логин пароль для сервиса, то просто передай их в него. зачем делать допущение, что вызывающий получит их из конфига?

Dim
04.02.2018
10:55:28
конфигах которые обычно должны быть куда-то заинжекчены потому что от них что-то зависит
Не не, конфиг один, нам нужно только получить значение. И для этого не надо ничего мэпить шмэпить.

Gennady
04.02.2018
10:56:27
это у тебя сейчас конфиг один и только через него все идет. А завтра их будет 15 и половина будет нужна только чтобы перемапить предыдущие конфиги

Dim
04.02.2018
10:56:30
нет. вот смотри - если сервису нужен таймаут и логин пароль для сервиса, то просто передай их в него. зачем делать допущение, что вызывающий получит их из конфига?
Да, а если у меня несколько мест или в разных местах разные значения, а потом я буду везде по коду лазить и искать, ага...тут я поменял, а тут нет...а так все в одном конфиге и всё)

Gennady
04.02.2018
10:57:15
либо мелкая приложунька без будущего, в такой можно любой говнокод держать - в силу размеров он будет безвреден

Gennady
04.02.2018
10:58:01
либо ошибаешься, либо троллишь)

Alexey
04.02.2018
10:58:12
Да, а если у меня несколько мест или в разных местах разные значения, а потом я буду везде по коду лазить и искать, ага...тут я поменял, а тут нет...а так все в одном конфиге и всё)
даже не знаю как объяснить по другому. короче, конфиги отдельно, а бизнес логика отдельно. и уже на самом верху ты все это связываешь. не нужно чтобы способ получения необходимых данных (в твоем случае из конфига) становился частью твоих сервисов

Nick
04.02.2018
10:58:12
Так, погоди и куда я его?
Ты делаешь кеиз класс в который ты загрузишь конфиг, дальше юзаешь этот конфиг в своей логике

Google
Nick
04.02.2018
11:00:03
Так, где там пример от Алекса

Alexey
04.02.2018
11:00:25
То есть ты предлагаешь хардкодить значение или использовать сервис дискавери, не совсем понимаю?
case class Config(db: DbConfig, ...) case class DbConfig(login: String, ...) case class MyDBService(dbConfig: DbConfig, ...) val config: Config = loadConfig(...) val dbService: DbService(config.dbConfig)

только обмазать сверху эффектами, которые красиво сообщат об ошибках в конфиге

Dim
04.02.2018
11:01:10
Но все равно, много телодвижений.

Nick
04.02.2018
11:01:23
Это в PureConfig ?
Смотри пример https://github.com/pauljamescleary/scala-pet-store

Я уже устал его кидать)

Viacheslav
04.02.2018
11:02:07
object Applica4ka extends App { val conf = Configura4ka() Servicok().justDoIt(conf.param1, conf.param2) } class Servisok { def justDoIt(param1: Int, param2: Int) {...} } object Configura4ka { def apply() = { //load conf file and map to ConfDto //return confDto } } case class ConfDto(...)

Alexey
04.02.2018
11:02:31
Nick
04.02.2018
11:02:38
Крытой неиминг

Alexey
04.02.2018
11:02:48
не, норм )
зато ты хотя бы понимаешь что происходт

я вот однажды увидел в спринге чтото типа @Value("#{asdf.blah:-1}") и боюсь представить как это отлаживать учитывая что у меня есть пачка place holder resolverов

вообщем в этом чатике любят на типах программировать а не на строчках в значениях аннотаций

Dim
04.02.2018
11:05:08
Я тоже люблю на типах. Но мне надо просто конфииииг, а не программировать в данном случае)))

Viacheslav
04.02.2018
11:05:23
ещё отдельная классная тема когда у тебя тесты и conf.properties в исходниках лежит и в тестах, и ты такой мужественный дебажишь пол дня чтобы понять что там откуда вгрузилось

потому что с последнего раза когда ты писал этот код прошло пол года

Daniel
04.02.2018
11:05:51
Но все равно, много телодвижений.
аннотация тебе удобна только в момент написания потом это что-то магическое, что меняет твой контекст и окружение с падением только в последний момент в рантайме, а не в самом начале (что может помочь продолбать проблемы) это как свой Predef импортнуть и получить от других кучу багрепортов с вопросом, а у меня не пашет

Dim
04.02.2018
11:07:31
Тебе ж дали ссылку
Там по ссылке очередной петпроект с Cats

Google
Alexey
04.02.2018
11:07:38
Я тоже люблю на типах. Но мне надо просто конфииииг, а не программировать в данном случае)))
вообщем ты недооцениваешь мне кажется проблему здесь. как выше написали это удобно при написании но не удобно при поддержке. Ты хочешь при старте иметь возможность проверить конфиг и среагировать как-то, ведь альтернатива это проверять что-то в рантайме, когда ты обычно уже не на работе :)))

Nick
04.02.2018
11:08:42
Там по ссылке очередной петпроект с Cats
Зато там показано, как надо делать)

Nick
04.02.2018
11:09:51
Проблема value в том, что ты можешь сделать это либой

И вместо того, чтобы инжектить нормально, будет боль

Alexey
04.02.2018
11:10:10
Что мне даст конфиг смэпленный в кейс класс? значения там все равно могут быть какие угодно.
в том то и дело, что если ты объявишь case class Config(login: String), то единственная нормальная сигнатура для функции загрузки станет def loadConfig(): ValidatedNel[String, Config], что заставляет тебя проверить корректность загруженного конфига.

*тут я делаю предположение, что мы не используем null * :)

Viacheslav
04.02.2018
11:11:05
nil !

Daniel
04.02.2018
11:11:36
Alexey
04.02.2018
11:11:50
да даже не заставляет, оно или рабочее или совсем не рабочее
ну да, либо упасть при старте в рантайме, что конечно в 100000000 раз лучше падения при исполнении

@dimstream мы справились? )))

Viacheslav
04.02.2018
11:12:42
кстати у нетфликса была либка для конфига

Dim
04.02.2018
11:13:08
@dimstream мы справились? )))
Похоже да, благодарю всех за ответы и конструктивную критику )

Alexey
04.02.2018
11:13:52
обращайся. есть еще grafter, но немного замороченный, но идея там такая же

Viacheslav
04.02.2018
11:15:59
кажется вот эта фигня https://github.com/Netflix/archaius

ггг https://github.com/Netflix/archaius/wiki/Scala

Страница 1256 из 1499