
Dmitry
24.01.2018
11:00:54
инсерт не прошел
все, откатилось

Alexey
24.01.2018
11:05:25

Nikolay
24.01.2018
11:05:57

Google

Grigory
24.01.2018
11:06:07

Nikolay
24.01.2018
11:06:37
а вы что, думаете что перформанс просядет?

Grigory
24.01.2018
11:06:47
да не, булы вообще рудимент
только боксирование и фолды

Nikolay
24.01.2018
11:06:54
без костра - не тру

Oleg
24.01.2018
11:11:04

Ilya
24.01.2018
11:12:40
@odomontois Спасибо, буду пробовать

Ivan
24.01.2018
11:54:46
Как подружить Spray с LocalDateTime?
Error:(48, 44) could not find implicit value for evidence parameter of type JsonSupport.this.JF[java.time.LocalDateTime]
implicit val eventFormatter = jsonFormat2(Event)
Код Event:
case class Event(
startTime: LocalDateTime,
endTime: LocalDateTime
Код форматтера:
trait JsonSupport extends DefaultJsonProtocol with SprayJsonSupport {
implicit val eventFormatter = jsonFormat7(Event)
}

Nikolay
24.01.2018
11:55:34
нужно написать Format для LocalDateTime если его нет
или импортировать его, если он где-то уже есть

Ivan
24.01.2018
11:57:05

Google

Nikolay
24.01.2018
12:01:09
да, скорее всего

Oleg
24.01.2018
12:03:56
@odomontois monix - модно-молодежно?
насколько это продакшн реди вопрос

Nick
24.01.2018
12:05:47

Igor
24.01.2018
12:09:02

Kirill
24.01.2018
12:17:33

Dmitry
24.01.2018
12:18:09
ну ты собираешь огромную фрю
и исполняешь ее транзактором
тип

Kirill
24.01.2018
12:18:37
Делаете ли вы какой-то промежуточный слой абстракции для таких методов или прямо ConnectionIO возвращаете и наслаиваете?

Dmitry
24.01.2018
12:18:42
а что там делает транзактор зависит от него самого
но в поставке там все в транзакции


Kirill
24.01.2018
12:23:01
каких таких?
Для методов где надо логику отката транзакции группировать, ну например сделал два инсерта друг за другом, если хоть один зафейлился - откатываешь всю транзакцию, после этого сделал еще 3 таким же макаром, но уже например не откатываешь транзакцию, а делаешь что-то другое, это всё - connectionio которые друг на друга наслаиваются или там можно вот так вот как-то группировать и объяснять что вот здесь надо откатить а вот здесь по дефолту?
Для методов где надо логику отката транзакции группировать, ну например сделал два инсерта друг за другом, если хоть один зафейлился - откатываешь всю транзакцию, после этого сделал еще 3 таким же макаром, но уже например не откатываешь транзакцию, а делаешь что-то другое, это всё - connectionio которые друг на друга наслаиваются или там можно вот так вот как-то группировать и объяснять что вот здесь надо откатить а вот здесь по дефолту?
Вроде по докам я вижу, что .transact возвращает IOLite, которое, наверное, композируется, и таким образом можно транзакции так композировать?


Dmitry
24.01.2018
12:34:22
возвращает эффект
хочеш IOLite, хочешь Task
и да, эффекты можно композировать

a.
24.01.2018
12:34:54
IOLite же вроде из старых версий?

Google

Kirill
24.01.2018
12:35:11
Я не знаю, я открыл ссылку с житхаба, там 0.4 версия

Dmitry
24.01.2018
12:35:25
ну 0.4 норм

a.
24.01.2018
12:35:27
там две ветки

Dmitry
24.01.2018
12:35:27
но бери 0.5

a.
24.01.2018
12:35:32
лучше 0.5

Dmitry
24.01.2018
12:35:39
там уже cats-effect завезли

Kirill
24.01.2018
12:36:23
Ну короче говоря, эти эффекты, которые представляют собой разные транзакции, я могу скомпоновать, отлично

Oleg
24.01.2018
13:11:37

Igor
24.01.2018
13:16:07

Vadim
24.01.2018
13:17:09
господа,не могу в state монаду вкурить.Может у кого были такие проблемы?Есть рекомендации?

Daniel
24.01.2018
13:18:05

Vadim
24.01.2018
13:18:23
Ща подумаю

Vadim
24.01.2018
13:28:08
все,догнал.Сорян
чувство будто бы портал в ад открыл

Daniel
24.01.2018
13:29:19

Oleg
24.01.2018
13:39:16

Igor
24.01.2018
13:43:17

Oleg
24.01.2018
13:46:30
А что под ленивостью подразумеваете?
Значит, что таск и обсёрвабл - это не штука, которая начинает фигачить свою грязь как только ты её производишь.
Это некий чертёж реального эффекта\потока, который запустится, как только его найдёт экзекьютор.
Благодаря этому ты получаешь что-то типа referential transparency

sherzod
24.01.2018
13:48:22
можно пояснить, как ленивость даёт referential transparency

Anton
24.01.2018
13:50:07
Так же как IO монада — конструирование Observable не приводит к сайд эффектам, это просто описание вычисления.

Google

sherzod
24.01.2018
13:51:31
а да, понятно, внутри описанного графа у нас есть RT
вообще, что-то в голове сложилось сейчас, то есть всегда когда мы можем описать граф вычислений, без зависимости от того когда и как эти вычисления будут производиться мы получаем RT

Eugene
24.01.2018
13:57:15
ну если функция выкидывает exception, то она уже не RT, хотя ни от кого не зависит

sherzod
24.01.2018
13:57:30
ну предполагая чистые функции, конечно

Eugene
24.01.2018
14:01:40
слушайте, есть идеи как паттерн Listener, когда кто-то постоянно висит и слушает событие и меняет внутренний var (например pub/sub в редисе или изменение ноды в зукипере) оформить в ФП стиле?
пока достаточно уродливый кусок кода выходит в прекрасном мире чистых функций

Anton
24.01.2018
14:02:32
Похоже на концепцию агентов: https://doc.akka.io/docs/akka/current/agents.html

Admin
ERROR: S client not available

Anton
24.01.2018
14:02:51
Только в Akka они задепрекейчены и не очень “ЭфПэ”.

Eugene
24.01.2018
14:02:57
Agents have been deprecated
сразу в лицо )

