
Oleg
24.04.2017
17:15:22
просто без скобок круглых как значения в Enumeration

Alexander
24.04.2017
17:16:00
эмм и они все будут равны? ))

Nikita
24.04.2017
17:16:25

Alexander
24.04.2017
17:16:33
мне нужны разные значения Project, методу передаю префикс, а он мне возвращает (видимо тупл) из api/impl/etc модулей

Google

Oleg
24.04.2017
17:17:27
значения в енумерейшне не равны ведь

Nikita
24.04.2017
17:25:39

Alexander
24.04.2017
17:26:19
так и что что не равны? Как мен разные значения присвоить-то?
это просто будет вызов повторён несколько раз
http://stackoverflow.com/questions/43594283/define-multiple-projects-in-single-line-in-sbt

Nick
24.04.2017
17:28:02
Ох родимый сбт)

Vadim
24.04.2017
17:35:31
а зачем вообще таким образом объявлять проекты? чем обычные способ неугоден?

Alexander
24.04.2017
17:35:54
меньше бойлерплейта

Nick
24.04.2017
17:36:15
Эт с чего меньше?

Vadim
24.04.2017
17:36:35
а какой болер лпейт ты хочешь убрать то? - ты можешь сделать отдельно настройки и кажому проекту их скормить

Nick
24.04.2017
17:40:11
Вообще насколько я помню нужно явно писать = Project
Я даже где-то в неитиве напарывался

Google

Alexander
24.04.2017
17:41:07
необязательно явно, через метод *один* проджект можно объявить

Nick
24.04.2017
17:41:33
Этот ж макрос и он имя в сеттинги из названия переменной берёт?
Над глянуть, но попозже

Alexander
24.04.2017
17:43:40
вызов макроса может быть где угодно

Nick
24.04.2017
17:44:16
Вызов да, но не гарантировано правильное поведение)
Сейчас до дома доеду и гляну

Mikhail
24.04.2017
17:50:52
меньше бойлерплейта
бойлер плейт обычно вроде так убирают https://github.com/scalameta/sbt-macro-example/blob/master/build.sbt
затея с ванлайнероммультипрожектомантибойлерплейт - крайне сомнительна)


Alexander
24.04.2017
17:52:22
пока получилось сделать вот так
object Util {
case class ProjectGroup(api: Project,
logging: Project,
awsSdk: Project,
awsSdkMonix: Project)
def DefProjectGroup(name: String, coreApiProject: Project, coreAwsSdkProject: Project, awsSdkDeps: Seq[ModuleID])
(implicit settings: MiuProjectSettings): ProjectGroup = {
val apiProject = DefApiProject(name).dependsOn(coreApiProject)
ProjectGroup(
apiProject,
DefLoggingProject(name).dependsOn(apiProject),
DefAwsSdkProject(name).dependsOn(coreAwsSdkProject, apiProject).settings(libraryDependencies ++= awsSdkDeps),
DefAwsSdkMonixProject(name).dependsOn(coreAwsSdkProject, apiProject).settings(libraryDependencies ++= awsSdkDeps)
)
}
}
И в build.sbt:
lazy val s3ProjectGroup = DefProjectGroup("s3", coreApi, coreAwsSdk, Seq(Deps.AwsSdkS3(Versions.AwsSdk)))
lazy val s3Api = s3ProjectGroup.api
lazy val s3Logging = s3ProjectGroup.logging
lazy val s3AwsSdk = s3ProjectGroup.awsSdk
lazy val s3AwsSdkMonix = s3ProjectGroup.awsSdkMonix
Но не одной строкой...


Vadim
24.04.2017
17:54:51
но зачем?) ты их в утилях одной строкой чтоли создаешь?)

Mikhail
24.04.2017
17:55:44

Alexander
24.04.2017
17:55:51
s3 - это не единственный "project group", аналогичный набор объявляется для kinesis и др. амазоновских штук

Vadim
24.04.2017
17:59:06
ну а вчем смысл твоих групп? ты можешь побить по папкам и внутри свои группы устроить

Alexander
24.04.2017
17:59:33
короче, проходите мимо
(это последним двум советчикам)

Nick
24.04.2017
18:05:17
@tvaroh а почему не сделать так https://github.com/scala-native/scala-native/blob/master/build.sbt ?

Alexander
24.04.2017
18:20:41
что конкретно там имеешь в виду?
вроде всё обычно

Nick
24.04.2017
18:44:27

Alexander
24.04.2017
19:00:04
Вопрос: появилась потребность, своего рода, обобщённом АДТ, сделал так:
object VAdmin {
sealed trait VAdminA[T]
case class NewMessages[T](messages: Seq[T]) extends VAdminA[T]
case class MeetingRequestDetected[T](message: T, m: NeetlyMeeting) extends VAdminA[T]
case class NewMeetingRequest[T](meetingRequest: MeetingRequest) extends VAdminA[T]
case class Error[T](message: String) extends VAdminA[T]
case class Done[T]() extends VAdminA[T]
}
А решение лучше никто не подскажет?

