
Nikolay
11.12.2017
13:53:23
интересно, появятся новые json библиотеки с альтернативным подходом с выходом dotty

Oleksandr
11.12.2017
13:53:25
специально, чтобы не задеть всю кодовую базу

Igor
11.12.2017
13:53:45

Google

Igor
11.12.2017
13:53:48
спасибки :)

Александр
11.12.2017
14:12:53
обидно, что на проде копался и самый смак пропустил

Валєрій Валєрійович, сильний і умний мужичок.
11.12.2017
14:14:06
шо опять?!

A
11.12.2017
14:14:20
россия для русских, италия для итальянских!

Daniel
11.12.2017
14:14:23

Oleksandr
11.12.2017
14:14:30

Mikhail
11.12.2017
14:18:05
зря вы. давайте лучше про иммутабельную собаку
Считать, что собаку можно выразить в коде - заблуждение. Все что нам известно это лишь некоторые факты из прошлого о собаке на основании которых мы строим eventually consistent представление о ней

Nikolay
11.12.2017
14:18:35
согласен

Daniel
11.12.2017
14:19:06
собака и в обыденной нашей жизни лишь тень на стене

Александр
11.12.2017
14:19:52
как выглядит тень собаки когда никто не смотрит на стену ?

Kirill
11.12.2017
14:20:17
весь день разговоров о Павлове

Google

Александр
11.12.2017
14:21:21
на небе тоже
я тут по папочкам пошерстил, оказываеться что собака одно время игры стримил, но это не долго и не точно

Dmitry
11.12.2017
14:22:24
Лишь бы не камхорил

Alexey
11.12.2017
14:22:58

Александр
11.12.2017
14:23:25
ищущий да обрящет

Mikhail
11.12.2017
14:24:51

Igor
11.12.2017
14:33:27
А делал ли тут кто-нибудь что-то типа языка описания запросов к произвольным данным (допустим, что нам не известен их формат, но они приводимы к json, то есть не картинки, видео, тексты сплошные, а все-таки что-то структурированное), или может быть что-то такое уже есть, спецификации там какие-нибудь?

A
11.12.2017
14:34:11
кажется ты описываешь лисп )

Alexey
11.12.2017
14:37:55

Igor
11.12.2017
14:41:13
ну должна быть хотя бы какая то граматика
А, туплю. Начал печатать и понял, что мне нужно. Лол.
Суть в том, что разнородные данные раскидываются на коллекции, что позволяет при наличии схемы (не суть принципиально, что динамически генерируемой) использовать набор селекторов на конкретные составные части выборки. Их однородность в рамках коллекции и жесткое соответствие этой схеме позволят мне получать удовольствие (читать: не выколоть себе глаза глядя на многотомник доков) при кодинге этого треша.

KrivdaTheTriewe
11.12.2017
14:53:13
мем про собаку сюда добрался(

Павел
11.12.2017
15:22:57
Это похоже на какой нибудь graphql

KrivdaTheTriewe
11.12.2017
15:58:33
егор там ушел в терминальный экстаз

Александр
11.12.2017
15:59:54

KrivdaTheTriewe
11.12.2017
16:00:30
https://twitter.com/backendsecret

Igor
11.12.2017
16:21:54
А можете подсказать еще такой момент. Как в скале делается такая вот тема из котлина:
class Builder private constructor() {
constructor(init: Builder.() -> Unit): this()
}
т. е. DSL билдеры выполненные в Groovy-style?
То есть, кхм, есть ли тут что-то, что можно обозвать контекстуальной лямбдой, что-ли, где в явном виде параметр не присутствует, но доступна внутри нее ссылка на контекст через this

Igor
11.12.2017
16:24:27
Подожди Scala 3.0 - все будет

Igor
11.12.2017
16:25:03
Океюшки :) То есть сейчас таких ништяков нету?

Oleksandr
11.12.2017
16:26:14

Google

Igor
11.12.2017
16:29:24
Я так понимаю, он хочет чего-то типа:
html {
head {
title("some page")
}
body {
div()
div()
}
}

Oleksandr
11.12.2017
16:30:59
и это типа генерит хтмл?
если да, то в скале это делается кучей способов

Igor
11.12.2017
16:31:05
что-то такое: https://gist.github.com/komigor/1277e978e0e81b92ac09630089797485

Oleksandr
11.12.2017
16:34:04
что имеется в виду?

Alexander
11.12.2017
16:35:58
Уважаемые, а Монокль быстрее Шейплесовских линз работает?

Igor
11.12.2017
16:37:41
Минимальный пример: https://gist.github.com/komigor/1277e978e0e81b92ac09630089797485

Oleksandr
11.12.2017
16:42:35

Igor
11.12.2017
16:43:28

Oleksandr
11.12.2017
16:44:20
фраза "неявной передаче контекста" прямо-таки напрашивается на использование implicit-ов :)

Igor
11.12.2017
16:51:02
это просто не совсем то, но в принципе заменить одно другим плюс-минус можно.

Oleksandr
11.12.2017
16:52:00
насколько я понял хотелку, то имплиситы предоставляют более мощный функционал, но для достижения конкретно искомой функциональности нужно немного поприседать
мб есть уже готовые сниппеты для облегчения "приседаний", хотя это не особо популярная задача в скале — дсли обычно строят иначе

