
Vasiliy
19.12.2017
07:08:19

Aleksei
19.12.2017
07:08:28

Oleg
19.12.2017
07:08:32

Andrey
19.12.2017
07:08:47

Google

Aleksei
19.12.2017
07:08:54

Oleg
19.12.2017
07:08:59
А у Monoid есть combine

Vasiliy
19.12.2017
07:09:08

sherzod
19.12.2017
07:09:25
норм

Oleg
19.12.2017
07:10:50

Andrey
19.12.2017
07:11:31

sherzod
19.12.2017
07:12:51

Aleksei
19.12.2017
07:12:59

sherzod
19.12.2017
07:13:30
типа логирование (обработка всех типов), затем бизнес логика и тд

Aleksei
19.12.2017
07:14:29
ну типа того
как инструмент при отладке, не более того

Oleg
19.12.2017
07:14:55

Google

sherzod
19.12.2017
07:15:06
тоже интересная мысль
а почему только для отладки?

Andrey
19.12.2017
07:15:34

Grigory
19.12.2017
07:17:25
можно просто тогда тру фолс слать

Aleksei
19.12.2017
07:17:29
а почему только для отладки?
да хз. больше и не надо такого делать нигде было. когда уже потерял веру в код и решил сам себя проверить что там приходит в актор в ресив, вот только тогда и подумал про andThen

Luger
19.12.2017
07:17:54

Grigory
19.12.2017
07:18:14
"true" и "false"

Aleksei
19.12.2017
07:18:28
treu

Grigory
19.12.2017
07:19:19
flase

Aleksei
19.12.2017
07:19:26
truse

Luger
19.12.2017
07:20:15
truse
Нечёткая логика уже какая-то

Aleksei
19.12.2017
07:20:34
нечеткая это когда "almost true"
"not really true but can't say false too"
вот это нечеткая

Nick
19.12.2017
07:28:46
Вы что, до сих пор про Акку? Даже при Москаленко такого не было

Grigory
19.12.2017
07:32:59

Aleksei
19.12.2017
07:33:35
а я думал его отсюда забанили, поэтому он только в скала жобс пишет

Nick
19.12.2017
07:33:44
А его нету тут ?
Вот это поворот

Aleksei
19.12.2017
07:34:04
вроде есть

Google

Aleksei
19.12.2017
07:34:06
или нет
@CapDev ты тут?

Grigory
19.12.2017
07:34:44
тут он тут, он не пишет потому что все его коммнетарии обычно про акку да монгу были) и мы затралили его

Nick
19.12.2017
07:34:46
Ты не так зовёшь
Акка монга призываю @CapDev

Aleksei
19.12.2017
07:35:17
мы такие токсичные

Nick
19.12.2017
07:35:40
Да не, это большая любовь просто

Aleksei
19.12.2017
07:44:28
большая как кластер?

Nick
19.12.2017
07:45:42
Как твой акка кластер
Или лучше мой

Александр
19.12.2017
08:30:05

Vadim
19.12.2017
08:39:28
Народ можно как то из класса получить доступ к параметрам build.sbt без плагинов?

Grigory
19.12.2017
08:40:26

Vadim
19.12.2017
08:40:44
Что то такое ищу: https://stackoverflow.com/questions/8957025/sbt-including-the-version-number-in-a-program

Grigory
19.12.2017
08:41:27
http://www.scala-sbt.org/1.x/docs/Howto-Generating-Files.html

The mirror
19.12.2017
08:41:44

Grigory
19.12.2017
08:42:30
sourceGenerators in Compile += Def.task {
val file = (sourceManaged in Compile).value / "demo" / "Test.scala"
IO.write(file, """package core.utils
|object Info {
| val version = "%s"
| val name = "%s"
|}
|""".stripMargin.format(v, n))
Seq(file)
}.taskValue
^ пример как не только версию класть

Vadim
19.12.2017
08:43:02
Спасибо!

The mirror
19.12.2017
08:43:09
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion)
В рантайме напечатает что-то вроде:
name: blablabla, version: 1.3.1, scalaVersion: 2.11.11, sbtVersion: 0.13.16

Google

Vadim
19.12.2017
08:44:15
Супер думаю с этим справлюсь
Народ кому то приходилось автоматизировать развертывание aws labmda на Scala?

Alexey
19.12.2017
08:56:35
это не должно отличаться от джавы. собрал большой джар и запулил