Anton
24.01.2018
14:03:41
Но кажется это очень похоже на неблокирующий MVar. Самом недавно о чем-то таком думал, может общественность знает как такая штука может называться?
Хотя если тебе нужно просто получать update по мере доступности, то это MVar и делает.
А мне как раз интересен пример похожий на Agent — асинхронная переменная a la MVar, которая упорядочивает чтения и записи, но не блокирует их.

Vladimir
24.01.2018
14:12:30

Alex
24.01.2018
14:12:41
стрим походу да

Vladimir
24.01.2018
14:13:00
т.е. тот же Source.fromQueue или как оно сейчас модно в акке

Anton
24.01.2018
14:13:33
Я знаком только с акковскими но у них жопаболь с взаимодействием с материализованным стримом.

Alex
24.01.2018
14:13:45
дык тот же моникс или fs2

Denis
24.01.2018
14:13:48
там нельзя просто фигачить offer

Anton
24.01.2018
14:14:06
То есть если очень хочется, то поприседать можно, конечно, но в душе свербит ощущение, что должна быть более простая абстракция, может быть в том же monix.

Google

Denis
24.01.2018
14:14:10
надо респектить протокол

Anton
24.01.2018
14:14:22
Но пока ничего подобного не видел.

Alex
24.01.2018
14:14:30
https://oss.sonatype.org/service/local/repositories/releases/archive/co/fs2/fs2-core_2.12/0.10.0-RC1/fs2-core_2.12-0.10.0-RC1-javadoc.jar/!/fs2/async/index.html

Anton
24.01.2018
14:14:50
С offer’ом норм, очевидно что нужно как-то ограничивать количество команд отправленных в переменную, чтобы не лопнуть по памяти.

Vladimir
24.01.2018
14:14:55
на плее делал через такую схема адаптер из актора в sse, оно работало; глубже не лез

Denis
24.01.2018
14:15:09

Vladimir
24.01.2018
14:15:17
но это был старый плей и старая акка

Alex
24.01.2018
14:15:30
Signal вон: https://oss.sonatype.org/service/local/repositories/releases/archive/co/fs2/fs2-core_2.12/0.10.0-RC1/fs2-core_2.12-0.10.0-RC1-javadoc.jar/!/fs2/async/mutable/Signal.html

Denis
24.01.2018
14:15:40
там контракт что нельзя делать оффер, пока последний офферн не отработал вроде

Anton
24.01.2018
14:15:52

Denis
24.01.2018
14:16:37
ок

Anton
24.01.2018
14:20:18

Ivan
24.01.2018
14:59:02

Vadim
24.01.2018
15:51:49
Ребята не подскажете почему моя маленька фантазия не заработала?
trait Typed[T] {
def printType(): Unit ={
print(classOf[T])
}
}
Не хочет компелировать

Pavel
24.01.2018
15:54:48
classtag юзай

Vadim
24.01.2018
15:56:48
Да вот что то нарыл, но что то совсем не понятно

sherzod
24.01.2018
16:02:36
что-то такое. надо указать компилятору чтобы он засунул в рантайм инфу о типе
abstract class Typed[T: TypeTag] { def printType(): Unit = { print(typeOf[T]) } }