@scala_ru

Страница 500 из 1499
Alexander
16.02.2017
11:38:40
Чо, никто Скала биндинги для тензорфлоу писать не задумал?

Grigory
16.02.2017
11:39:41
скала враппер вокруг джава биндингов?

Alexander
16.02.2017
11:43:09
Ага, чтобы всё на монадах и реактивное.

Google
Oleksandr
16.02.2017
11:54:10
зачем, если есть DeepLearning4S
потому что он говно

Oleg
16.02.2017
11:54:24
потому что он говно
а, не подумал, спасибо

Oleksandr
16.02.2017
11:56:22
не пробовал, правда

Oleg
16.02.2017
11:57:41
Вообще можно написать нормик на scala-native

Чтобы был чайниковый как theano

Daniel
16.02.2017
11:58:59
scala-native уже настолько готов, что можно под него готовые решения писать?

Oleksandr
16.02.2017
11:59:58
ml не та область, где нужна типизация и все такое

Oleg
16.02.2017
12:00:17
scala-native уже настолько готов, что можно под него готовые решения писать?
для меня вполне готов, чтобы начать писать либу

Alexander
16.02.2017
12:01:29
А зачем Scala native если есть Раст?

Oleg
16.02.2017
12:01:36
ml не та область, где нужна типизация и все такое
ML не та область, где нужно думать и всё такое

А зачем Scala native если есть Раст?
а зачем Раст, если есть Golang

Anton
16.02.2017
12:03:00
а зачем Раст, если есть Golang
Зачем Golang если есть Rust

Google
Oleg
16.02.2017
12:03:17
Зачем Golang если есть Rust
а зачем rust, если есть scala-native

Nikolay
16.02.2017
13:35:39
https://groups.google.com/forum/m/#!topic/play-framework/imf51EsYU08

кто-нибудь знает причину перехода на akka http? как-то не следил за этим

Oleg
16.02.2017
13:38:24
Основная причина: это домашний проект Lightbend

Побочная причина: play-iteratees такие сложные и медленные, давайте перейдём на akka-stream. Ой на стримах ещё медленнее, потому что всё так ништяково было заточено под Netty..., давайте перейдём на akka-http

Oleg
16.02.2017
13:43:12
Полуосновная причина: в апи, заточенном под play-iteratees, java-кодеру делать нечего. А продавать свой лагом-стек как-то надо

Nikolay
16.02.2017
13:54:23
кто-нибудь сталкивался с задачей построения по akka-http роутам их описания, но чтобы без кучи аннотаций, как в swagger-akka-http?

Nikolay
16.02.2017
13:58:29
и она решается?

Oleg
16.02.2017
13:58:38
да

Nikolay
16.02.2017
13:58:53
в каком направлении стоит копать?

Oleg
16.02.2017
14:02:27
в каком направлении стоит копать?
Есть два подхода. Мой коллега занимается клонированием routes\directives, так, чтобы они говорили о результирующем типе. Я строю type-level DSL a la Servant (Haskell).

Раньше было стрёмновато, потому что Servant был стрёмноватый, но теперь всё делается через Witnessы через специальные конструкции, по которым даже не скажешь сходу, что они оперируют типом

Одна толстая часть библиотеки проходится по типам и собирает Route

И прицепляет к импрементациям

Вторая собирает некую структуру, которая отдается как swagger.json

Мой подход норм работает, уже потестил, понагружал

Nikolay
16.02.2017
14:05:35
> Я строю type-level DSL a la Servant (Haskell). описание роутов что-то типа HList-ы из которых можно собрать описание?

