@scala_ru

Страница 254 из 1499
Nikolay
27.11.2016
18:05:27
compile in Compile := { (run in (subproject, Compile)).toTask("").value (compile in Compile).value } вот так вот вроде бы завелось

Vadim
27.11.2016
18:07:00
там какая-то магия с объявлением - run in (subproject, Compile) - я вот такую запись случано выгуглил и тоже после этого завелось

Nikolay
27.11.2016
18:08:27
в смысле что in (subproject, Compile) вместо in subproject in Compile?

Vadim
27.11.2016
18:09:01
угу

Google
Daniel
27.11.2016
18:35:12
Юрий
28.11.2016
00:30:16
value тоже deprecated) теперь вместо, по-моему, evaluated
Не совсем. Для большинства вещей value так и останется.

Denis
28.11.2016
07:32:59
Выложили видео со SBTB https://m.youtube.com/channel/UCKvhw2CPR-0S4XZ1bNlihnw

Andrey
28.11.2016
07:40:36
что-то у них с плейлистами не то на канале

Aleksei
28.11.2016
07:42:38
лол это просто тебе рилейтед на основе твоей истории просмотров подсунули

Bulbu
28.11.2016
09:21:22
всем привет, кто-нибудь писал что-то на coap протоколе под jvm?

Alexey
28.11.2016
09:35:44
Боже упаси

писал ((

Igor
28.11.2016
09:38:45
я всегда темплейтами протокол общения оформлял) чем мучится со структурами соапа

Bulbu
28.11.2016
09:42:31
прожу заметить, не soap, а CoAP

Alexey
28.11.2016
09:45:31
Spring WS в помощь

а епрпст

Denis
28.11.2016
10:25:04
всем привет, кто-нибудь писал что-то на coap протоколе под jvm?
ради 5ти запросов не стал заморачиваться и просто слал xml

Google
Mikhail
28.11.2016
10:52:55
http://coap.technology/

кто-нибудь использовал непосредственно скалу для конфигов, вместо всяких hocon ?

Юрий
28.11.2016
11:07:33
а зачем?

Mikhail
28.11.2016
11:08:00
compile time checking

Nikolay
28.11.2016
11:08:07
https://www.youtube.com/watch?v=kfs-dtbG0kY

Mikhail
28.11.2016
11:08:38
+ не требуется писать постоянно config.getString()

Lev
28.11.2016
11:08:45
ага, у них прямо eval есть для конфигов ?

Nikolay
28.11.2016
11:08:45
в этом видео вроде бы говорилось

Lev
28.11.2016
11:08:49
красота

Mikhail
28.11.2016
11:09:20
просто я недавно начал использовать и вот пока размышляю попутно - есть ли какие подводные камни. пока не наткнулся)

Юрий
28.11.2016
11:09:45
а как разные конфиги подкладывать?

Nikolay
28.11.2016
11:09:48
в смысле без пересборки всего

не в рантайме

Mikhail
28.11.2016
11:10:08
Lev
28.11.2016
11:10:30
я слышу нотки сарказма, или показалось?
нет, наоборот. идея отличная. но я не упускаю возможности потроллить такой фичей )

Nikolay
28.11.2016
11:10:30
окей, что делать с секретами?

Google
Mikhail
28.11.2016
11:10:34
в смысле без пересборки всего
если очень надо - тоже без проблем, релоад класса

Юрий
28.11.2016
11:10:45
ну вот чем хорош typesafe config. Ты один раз собрал прилоджение, а потом ему можешь разные конфиги подкладывать

а тут как?

Mikhail
28.11.2016
11:11:18
а тут как?
точно также. вместо разных файлов - разные обжекты и вперед

ключи чтобы в репу не попали?

Nikolay
28.11.2016
11:11:42
да

Mikhail
28.11.2016
11:11:46
вынести можно отдельно

Юрий
28.11.2016
11:11:49
точно также. вместо разных файлов - разные обжекты и вперед
Вот у тебя собранная джарка или докер образ. Как ты ему обжект подложишь?

Nikolay
28.11.2016
11:12:03
хм, вообще можно отдельно подкладывать в classpath одну jar-ку со всеми конфигами

просто в скрипте запуска прописывать

Mikhail
28.11.2016
11:12:24
Вот у тебя собранная джарка или докер образ. Как ты ему обжект подложишь?
также как и любой другой файл. оборачиваешь отдельно в джар и пихаешь

