Size: a a a

Scala User Group

2020 December 21

GP

Grigory Pomadchin in Scala User Group
рибята, а ни у кого в идее не было пробелм на этапе анализа синтаксиса?

2020-12-20 18:58:05,633 [ 419812]  ERROR - aemon.impl.PassExecutorService - Could not initialize class derevo.intellij.DerevoDeriveInjector$ 
java.lang.NoClassDefFoundError: Could not initialize class derevo.intellij.DerevoDeriveInjector$
at derevo.intellij.DerevoDeriveInjector.needsCompanionObject(DerevoDeriveInjector.scala:12)
at org.jetbrains.plugins.scala.lang.psi.impl.toplevel.typedef.SyntheticMembersInjector$.$anonfun$needsCompanion$1(SyntheticMembersInjector.scala:146)
at org.jetbrains.plugins.scala.lang.psi.impl.toplevel.typedef.SyntheticMembersInjector$.$anonfun$needsCompanion$1$adapted(SyntheticMembersInjector.scala:146)
at scala.collection.ArrayOps$.exists$extension(ArrayOps.scala:684)
источник

AS

Andrey Sugak in Scala User Group
Grigory Pomadchin
рибята, а ни у кого в идее не было пробелм на этапе анализа синтаксиса?

2020-12-20 18:58:05,633 [ 419812]  ERROR - aemon.impl.PassExecutorService - Could not initialize class derevo.intellij.DerevoDeriveInjector$ 
java.lang.NoClassDefFoundError: Could not initialize class derevo.intellij.DerevoDeriveInjector$
at derevo.intellij.DerevoDeriveInjector.needsCompanionObject(DerevoDeriveInjector.scala:12)
at org.jetbrains.plugins.scala.lang.psi.impl.toplevel.typedef.SyntheticMembersInjector$.$anonfun$needsCompanion$1(SyntheticMembersInjector.scala:146)
at org.jetbrains.plugins.scala.lang.psi.impl.toplevel.typedef.SyntheticMembersInjector$.$anonfun$needsCompanion$1$adapted(SyntheticMembersInjector.scala:146)
at scala.collection.ArrayOps$.exists$extension(ArrayOps.scala:684)
Отключи экстеншн для дерева, он сейчас не совместим с идеей.
источник

GP

Grigory Pomadchin in Scala User Group
Andrey Sugak
Отключи экстеншн для дерева, он сейчас не совместим с идеей.
спасибо разобрался
источник

A

Aaa4 in Scala User Group
Господа,
а вот это
val bufferedSource: BufferedSource
можно проверить что подключенный ресурс закрыт?
ну в теории...
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aaa4
Господа,
а вот это
val bufferedSource: BufferedSource
можно проверить что подключенный ресурс закрыт?
ну в теории...
try {source.reader.ready ; true}
catch { case _ : IOException => false }
источник

A

Aaa4 in Scala User Group
Oleg ℕizhnik
try {source.reader.ready ; true}
catch { case _ : IOException => false }
мммм....
т.е. у ресурса ридер вызывать, блин я чот не подумал, спасибо.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Никогда не пробовал, только что исходники почитал.
источник

A

Aaa4 in Scala User Group
Oleg ℕizhnik
Никогда не пробовал, только что исходники почитал.
ну я прост с джавы, там try with resources Есть, а здесь нет, :(
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Здесь есть вместо этого cats.effect.Resource, zio.Managed и всякие fs2-nio, zio-nio
источник

Oℕ

Oleg ℕizhnik in Scala User Group
А scala.io.Source почти никто не пользуется, это что-то из прошлой эпохи
источник

Oℕ

Oleg ℕizhnik in Scala User Group
За исключением алгоритмических задачек
источник

A

Aaa4 in Scala User Group
Oleg ℕizhnik
За исключением алгоритмических задачек
да там просто пример был из той же эпохи видимо как csv читать, я нагуглил либу тотоши, но все же решил поделать по примеру, мне еще много чего в scala непонятно :)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aaa4
да там просто пример был из той же эпохи видимо как csv читать, я нагуглил либу тотоши, но все же решил поделать по примеру, мне еще много чего в scala непонятно :)
Ну в общем в скале сейчас практически весь прод асинхронный и в библиотеках есть такая штука
https://typelevel.org/cats-effect/datatypes/resource.html
https://zio.dev/docs/datatypes/datatypes_managed

Которая построена на более низкоуровневых операциях контроля
https://typelevel.org/cats-effect/typeclasses/bracket.html
https://zio.dev/docs/overview/overview_handling_resources

В жаве аналоги низкоуровневых операций тоже есть, в реакторе называется using, usingWhen
источник

Oℕ

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

A

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

Oℕ

Oleg ℕizhnik in Scala User Group
Aaa4
да там просто пример был из той же эпохи видимо как csv читать, я нагуглил либу тотоши, но все же решил поделать по примеру, мне еще много чего в scala непонятно :)
Вы можете на голом IO, ZIO написать, там везде есть операции типа https://javadoc.io/static/dev.zio/zio_2.13/1.0.3/zio/ZManaged$.html#fromAutoCloseable[R,E,A%3C:AutoCloseable](fa:zio.ZIO[R,E,A]):zio.ZManaged[R,E,A]
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Вот тут, вроде, есть готовые парсеры для csv https://fs2-data.gnieh.org/
источник

S

Simon in Scala User Group
Aaa4
ок.спс
Вообще есть автоклозабл в стандартной библиотеке: https://www.scala-lang.org/api/current/scala/util/Using$.html
Но он крайне редко нужен и читать файлы таки лучше не ридерами джавовыми, а чем-то поточным
источник

วโ

วลาดิสลาว โควาเลนโก🐝... in Scala User Group
Коллеги, а чому может в некоторых полурандомных местах в Doobie не срабатывать базовый инференс?
None.pure[ConnectionIO]

Иногда срёт вот таким
er
ror]  found   : doobie.free.connection.ConnectionIO[None.type]
[error]     (which expands to)  cats.free.Free[doobie.free.connection.ConnectionOp,None.type]
[error]  required: cats.free.Free[doobie.free.connection.ConnectionOp,Option[Example]]
[error] Note: None.type <: Option[Example], but class Free is invariant in type A.
[error] You may wish to define A as +A instead. (SLS 4.5)
[error]       case None => None.pure[ConnectionIO]
Лечится очень просто через Option.empty[Example].pure[ConnectionIO], и писать так не то, чтобы очень впадлу
просто интересно
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
วลาดิสลาว โควาเลนโก🐝
Коллеги, а чому может в некоторых полурандомных местах в Doobie не срабатывать базовый инференс?
None.pure[ConnectionIO]

Иногда срёт вот таким
er
ror]  found   : doobie.free.connection.ConnectionIO[None.type]
[error]     (which expands to)  cats.free.Free[doobie.free.connection.ConnectionOp,None.type]
[error]  required: cats.free.Free[doobie.free.connection.ConnectionOp,Option[Example]]
[error] Note: None.type <: Option[Example], but class Free is invariant in type A.
[error] You may wish to define A as +A instead. (SLS 4.5)
[error]       case None => None.pure[ConnectionIO]
Лечится очень просто через Option.empty[Example].pure[ConnectionIO], и писать так не то, чтобы очень впадлу
просто интересно
Это не дуби беда, это беда опшна
источник