@scala_ru

Страница 717 из 1499
Pavel
02.06.2017
11:25:38
для plain sql слик пушка

Andrey
02.06.2017
11:28:32
Слик вообще недооценен из-за нытиков... которые при малейшей проблеме сразу начинают "сложнаааааааа"

Arthur
02.06.2017
11:29:07
Если либа заставляет ide лагать на топовом маке

То мне кажется либа делает что-то не так

Google
Oleksandr
02.06.2017
11:29:35
ну лично мне слик не нравится из-за высочайшей концентрации втфов в сорцах

(что, увы, применимо где-то к трети скала либ)

Pavel
02.06.2017
11:30:07
у меня не топовый мак, но не лагает)

folex
02.06.2017
11:30:27
у нас тут от scalajs идея дохнет до 8миядерных ноутах

Pavel
02.06.2017
11:30:27
вообще странно что либа заставляет иде лагать

folex
02.06.2017
11:30:29
так что...

Pavel
02.06.2017
11:30:33
проблема то наверное не в либе

а в иде

folex
02.06.2017
11:31:02
Угу. Вот перестанет лагать, и нельзя будет сказать "вот котлин не лагает, а скала лагает"

Arthur
02.06.2017
11:31:19
Весь этот резолвинг имплисит дерьма очень сильно нагружал идею

Pavel
02.06.2017
11:31:44
ну а компилятор компилит это все без проблем

Nikolay
02.06.2017
11:32:07
у нас тут от scalajs идея дохнет до 8миядерных ноутах
я вообще сильно оценил недорогой рабочий десктоп после своей прошки, не самой новой.

Arthur
02.06.2017
11:32:15
Ну круто, жаль что компилятор за меня квери не напишет

Google
folex
02.06.2017
11:42:44
А то идея, и недорогой десктоп как-то не вяжутся

Andry
02.06.2017
11:43:39
Так но почему-то запрос не возвращает значения?

class Adapters(tag: Tag) extends Table[(Long, String, String,String,String)] (tag, "ADAPTERS"){ def id = column[Long]("ID", O.PrimaryKey) def uuId = column[String]("UUID") def name = column[String]("NAME") def adapterType = column[String]("ADAPTER_TYPE") def listenerURL = column[String]("LISTENER_URL") def * = (id, uuId, name, adapterType, listenerURL) } val adapters = TableQuery[Adapters] db.run(adapters.result).map(_.foreach { case (id, uuId, name, adapterType, listenerURL) => println(s"$id $uuId $name $adapterType $listenerURL") })

Делаю так получаю это defined class Adapters adapters: slick.lifted.TableQuery[Adapters] = Rep(TableExpansion) res0: scala.concurrent.Future[Unit] = List()

В табличке значения есть..

Nikolay
02.06.2017
11:50:42
оценил, уйдя с идеи всмысле?
нет. мощный макбук для комфортной работы стоит огого. десктоп на работе - 6-ядерный проц от AMD, 16 гигов оперативки и ssd-ха. и с такой конфигурацией работа в идее с скалой комфортная

folex
02.06.2017
11:51:09
а

