@scala_ru

Страница 1155 из 1499
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
Вася, а сколько у тебя акторов?))
ну вот, началось )) в моём проектике их штук 5 разновидностей

sherzod
19.12.2017
07:09:25
норм

Oleg
19.12.2017
07:10:50
более того там есть andThen
Если две PartialFunction связать через andThen ничего хорошего не получится

sherzod
19.12.2017
07:12:51
Не обязательно делить на акторы, (подсказка у PF есть orElse)
чёт, да простенько, можно же описать все вне receive

Aleksei
19.12.2017
07:12:59
Если две PartialFunction связать через andThen ничего хорошего не получится
я просто намекнул что есть возможность. логгировать, например чо там прилетело. там же выходит PF[Any, Any] andThen PF[Any, Unit] что сам по себе такое

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

Aleksei
19.12.2017
07:14:29
ну типа того

как инструмент при отладке, не более того

Oleg
19.12.2017
07:14:55
1-2 обычно
String + Map[String, Any] ?

Google
sherzod
19.12.2017
07:15:06
тоже интересная мысль

а почему только для отладки?

Andrey
19.12.2017
07:15:34
String + Map[String, Any] ?
Нет, просто 95% акторов маленькие и делают что-то одно)

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
Как твой акка кластер

Или лучше мой

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

Grigory
19.12.2017
08:40:26
Народ можно как то из класса получить доступ к параметрам build.sbt без плагинов?
сгенерить файл и положить в него то что тебе хочется

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

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

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
я думаю ты хочешь в content записать T а не Message[T]. И writes тебе нужен для T а не для Message[T]
он хочет свой класс extend'ить от этого трейта и чтобы все его поля попадали в json

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: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
Все операции, которые надо производить над единицой mutable state - все в одном акторе
Если есть допустим User и у него есть набор операций: - купить - продать - изменить данные На каждую операцию - один тип И все типы обрабатываются одним актором

sherzod
19.12.2017
09:47:44
ну да, принципы те же что и обычно

но я понял акцентирование на неделимость стейта

но я думаю что это такой, объектно ориентированный взгляд. в системе акторов можно же стейт в других разрезах рассматривать.

Alex
19.12.2017
09:52:03
но я думаю что это такой, объектно ориентированный взгляд. в системе акторов можно же стейт в других разрезах рассматривать.
> в системе акторов можно же стейт в других разрезах рассматривать. Это уже как душе угодно. Но в итоге получится что есть кусок mutable state, который надо атомарно менять набором каких-то операций.

Акторы же не какая то магия - это всего лишь одна из абстракций, которая позволяет работать с 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
с душой

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