Size: a a a

Scala User Group

2020 August 27

Oℕ

Oleg ℕizhnik in Scala User Group
источник

D

Daniel in Scala User Group
Олег, перед тобой же уже извинились, не эскалируй
источник

K

Kai in Scala User Group
Хмм, я думал про скала 3 просто риторический вопрос дальше уже про то что реальная проблема на скале 2 https://t.me/scala_ru/286799
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну заэнкодить всё равно можно и на скала 2 всё то же. Можно только верхний баунд оставить, например у абстрактного типа
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Зависит от того ,что нужно
источник

AN

Artem Nazarenko in Scala User Group
Коллеги, подскажите пжл как можно в akka streams реализовать такой паттерн:
- аккумулируем информацию из батча сообщений кафки (например из 1000)
- по истечении таймаута или превышении размера батча сплашим инфу в какое-нить хранилище
- после этого коммитим в кафку

Важно: таймаут нужно проверять не при поступлении сообщений, а отдельно, т.к. между сообщениями может быть большой перерыв. Например,
timeout=10минут
batchSize=1000  
если мы по истечении 2-х минут собрали 3 сообщения, а потом новых сообщений не приходит 20 минут, то на 10-й минуте мы обязаны сделать сплаш 3-х сообщений и перезапустить батч.

Делаю вот таким образом:
источник

AN

Artem Nazarenko in Scala User Group
источник

AN

Artem Nazarenko in Scala User Group
но не прохожу типизацию на этапе материализации
источник

AN

Artem Nazarenko in Scala User Group
val kafkaRecords = Consumer.committableSource(kafkaConsumerSettings, Subscriptions.topics(input_topic))
   val ticks: Source[String, Cancellable] = Source.tick(1.second, 1.second, "tick")
   control = Source.combine(kafkaRecords, ticks)(Merge(_)).map {
     case msg: CommittableMessage[String, String] => {
       Batch.add(msg)
     }
     case _: String => {
       Batch.tick()
     }
   }.filter(_.isReady())
     .map(_.flush().committableOffset)
     .toMat(Committer.sink(committerSettings))(DrainingControl.apply[Done])
     .run()
 }
источник

VS

Vladimir Sam in Scala User Group
Зачем Тревис[да-не-обижаюсь-я] Браун использует в автогенерации обертку над целевым типом?
https://github.com/circe/circe-generic-extras/blob/master/generic-extras/src/main/scala/io/circe/generic/extras/AutoDerivation.scala

т.е. вот этот Exported потом разворачивается в Decoder внутри LowPriorityImplicits в circe-core
могут быть ситуации, когда макрос попытается сработать до инициализации требуемых кодеков? Какие например?
источник

VC

Vadim ChelyshOv in Scala User Group
чтобы можно было комбинированно писать - auto + кастомные
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sam
Зачем Тревис[да-не-обижаюсь-я] Браун использует в автогенерации обертку над целевым типом?
https://github.com/circe/circe-generic-extras/blob/master/generic-extras/src/main/scala/io/circe/generic/extras/AutoDerivation.scala

т.е. вот этот Exported потом разворачивается в Decoder внутри LowPriorityImplicits в circe-core
могут быть ситуации, когда макрос попытается сработать до инициализации требуемых кодеков? Какие например?
стоит почитать мотивацию тут https://github.com/milessabin/export-hook
источник

Oℕ

Oleg ℕizhnik in Scala User Group
фактически эта обёртка - реимплементация export hook с помощью собственного макроса
источник

Oℕ

Oleg ℕizhnik in Scala User Group
что видно по коммиту, в котором эта обёртка появилась https://github.com/circe/circe/commit/5c7251f9dee7049d00bcc547006bc5dcdfee2a54#diff-154b837ace2bc4f5bb4d89d784b211dbL14-L15
источник

Oℕ

Oleg ℕizhnik in Scala User Group
т.е. идея в том, чтобы приоритет у них был ниже, чем у нормальных
источник

Oℕ

Oleg ℕizhnik in Scala User Group
когда они импортятся в авторежиме
источник

VS

Vladimir Sam in Scala User Group
ах жеж, я понял, если бы этого не было, порядок импортов становится важен
источник

VS

Vladimir Sam in Scala User Group
спасибо
источник

ЮБ

Юрий Бадальянц... in Scala User Group
А почему оно в архиве?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ненужно
источник