Oleg
16.02.2017
14:06:50
> Я строю type-level DSL a la Servant (Haskell). описание роутов что-то типа HList-ы из которых можно собрать описание?
нет вот конкретно такое def concat = prefix("concat") :> queryParam[String]('left) :> queryParam[String]('right) :> Get[String] def combine = prefix("combine") :> queryParam[Client]('x) :> capture[Int]('y) :> Get[Combine] def stats = prefix("stats") :> ReqBody[Vector[BigDecimal]] :> Post[StatsRes] def api = tagPrefix('test) :> (concat <|> combine <|> stats) все HList ы \ Coproduct ы спрятаны

Google
Oleksandr
16.02.2017
14:06:59
https://groups.google.com/forum/#!topic/scala-user/iI4u3Xqs5K0 обсуждали уже?

Alexey
16.02.2017
14:08:54
Oleg чем финч не ок? NIH?

Oleg
16.02.2017
14:09:36
Oleg чем финч не ок? NIH?
Потому что akka-http

А этот finch swagger собирает?

я так вижу Open https://github.com/finagle/finch/issues/73

так что нерелевантно

Nikolay
16.02.2017
14:11:30
> Мой коллега занимается клонированием routes\directives а это что за подход? где-то можно взглянуть?

Oleg
16.02.2017
14:12:19
> Мой коллега занимается клонированием routes\directives а это что за подход? где-то можно взглянуть?
Нет. У нас тут банк, безопасность. Не факт, что можно будет посмотреть когда-либо. Но если мой будет оттверкнут коллегами, я обязательно опубликую

Nikolay
16.02.2017
14:12:59
а в кратце? имеется в виду что это форк akka-http dsl?

Oleg
16.02.2017
14:15:04
а в кратце? имеется в виду что это форк akka-http dsl?
Нет, это директивы, которые выглядят точно так же, как обычные, но с дополнительным HList ом, куда складываются все пути\имена\результаты, по которому уже потом строится сваггер

Т.е. туда можно воткнуть обычную директиву, если она никак не влияет на мета-информацию

Oleg
16.02.2017
14:16:08
Либо "помеченную", если она что-то добавляет

Третий вариант, конкретно для akka-http - это на базе конкретно akka-streams

Т.е. придумать свои stage для каждой компоненты пути, содержащие мета-инфу

В потом в сервер передавать просто Flow[HttpRequrst, HttpResponse, NotUsed]

А для сваггера обходить тот же граф и добывать мета-инфу

Мы его поверхностно обсуждали, но не брались реализовывать

Google
Oleg
16.02.2017
14:21:47
звучит интересно
Ну минус тот же, что и у akka-http. Реализация жёстко привязана к определению сервиса

У меня можно на вход подать trait, макрос его разрежет на куски, подберёт по именам параметры, проверит, что типы подходят, и подаст следующему этапу, который будет искать ToResponseMarshallable для возвращаемых типов

Vasily
16.02.2017
14:23:31
Первый подходящий подберет?

Oleg
16.02.2017
14:23:52
Первый подходящий подберет?
Подберёт по правилам имплиситов

Vadim
16.02.2017
14:24:03
Oleg последний коммент в ишью Something amazing happened! https://twitter.com/wing328/status/825564638393704448 It's now possible to generate Finch server stubs out of Swagger API definitions. Amazing work by @jimschubert and @wing328!

а тебе же обратное действие надо

Admin
ERROR: S client not available

Vadim
16.02.2017
14:25:16
не то

Oleg
16.02.2017
14:25:16
Oleg последний коммент в ишью Something amazing happened! https://twitter.com/wing328/status/825564638393704448 It's now possible to generate Finch server stubs out of Swagger API definitions. Amazing work by @jimschubert and @wing328!
Ну если честно, даже не рассматривали. Тут ценность akka-http выше ценности swagger Важно, чтобы эти routes вписывались в наши разработки

Vasily
16.02.2017
14:26:41
Подберёт по правилам имплиситов
А дефолтные роуты есть?

Oleg
16.02.2017
14:27:40
дефолтные роуты - это что? 404?

Смотри, в результате ты всё склеиваешь и получаешь Route, с которым потом делаешь, что хочешь

Просто на основании того же типа ты можешь получить не только Route а ещё и Swagger

Vasily
16.02.2017
14:31:12
Дефолтный - это если тебе лень для пачки однотипных контроллеров прописывать правила, и ты пишешь типа одно правило, которое автоматом мапит роуты типа controller/action/id

Nikolay
16.02.2017
14:35:36
Oleg чем финч не ок? NIH?
в finch легко достать описание из endpoint-ов?

Alexey
16.02.2017
14:36:23
я не знаю. просто из того примера что был сначала показан был виден просто composable http dsl.

Vadim
16.02.2017
14:37:05
ну типы там есть. но стороковые не тэгируют - так что в таком виде не получится

хотя если по-плохому - всегда можно поднять и в рантайме нагенерить

Diemust
16.02.2017
14:51:31
а можно ли сделать case object из инстанциированного case class'a, типа этого неправильного кода, из которого понятно примерно, что я хочу case object EmptyStat extends Stat(false, false)

Google
Oleksandr
16.02.2017
14:52:18
а зачем именно object?

val EmptyStat = ...

Oleg
16.02.2017
14:52:44
кто-нибудь сталкивался с задачей построения по akka-http роутам их описания, но чтобы без кучи аннотаций, как в swagger-akka-http?

Diemust
16.02.2017
14:53:23
val EmptyStat = ...
ну я так и сделал в итоге, но сначала пришла такая идея, мало ли можно

Oleksandr
16.02.2017
14:54:27
ну я так и сделал в итоге, но сначала пришла такая идея, мало ли можно
ну если очень надо, то можно, макросом создать утку, которая крякает, как object -- со всем нужным поведением, выдранным из кейс класса

Aleksey
16.02.2017
14:54:39
Буде ошибка что-то там кейс-ту-кейс инхеританс нот эвэйлэбл.

Если просто object, без case то вроде можно

Oleg
16.02.2017
14:55:45
а можно ли сделать case object из инстанциированного case class'a, типа этого неправильного кода, из которого понятно примерно, что я хочу case object EmptyStat extends Stat(false, false)
sealed abstract class Stat(val x: Boolean, val y: Boolean) final case class StatusOf(override val x: Boolean, override val y: Boolean) extends Stat(x, y) case object EmptyStat extends Stat(false, false)

Diemust
16.02.2017
14:59:03
в этом варианте, как я понимаю, EmptyStat незаматчится, если мы пошлем StatusOf(false, false)

да в целом и пофиг

folex
16.02.2017
15:00:14
@diemust можно просто object с unapply попробовать

и там сравнивать по полям, тогда сматчится

Vadim
16.02.2017
15:01:19
или 4 конкретные реализации под abstract class Stat

Diemust
16.02.2017
15:02:05
ладно, проще val заюзать

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