Vadim
19.12.2017
08:57:49
собрал залил на s3, сейчас проблема сгенерировать cloudFormationTemplate и скормить в CF консоль

Andrey
19.12.2017
08:58:09
Господа, подскажите как разрешить такую проблему
trait Message[T] {
def version: Int = 1
def subsystemId: String = "system-1"
def writes: Writes[Message[T]]
final def json: JsValue = Json.obj(
"version" -> version,
"subsystemId" -> subsystemId,
"content" -> Json.writes(this)(writes)
)
}
Вот как должен быть описан trait Messages с T, что бы def writes заработал?
Или это как то проще можно сделать

Grigory
19.12.2017
09:00:11
можно добавить
implicit val jsonFormat: JsonFormat[T]
как поле трейта
тогда при создании его инстанса придется явно пихать его туда

Admin
ERROR: S client not available

Vladislav
19.12.2017
09:01:00
"content" -> Json.toJson(this)(writes)

Grigory
19.12.2017
09:01:31
а блджад не увидел;
а на что ругается? вроде все верно +-
: D

Andrey
19.12.2017
09:03:19
Да, там опечатка, toJson

Alexey
19.12.2017
09:04:13

Andrey
19.12.2017
09:08:23
Ругается, что недостаточно доказательств)
Error:(75, 22) No Json serializer found for type Message[T]. Try to implement an implicit Writes or Format for this type.
"payload" -> content
Error:(75, 22) not enough arguments for method content: (implicit ev: Message[T]])play.api.libs.json.JsValue.
Unspecified value parameter ev.
"payload" -> content
а... наверно достаточно будет снаружи implicit val: Writes, а внутри implicit def m[T](implicit t: T): Message[T]

Alexey
19.12.2017
09:10:55
я думаю ты хочешь в content записать T а не Message[T]. И writes тебе нужен для T а не для Message[T]

Sergey
19.12.2017
09:14:13

Alexey
19.12.2017
09:14:22
и вообще нужно не так сделать :) нужно сделать контейнер Message[T], и сделать implicit def writesForMessage[T: Writes]: Writes[Message[T]]

Google

Alexey
19.12.2017
09:14:57
ну, на это у меня один ответ - композиция а не наследование

Sergey
19.12.2017
09:17:29
да, но иногда нужно быть проще)

Andrey
19.12.2017
09:19:56
вот и вопрос, как сделать проще :)
В общем, да, композиция в очередной раз спасла отца русской демократии

Sergey
19.12.2017
09:40:18

Sergey
19.12.2017
09:44:05
trait Message[T <: Message[_]] extends DefaultJsonProtocol with NullOptions{
def version: Int = 1
def subsystemId: String = "system-1"
implicit def writes: JsonWriter[T]
def json: JsObject = JsObject(
"version" -> JsNumber(version),
"subsystemId" -> JsString(subsystemId),
"content" -> this.asInstanceOf[T].toJson
)
}
case class MyMsg(text: String, int: Int) extends Message[MyMsg]{
override implicit def writes: JsonWriter[MyMsg] = jsonFormat(MyMsg.apply, "text", "int")
}
но Дично я бы не стал так делать)

Alex
19.12.2017
09:45:27

sherzod
19.12.2017
09:47:44
ну да, принципы те же что и обычно
но я понял акцентирование на неделимость стейта
но я думаю что это такой, объектно ориентированный взгляд. в системе акторов можно же стейт в других разрезах рассматривать.

Andrey
19.12.2017
09:50:24

Alex
19.12.2017
09:52:03
Акторы же не какая то магия - это всего лишь одна из абстракций, которая позволяет работать с mutable state

sherzod
19.12.2017
09:53:52
да, да. я тоже об этом, что это абстракция чуть более низкоуровневая чем ООП

Alex
19.12.2017
09:54:34
Если надо location transparency и работа с mutable state - акторы збс!
Иначе есть другие варианты

Sergey
19.12.2017
09:57:16
Сегодня не пятница конечно, но ладно напишу...
Акторы это и есть true ООП
А то что сейчас считается ООП - лучше назвать ToolBox
Ящик с инструментами, каждый объект как инструмент, методы которого мы дёргаем.
Это как бы мёртвые объекты, которыми мы управляем снаружи.
А в акторной модели они живые, активные

Oleksandr
19.12.2017
09:58:12
с душой