Aleksei
02.06.2017
11:51:55
амд всегда печаль да =(

Grigory
02.06.2017
11:52:02
как они не стараются

folex
02.06.2017
11:52:13
а чо чем опечалил? интересно

Alexey
02.06.2017
11:52:33
может ryzen взлетит

Grigory
02.06.2017
11:53:52
они всеравно на средний сегмент на целелись

может цену собьют корам

Alexander
02.06.2017
12:24:56
запаблишили slick-cats в мавен: https://github.com/RMSone/slick-cats

Grigory
02.06.2017
12:30:43
?

Nikolay
02.06.2017
17:01:26
кто, знает, можно чтобы в circe ("a", 2).asJson == Json.obj("a" -> 2.asJson)

Alexander
02.06.2017
17:02:34
по-моему он туплы в Json.arr превращает, придётся написать свой Encoder

Nikolay
02.06.2017
17:02:55
да, так и есть

Google
Nikolay
02.06.2017
17:03:06
есть такая штука, но делает она не то

scala> ObjectEncoder[(Int, String)].apply((1, "foo")).noSpaces res4: String = {"_2":"foo","_1":1}

вот я имел в виду без написания своего encoder-а

implicit def fufuEnc[A <: String : Encoder,B: Encoder]: Encoder[(A, B)] = Encoder.instance { case(k,v) => Json.obj(k.toString -> v.asJson) } scala> ("a", 2).asJson == Json.obj("a" -> 2.asJson) res25: Boolean = true

так то да

Sergey
02.06.2017
17:11:34
запаблишили slick-cats в мавен: https://github.com/RMSone/slick-cats
пример использования есть? тип для чего это нужно вообще

Alexander
02.06.2017
17:12:34
для того, чтобы работать с DBIO как с M, как например здесь расписано http://blog.alexander-semenov.com/monadic-abstraction или здесь https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/

это к примеру, ну а вообще даже не скрывая DBIO, имея эти инстансы, можно делать всякие котячьи traverse, sequence и т.п., в общем использовать как монаду, аппликатив, MonadError и что-то там ещё

Sergey
02.06.2017
17:14:07
вау

Aleksei
02.06.2017
17:16:40
блин. но есть же дуби. я просто должен был это сказать.

Sergey
02.06.2017
17:29:01
для того, чтобы работать с DBIO как с M, как например здесь расписано http://blog.alexander-semenov.com/monadic-abstraction или здесь https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/
у нас подобная либа есть, но код почище выходит, типа for { user ← * <~ Users.findById(userId).mustFindOneOr404(User, userId) expired ← * <~ isPasswordExpired(user) result ← * <~ DbResultT.doOrGood(expired, sendExpiredPasswordEmail(email), SendNotificationResult.NotExpired) } yield result на выход либо результат, либо ошибка если таковая возникла

Alexander
02.06.2017
17:31:45
404 в db уровне выглядит странно, но это кому как

Sergey
02.06.2017
17:32:10
это не на db уровне, удобняшки добавленные сверху

Alexander
02.06.2017
17:33:49
тогда прдон

Nick
02.06.2017
17:45:44
Oleg бог типов, как ты с F[Either[_,_]] работаешь?

особенно интересно когда нужно закомбаинить два Either в один

Pavel
02.06.2017
17:55:21
тоже интересно

Daniel
02.06.2017
17:56:02
смотря что имеется ввиду под комбайнить

Pavel
02.06.2017
17:56:46
в for один запихнуть

Daniel
02.06.2017
17:57:20
у Either два параметра, и комбайнить захотется может либо по двум либо по одному

Google
Pavel
02.06.2017
17:58:05
тут either имеется в виду когда слева ошибка а справа то что нужно

и как бы нужно комбайнить только правые

типа F[Either[E, A]] и F[Either[E, B]] превратить в F[Either[E, С]]

Daniel
02.06.2017
17:59:23
это в 2.12 из коробки Either монада теперече

http://www.scala-lang.org/api/current/scala/util/Either.html

примеры прям в описании класса

Pavel
02.06.2017
18:04:52
окей, они сделали как в scalaz

блин, я забыл какая там проблема была, сча попробую вспомнить

Alexander
02.06.2017
18:13:31
в котиках есть EitherT

Nick
02.06.2017
18:21:59
это в 2.12 из коробки Either монада теперече
Мне скорее интересно когда один either зависит от другого

Kirill
02.06.2017
18:23:28
А в чем вопрос-то, что надо получить?

Daniel
02.06.2017
18:23:33
Bind?

Aleksei
02.06.2017
18:24:28
EitherT надо, уже ж сказали

Daniel
02.06.2017
18:25:25
пока вопроса не было такогочтобы трансформер понадобился

Daniel
02.06.2017
18:27:30
и чем флэтМэп не ответ?

Nick
02.06.2017
18:27:56
EitherT надо, уже ж сказали
Покеж, давай пример. Я прост в баре, не соображаю

Daniel
02.06.2017
18:28:42
> Я прост в баре, не соображаю лучше сначала включись, сформулируй хотелку а то все гаданиями занимаются

Pavel
02.06.2017
18:28:43
а я вспомнил проблему

сча еще раз проверю ее

Google
Aleksei
02.06.2017
18:31:25
и чем флэтМэп не ответ?
ну я хз, мне айзер трансформер ближе

Nick
02.06.2017
18:33:54
> Я прост в баре, не соображаю лучше сначала включись, сформулируй хотелку а то все гаданиями занимаются
for { x <- func (типа эт F[Either]) y <- func(x) типа тоже F[Either], но внутрь хочется x.right и чтоб если left то пропустить } yield (x,y)

Как то так, сложно с телефона писать

Daniel
02.06.2017
18:34:31
что значит пропустить?

Nick
02.06.2017
18:35:27
Ну не выполнять вторую функцию и вернуть left

Kirill
02.06.2017
18:35:43
это ли не есть обычные монады-трансформеры О_О или я ничего не понимаю

возьми EitherT[F, _, _] и все так и будет

Nick
02.06.2017
18:37:43
Ну эт не мои код конечно, но гляну

Daniel
02.06.2017
18:41:19
и блин чем это отличается от примера в доке скаловой?

scala> val e1: Either[String, Int] = Left("Dogz") e1: Either[String,Int] = Left(Dogz) scala> val e2: Either[String, Int] = Right(5) e2: Either[String,Int] = Right(5) scala> for { | a <- e1 | b <- e2 | } yield a+b res0: scala.util.Either[String,Int] = Left(Dogz)

Kirill
02.06.2017
18:45:16
EitherT[F, A, B] == F[Either[A, B]]

в скаловой доке все же без F[] над всем этим великолепием

Daniel
02.06.2017
18:46:35
И что дальше? Это к вопросу каким боком?

Kirill
02.06.2017
18:47:19
да кто его знает. Вопроса на самом деле-то не видно самого. Но кусок кода был с упомянутой F[] вокруг дизъюнкции

Konstantin
02.06.2017
19:01:30
всем привет, а как в телеграмме код форматировать?

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