Oleg
11.12.2017
16:54:28

Oleksandr
11.12.2017
16:57:04
а есть ли хаки для описания "список обьектов без общего трейта, но из одного тайпкласса" ?

Alexander
11.12.2017
16:57:35

Oleksandr
11.12.2017
16:58:29
trait T[W]
class A
class B
implicit val ta = new T[A] {}
implicit val tb = new T[B] {}
val a1 = new A
val b1 = new B
def foo[W: T](ws: Seq[W]) = ???
foo(Seq(a1)) // ok
foo(Seq(a1, b1)) // error, reduced to Seq[Object], no T instance

Nikolay
11.12.2017
16:58:30
в смысле в списке должны быть только объекты, для которых есть инстанс нужного тайпкласса?

Oleksandr
11.12.2017
16:58:43

Google

Oleg
11.12.2017
16:59:15

Nikolay
11.12.2017
16:59:57
foo(Seq(a1, b1)) // error, reduced to Seq[Object], no T instance
а что хотелось бы получить?

Alexander
11.12.2017
17:00:23

Nikolay
11.12.2017
17:00:25
а, я понял

Oleksandr
11.12.2017
17:00:40
думаю, могу слегка переделать код и избавиться от такой задачи, но интересно, реально ли так извернуться

Admin
ERROR: S client not available

Nikolay
11.12.2017
17:02:32
мне кажется можно сделать как тут https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/Show.scala
https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/Show.scala#L52
там тоже множество аргументов, для которых определен Show, и они приводятся к Shown

Diemust
11.12.2017
17:04:06

Nikolay
11.12.2017
17:04:22
в 0.9.0 попроще было кстати https://github.com/typelevel/cats/blob/v0.9.0/core/src/main/scala/cats/Show.scala

Diemust
11.12.2017
17:04:27

Oleksandr
11.12.2017
17:04:32

Oleg
11.12.2017
17:07:16
и дальше там Cell[Monoid](List(1,2,3))

Oleksandr
11.12.2017
17:09:21
Интересно, а frAction что должен принимать?
trait T[W] {
def doAction(w: W)
}
...
implicit val ta = new T[A] {
def doAction(a: A): Unit = {}
}
implicit val tb = new T[B] {
def doAction(b: B) = println(b)
}
...
def foo[W](ws: Seq[W])(implicit t: T[W]) = {
ws.foreach(w => t.doAction(w))
}
(в конкретных инстансах тайпкласса можно юзать классоспецифичные методы)

Diemust
11.12.2017
17:10:42
Лесу бы не написать имплисит классы тогда, которые приводят классы в списке к тому, что может сожрать трейт Т?

Oleksandr
11.12.2017
17:10:58
ну это слишком просто

Google

Oleksandr
11.12.2017
17:11:12
и как раз это в примере выше с котами делается

Oleg
11.12.2017
17:19:58

Oleksandr
11.12.2017
17:40:47
поправил(пишу с таксофона)
вроде распарсил
если правильно все понял, то это не совсем то, что хочу — https://gist.github.com/Dveim/084091de1e98ebd980a8b7459b58281c

Oleg
11.12.2017
17:44:13

Oleksandr
11.12.2017
17:50:35
во-первых не Cell(List), а List(Cell, Cell))
Во вторых можно сделать материалайзер для такого боксенного значения макросом или специализировать вручную.
Дело в том, что тайпкласс, содержащий метод, в котррм есть хотя бы два параметра типа T будет уже нереализуем для чистого Cell[TC]
ага, дошло наконец, спасибо
по сути, это развитие идеи "общего трейта"
да, в моем случае без макросов не обойтись, что, возможно, является критичным

Alexander
12.12.2017
10:36:27
юзал кто https://github.com/aws4s/aws4s ?

f1yegor
12.12.2017
11:02:30
как сказать sbt 1.0.4 какую версию scala использовать для plugins?

Alexander
12.12.2017
11:05:49
по-моему там 2.12 без вариантов, как и для самого sbt

Alexey
12.12.2017
11:06:07
выбора вроде никогда не было

Alexander
12.12.2017
11:06:24
выбор иллюзорен, как и сам выбирающий

f1yegor
12.12.2017
12:03:44
а что делать с плагинами которые под 2.12 не собраны?

Nikolay
12.12.2017
12:04:25
Использовать 0.13

Daniel
12.12.2017
12:30:18
Andriy Plokhotnyuk @plokhotnyuk 15:11
ребята, кому-нить нужен быстрый парсер и сериализатор JSON? в среднем обгоняет Jackson раза в 2, Circe раза в 4, Play-JSON раз в 8: https://github.com/plokhotnyuk/jsoniter-scala
в полку прибыло

Aleksei
12.12.2017
12:30:38
Кривда накаркал

A
12.12.2017
12:33:25
за счёт чего обгоняет то?

Denis
12.12.2017
12:33:42
хз как можно в трезвом уме сделать имя пекаджа с подчеркиванием
https://github.com/plokhotnyuk/jsoniter-scala/blob/master/core/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/UnsafeUtils.scala