Google

Arthur
24.04.2017
19:05:03
Убрать дженерики и заменить их на части адт
Типо если месседж это стринг
То сделай VMessageString
Если что-то ещё то добавишь еще

Vitalii
24.04.2017
19:12:18
Activator will be EOL-ed on May 24, 2017.
https://www.lightbend.com/community/core-tools/activator-and-sbt

Alexey
24.04.2017
19:14:26
о, так он еще был живой

Alexander
24.04.2017
19:25:04

Alexander
24.04.2017
19:25:07
если кому интересно, на SO ответили http://stackoverflow.com/a/43595078/312708

Arthur
24.04.2017
19:26:27
Глянь там на первых слайдах адт

Alexander
24.04.2017
19:26:37
Вот такое было:
case class Admin[T]() {
// messages
case class NewMessages(messages: Seq[T])
case class MeetingRequestDetected(message: T, m: NeetlyMeeting)
case class NewMeetingRequest(meetingRequest: MeetingRequest)
case class Error(message: String)
object Done
По-моему смешно. Оно ещё не паттерн-матчилось из-за разных инстансов Admin.

Arthur
24.04.2017
19:27:22
Главное не впиливай дженерики как там) там кейс с рекурсией типов дальше

Alexander
24.04.2017
19:28:37
Ага, я уже шейплесовские TypeCase'ы притащил из-за них.

Aleksei
25.04.2017
05:24:23
рекорд!

Nick
25.04.2017
05:30:38
@aleksei_t ты там биткоины маинишь?

Aleksei
25.04.2017
05:31:06
sbt compile с нуля! =)

Vladimir
25.04.2017
05:31:21
оно того стоило?)

Aleksey
25.04.2017
05:34:11
рекорд!
что бы было, если бы у вас там еще бы шэплес был

Aleksei
25.04.2017
05:34:40
ну мы просто переехали на гитхаб. стало интересно сколько по времени оно. ппц конечно, так жить нельзя =)

Google

Aleksey
25.04.2017
05:36:19
А на CI не видно?

Aleksei
25.04.2017
05:39:00
не надо сейчас сыпать соль на рану )

Aleksey
25.04.2017
05:39:51

Alexandr
25.04.2017
06:43:01
Суть картинки не понял :(

Admin
ERROR: S client not available

Alexandr
25.04.2017
06:43:42
20 минут - как-то по детски. Вот если цинк вырубить....
Или он и так?
Сорри, 2 часа спал.

Nikolay
25.04.2017
06:44:16
Так это с нуля

Alexandr
25.04.2017
06:46:07
Имею в виду, что видел часовой билд скала проекта. Правда, потом выяснилось, что они цинк забыли запустить...

Nikolay
25.04.2017
06:48:51
Каждая компиляция час?

Aleksey
25.04.2017
06:50:16

Kirill
25.04.2017
06:53:26

Aleksey
25.04.2017
06:55:08
В этом всё очарование скалы
Да ты чо! Скала же своим веременем компиляции как бы говорит нам: "переходите на дико модную микросервисную архитектуру".

Kirill
25.04.2017
06:55:34

Aleksey
25.04.2017
06:56:01
Зачем их все одновременно перекомпилировать?

?Ivan
25.04.2017
06:56:12

Kirill
25.04.2017
06:57:05

Aleksey
25.04.2017
06:58:47

Andrey
25.04.2017
07:04:23

Google

Aleksei
25.04.2017
07:05:52
нанопенисы, простите

Kirill
25.04.2017
07:07:39

Andrey
25.04.2017
07:10:45

Aleksei
25.04.2017
07:17:08

Denis
25.04.2017
07:18:53
It's Beardfacé

Andrey
25.04.2017
07:39:58
скаланы, как можно обработать обе стороны Either? типа все правые собрать в список, а левые залогировать с ошибкой

Nikolay
25.04.2017
07:40:43
Разматчить?

Nick
25.04.2017
07:41:16
А эт валидные данные слева,если справа ошибка

Denis
25.04.2017
07:42:47

Andrey
25.04.2017
07:43:22
да, свернуть в пару листов мне больше нравится

Aleksey
25.04.2017
07:43:33
плюсую свертку

Denis
25.04.2017
07:45:13
listOfEither.foldLeft((List.empty[L], List.empty[R])) {
case ((errors, results), x) =>
x match {
case Left(error) => (error :: errors, results)
case Right(result) => (errors, result :: results)
}
}
listOfEither.foldLeft((List.empty[L], List.empty[R])) {
case ((errors, results), x) =>
x.fold(_ :: errors, _ :: results)
}

Wlad
25.04.2017
07:49:48
Здаров мужики. Кто пробовал писать на скале под андроид? У вас получилось подружить андроид студию с sbt?

Andrey
25.04.2017
07:50:39
@notxcain спасибо!