Nikolay
28.11.2016
11:12:30
тогда нужно будет только одну jar-ку пересобирать

Mikhail
28.11.2016
11:13:08
ага. либо хот релоад для отдельной джарки - тоже не трудно, если время старта большое и надо прям наживую

зато после избавления от getString, getInt со стринговыми ключами с которыми еще и в самом конфиге можно ошибиться - прям радостно и кошерненько становится)

Юрий
28.11.2016
11:16:13
ну хз хз. Оборачивать в жарку конфиги не видится мне удобным решением

Mikhail
28.11.2016
11:17:02
яве что отдельный файл в виде .conf, что отдельный джарник с парой классов внутри - разницы то нет. все равно автоматика все будет делать

Grigory
28.11.2016
11:17:37
а зачем пересобирать джарники ради конфига?

в джарнике дефолтный конфиг

продакшн конфиг передается через переменные

Google
Grigory
28.11.2016
11:19:01
абсолютно так же как и не надо пересобирать джарник ради какогото кастомного конфига логов

в джарнике дефолтный; в остальных случаях переменной передается

Daniel
28.11.2016
11:19:56
compile time checking
а как же фикус?

https://github.com/iheartradio/ficus?files=1

Admin
ERROR: S client not available

Mikhail
28.11.2016
11:21:16
так ведь там строковые ключи никуда не делись

Alex
28.11.2016
11:21:19
https://github.com/Verizon/knobs еще

Nikolay
28.11.2016
11:21:39
так они все равно не спасут от опечатки в реальном конфиге

Daniel
28.11.2016
11:22:10
так ведь там строковые ключи никуда не делись
если очень хочется, можно написать один здоровый объект и читать в него конфиг целиком

Mikhail
28.11.2016
11:23:05
можно, но зачем? я пока не нашел ни одного пункта, в котором бы я потерял при использовании скалы как конфига, но зато нашел для себя пачку приобретенных удобств

Grigory
28.11.2016
11:23:16
и чтоже тогда придется ради изменения в конфиге пересобирать джарник?

что за удобство такое?)

Mikhail
28.11.2016
11:23:53
при изменении конфига - ты пересохраняешь конфиг. тут также - ты пересохраняешь конфиг (просто он в формате скалы). не надо всю либу для этого пересобирать

Nikolay
28.11.2016
11:24:25
Mikhail замути либу/sbt плагин для всего вот этого

Daniel
28.11.2016
11:24:26
ровно то же самое

Mikhail
28.11.2016
11:24:55
object MyProdConfig extends DefaultConfig with FallBackConfig

Nikolay
28.11.2016
11:25:47
ConfigFactory.parseFile(new File(configPath)).withFallback(internalConfig)
ну это же не compile time check. подсунешь на проде другой конфиг где какого-то ключа нет, и упадет в Рантайме

!!!В РАНТАЙМЕ!!!

Google
Mikhail
28.11.2016
11:26:13
Mikhail замути либу/sbt плагин для всего вот этого
ну так вроде либы особо и не надо, кроме разве что бойлерплейт для хотрелоада - но мне он не нужен, у меня и так быстро рестартует)

Daniel
28.11.2016
11:26:19
нет, не упадёт, если в fallback есть этот ключ

Grigory
28.11.2016
11:26:35
да и фишка в том что в рантайме конфиг сувать

Nikolay
28.11.2016
11:26:42
да, я про бойлерплейт для того чтобы этим было удобно пользоваться

KrivdaTheTriewe
28.11.2016
11:26:52
Case class + scopt

Grigory
28.11.2016
11:26:58
-Dconfig.file=prodconfig

все из коробки работает

KrivdaTheTriewe
28.11.2016
11:27:04
Вот это для конфигурации

Grigory
28.11.2016
11:27:05
что за велосипеды

Mikhail
28.11.2016
11:27:13
-Dconfig.class=my.prod.Config

Grigory
28.11.2016
11:27:31
hz в этом смысла немного

Mikhail
28.11.2016
11:27:32
тоже все из коробки и без зависимостей)

Grigory
28.11.2016
11:27:43
но ммм я понял

Mikhail
28.11.2016
11:27:50
и тайпсейф компайл тайм)

еще микро-либа нужна для какой-никакой стандартизации случаев Config.getConfig("some.path.to.config"). Наверное это можно порешать что-то вроде object Config { def register[T]( config: T#Config ) def get[T]:T#Config }

хотя вложенный тип можно и не использовать

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