
Alexey
06.12.2017
06:04:39
Товарищи, подскажите какие лимиты на длину типа? Тип насколько большой копродукт я смогу сделать?

Grigory
06.12.2017
06:10:32

Aleksei
06.12.2017
06:13:29

Google

Aleksei
06.12.2017
06:20:31
но у нас было так что метод собирал внутри себя копродукт, а эти 64кб я так понимаю строго ограничения на размер метода

Daniel
06.12.2017
06:22:01
https://github.com/finagle/finch/issues/670
кстати, да, в финче такое есть, говорят о порядке 70
но там свои классы, а не шейплез

Grigory
06.12.2017
06:23:08
думаю что в шаплезе тоже ~100

Alexey
06.12.2017
06:43:15

Grigory
06.12.2017
06:43:44
типа группировать

Alexey
06.12.2017
06:44:43
Да я подумывал о полностью типизированном html, но с такими ограничениями не прокатит

Grigory
06.12.2017
06:44:48
но взависимости от ошибки на которую напоришься я думаю можно будет подергать какиенить флаги компилятора
а

Alexey
06.12.2017
06:46:02
Типо описать всю приложуху через продукты/копродукты, но видимо не судьба

Daniel
06.12.2017
06:47:00

Alexey
06.12.2017
06:47:24

Grigory
06.12.2017
06:47:50

Google

Igor
06.12.2017
07:29:19
А интересно, iota здесь не поможет?
https://github.com/frees-io/iota

MIkhail
06.12.2017
07:39:28
Всем доброе утро!
подскажите, Iteratee в Play 2.2 какой-то ну оч ограниченый апи, как там отслеживали закрытие вебсокета раньше? в далеком 2012 +-
вот сиотрю, есть eofAndEnd, но это клиенту, а от клиен а?
на стековере пишут что map вместо onClose, но тогда коннект после первого же сообщения от клиен а и закрывается
или это так и надо, прочитал сообщение от клиента и сразу закрыл сокет??

Oleg
06.12.2017
07:41:53
Не слушай их
Но лучше не пытайся расширять этот пример в scastie

Vladimir
06.12.2017
07:45:06

Kirill
06.12.2017
08:00:35
пацаны, ваше мнение: предположим есть мониксовые таски, и есть примерно такой код:
val sideEff1: Task[Resource] = ??? // side effect operation reading the resource
val sideEff2: Task[Unit] = sideEff1.flatMap(resource => ...) // do something side-effect-ish with resource
??? // close resource no matter if sideEff2 was success or not
как правильно закрыть ресурс (если он был успешно открыт) вне зависимости от того, был ли успешно выполнен sideEff2 или нет?

Yuriy
06.12.2017
08:02:55
try finally?

Kirill
06.12.2017
08:03:24
Ну вопрос был как это сделать в рамках моникса и его тасок :)

Yuriy
06.12.2017
08:03:43
во флэтмапе

Kirill
06.12.2017
08:03:58
ммм, как вариант

Yuriy
06.12.2017
08:05:18
doOnFinish

Kirill
06.12.2017
08:05:21
Я думал, может быть можно как-то хитро сделать так, чтобы отделить закрытие от обработки, сходу придумал только мемоизировать sideEff1 и потом его использовать, но чёт це такое

Yuriy
06.12.2017
08:05:22
еще как вариант

Kirill
06.12.2017
08:05:38
doOnFinish на чём? Вторая таска возвращает Unit

Daniel
06.12.2017
08:06:59

Google

Oleg
06.12.2017
08:08:09
def withResourse[Res, A](provide: () => Res, close: Res => Unit)(task: Res => Task[A]): Task[A] =
for {
res <- Task(provide())
closeTask = Task(close(res))
result <- task(res)
.doOnFinish(_ => closeTask)
.doOnCancel(closeTask)
} yield result

Yuriy
06.12.2017
08:14:25
.flatMap(resource => Task { /*do domething*/ }.doOnFinish(_ => Task{ /*free resource async*/ }))

Denis
06.12.2017
08:14:59
open: Task[Res], close: Res => Task[Unit] ?
если уж быть чистым на все 100 )

Kirill
06.12.2017
08:15:43
да, всё так, я чёт поплыл немного с утреца, очевидный вариант проглядел
спасибо )

Oleg
06.12.2017
08:18:36

Denis
06.12.2017
08:18:50
whatever

Kirill
06.12.2017
08:40:17
А кто использует такие абстракции - таски/ио и иже с ними - насколько большую часть кода покрывает такой подход? Т.е. прямо всё с использованием тасков по всему коду, или только какие-то слои, работающие с сайд-эффектами, их отдают?

Denis
06.12.2017
08:41:54
Once you go `F[_]`you never go back.

Kirill
06.12.2017
08:42:53
даже так
а нужно ли это? то есть, если моя бизнес-логика, например, никак не связана с сайд-эффектами, а с ними связано только получение данных (например), зачем промазывать тасками вообще всё?

Denis
06.12.2017
08:44:28

Nick
06.12.2017
08:44:49

Denis
06.12.2017
08:45:56
даже если есть только один Task[Data] и функция pureLogic: Data => OtherData ты все равно получишь Task[OtherData]

Alexey
06.12.2017
08:56:28

Denis
06.12.2017
09:14:26
https://joyofhaskell.com

Google

Daniel
06.12.2017
09:16:14
Еще одна
Когда уж выпустят

Nikolay
06.12.2017
09:48:36
@dveim у меня еще один аргумент для перехода на более новую идею. в 2017.3 пофиксили вывод типов для shapeless.Generic и shapeless.LabelledGeneric. то есть когда делаешь Generic[Foo].to(Foo(1, "hello")), вывод типа в идее покажет не Repr, как раньше, а Int :: String :: HNil
правда не в такой записи, а ::[Int , ::[String, HNil]]

Oleksandr
06.12.2017
09:50:16
хм, ну для шейплесологов это аргумент, да

Admin
ERROR: S client not available

Oleksandr
06.12.2017
09:50:42
хотя они небось в енсиме пишут, а не в идее

Nikolay
06.12.2017
09:51:55
ну если не брать крайности, то немного shapeless кода тоже может быть в проекте
если circe используешь, какие-то вещи может быть полезно навелосипедить на шейплесе

Alexandr
06.12.2017
10:05:24

Nikolay
06.12.2017
10:07:06

Андрей
06.12.2017
10:10:36

Igor
06.12.2017
10:12:01

Grigory
06.12.2017
10:13:33

Александр
06.12.2017
10:14:22

Андрей
06.12.2017
10:14:52
хотя, я ж сидел на стабильном и сравниваю для своего скоупа

Grigory
06.12.2017
10:15:40

Sergey
06.12.2017
10:17:53

Alexandr
06.12.2017
10:21:40

Google

Alexandr
06.12.2017
10:27:49

Oleg
06.12.2017
10:52:40

Sergey
06.12.2017
11:09:36
а в VSCode для LSP есть что-то? @odomontois

Oleg
06.12.2017
11:09:55
они же его и разработали

Sergey
06.12.2017
11:10:29
точно, но не только для vscode

Oleg
06.12.2017
11:10:30
Но, конечно, нужен ещё плагин, который к нему цепляется и синтаксис подсвечивает

Sergey
06.12.2017
11:10:47
вот я про него спрашивал

Daniel
06.12.2017
11:12:03
Судя по всему там не то чтобы LSP http://eed3si9n.com/scala-language-server-using-sbt

Sergey
06.12.2017
11:20:30
https://marketplace.visualstudio.com/items?itemName=lightbend.vscode-sbt-scala вот еще что-то интересноe, требует правда sbt-1.1.0-RC1

Oleg
06.12.2017
11:22:01
https://developer.lightbend.com/blog/2017-11-30-sbt-1-1-0-RC1-sbt-server/#sbt-server

Sergey
06.12.2017
11:22:03
судя по changelog sbt для 1.1.0-RC1 не зря
sbt server feature was reworked to use Language Server Protocol 3.0 (LSP) as the wire protocol, a protocol created by Microsoft for Visual Studio Code.
ну и собсно https://developer.lightbend.com/blog/2017-11-30-sbt-1-1-0-RC1-sbt-server/#vs-code-extension от них же плагин

Evgeniy
06.12.2017
11:24:51
в енсайме скоро будет LSP https://github.com/ensime/ensime-server/pull/1888
уже вот к atom-у пробовали приделывать https://github.com/laughedelic/atom-ide-scala/pull/3
еще тут делают https://github.com/scalameta/language-server