@scala_ru

Страница 583 из 1499
folex
29.03.2017
17:59:56
оО У меня только что билд билдился 14 минут, 10 из которых поднимался и скачивал зависимости sbt .___.

раньше такого не было

Nikolay
29.03.2017
18:00:37
Это хороший результат?

folex
29.03.2017
18:00:58
:D плохой

Google
folex
29.03.2017
18:01:31
обычно ~5 минут

Nikolay
29.03.2017
18:01:42
А sbt уже стояла?

folex
29.03.2017
18:01:52
нет, скачивало

Nikolay
29.03.2017
18:04:21
Я помню кто-то gist запилил, где coursier используется для выкачивания зависимостей sbt. Там хороший прирост в скорости первого запуска

folex
29.03.2017
18:04:44
о, интересно, поищу, спасибо

Nikolay
29.03.2017
18:04:47
paulp ваоде

Nick
29.03.2017
18:21:33
@aleksei_t походу если через макросы делать, то с циклическими зависимостями совсем все плохо)

Nikita
30.03.2017
05:55:49
> я вот такой брал для мелких экспериментов > https://github.com/scalaj/scalaj-http да, я его щас и использую. он хорош, но он синхронный. собственно и ищу ему замену но с Future'ами на выходе.

> и это намного гибче, чем play-ws. Особенно когда тебе ответ от сервера нужно именно стримить, а не держать весь батч в памяти akka'вский клиент overkill для моей задачи, даже без условия, что там вся akka со стримами приедет в зависимостях. он гибкий, но пользоваться им даже в akka больно. типа забыл закрыть стрим от данных в запросе и течёт память.

JFYI внимательнее посмотрел на все клиенты, о которых знал. в итоге пока лидируют dispatch (reboot вариант) и play ws. они похожи. в play ws используется shade всех зависимостей, что в моём случае плюс. в dispatch прямая зависимость от ning'а. новый dispatch ксати не так плох, там теперь не только криптографический DSL с добавлением данных в запрос, но и обычные методы типа add*. код нового dispatch в целом тоже ок, достаточно straightforward. может зря я и искал ему альтернативу :)

чисто стилистичекси dispatch синтаксис мне меньше нравится. и ещё он GPL v3, play ws - apache 2

Google
Юрий
30.03.2017
06:22:41
в какой-то момент просто на машине кончатся иноды

Nikita
30.03.2017
06:29:49
:/

он вообще не очень активный по коммитам. пока внедряю для тестов play ws, а там посмотрим

для тестов = для проверки

вот видимо эта бага: https://github.com/dispatch/reboot/issues/53

там и ещё есть какие-то текущие дискрипторы https://github.com/dispatch/reboot/issues/119

Nikita
30.03.2017
06:33:38
тогда в топку dispatch, play ws надеюсь армия play'водов уже отладила

> можно подробнее про "закрыть стрим" и "течёт память" я эксперементировал на ранних этапах с akka http client'ом, ,skf nfr

...

Юрий
30.03.2017
06:34:18
больше 3х лет прошло, а это не просто бага, а БАГА

и всем пофиг

Nikita
30.03.2017
06:35:10
... была такая проблема что если тело запроса, которое было в виде стрима не вычитать, то эти данные повисали. был тред в их mailist'е щас поищу.

что-то типа такого: https://github.com/akka/akka-http/issues/57#issuecomment-245636146 может конечно уже не актуально

Nikita
30.03.2017
06:38:32
уже не помню подробности, помню, что фиксилось не сложно. просто не самое простое поведение, которое ждёшь от http клиента.

но вроде помню, что на scala, если хотелось что-то типа http прокси, которая умно переливает данные загружаемые от пользователей поточно кусочками, без записи в память ... в таких сложных случая akka http client очень ок.

тогда все эти сложности имеют профит

Google
Nikita
30.03.2017
06:40:22
в моём случае респонс - менешь 1kb можно и в память сложит и даже пару раз скопировать, никто не заметит

Aleksei
30.03.2017
06:40:49
армия плееводов однажды забыла при рефакторинге play-ws добавить обработку параметра на keep-alive

так что если есть ружье, оно выстрелит

Nikita
30.03.2017
06:41:24
http://doc.akka.io/docs/akka-http/10.0.0/scala/http/implications-of-streaming-http-entity.html
полезная гайда, раньше такой не было :) видимо они устали отвечать на тупые вопросы в maillist'е

Lev
30.03.2017
06:43:03
Емнип, этот гайд появился как раз после обсуждения той особенности поведения

Oleg
30.03.2017
06:43:21
в моём случае респонс - менешь 1kb можно и в память сложит и даже пару раз скопировать, никто не заметит
ну получается, что всё фиксится использованием Http.singleRequest, т.е. для случая, когда тебе просто нужна фьюча проблем нет

однако, спасибо за эту issue

линейных типов этим стримам не хватает

Nikita
30.03.2017
07:10:00
так что если есть ружье, оно выстрелит
в смысле совсем забило? форсят закрытие коннекта или в чём беда?

Aleksei
30.03.2017
07:10:40
Забыли пробросить параметр для keep-alive )

Там что то типа таймаут ставишь

Aleksei
30.03.2017
07:11:14
И если воткнуть -1 то будет ждать бесконечно

А тут бац и этот -1 перестал работать

Nikita
30.03.2017
07:13:26
не пойму с какой стороны они это забыли? типа установка Connection: Keep-Alive заголовка в запросе? вроде по RFC в http1.1 keep alive предполагается по-умолчанию. или они не смотрят на keep alive заголовки в ответе от сервера, откуда приходит ответ и всегда делают новый конект?

keep alive с бесконечностью кстати, редко встречается. может даже RFC это запрещает. сервера обычно всё ж закрывают коннект через несколько секунд-минут.

Nick
30.03.2017
07:17:58
@aleksei_t лучше добавить правило меньше 200к бакинских в год не предлагать

Vadim
30.03.2017
07:55:33
Oleg а не знаешь в котах нету готового Eval.Later, который бы периодчески заново вычислялся?

Google
Oleg
30.03.2017
07:57:00
это не периодически, но дальше ты знаешь

Vadim
30.03.2017
07:57:06
мне типо кэша надо)

Oleg
30.03.2017
07:57:27
кеш с инвалидацией или зависимостью от времени - само по себе эффект

поэтому либо грязный Eval.always, либо своя правильно оформленная монадка

Admin
ERROR: S client not available

Vadim
30.03.2017
07:59:15
оке, пасиб)

Denis
30.03.2017
09:23:02
https://twitter.com/alexelcu/status/847112545026670593

Alexander
30.03.2017
10:00:03
А чем дата тайп от монады отличается?

Denis
30.03.2017
10:07:24
монада это тайп класс

дата тайп - просто тайп

тайп класс описывает типы у которых есть свойства характерные для этого класса

Alex
30.03.2017
10:24:34
монада это грубо говоря интерфейс

Alex
30.03.2017
11:11:23
тоже

Aleksey
30.03.2017
11:12:13
Может быть проще говорить что монада и функтор это алгебры?

Alexandr
30.03.2017
11:12:58
Да, точно

Alex
30.03.2017
11:14:01
по моему F-алгебра сразу тащит с собой тип данных

хотя нет, можно и параметризовать

почему не?

и где там что монада это не эндофунктор?

Google
Alex
30.03.2017
11:18:00
он говорит что не любая монада аппликатив, потому что как раз таки аппликатив типа не обязательно эндофунктор

не мог ганди такого говорить, я уверен!

Alexandr
30.03.2017
11:19:03
Значит, я неправильно понял. Такое вполне возможно. upd: почистил, чтобы не вводить в заблуждение.

Alex
30.03.2017
11:20:00
чо оставил бы народу почитать, все равно любопытные вещи

скину сам тогда :) https://vpatryshev.wordpress.com/2017/01/07/three-popular-fp-myths/

Alexandr
30.03.2017
11:20:44
Ну да, цикл надо было оставить. Чищу, потому что мусора и шума и так достаточно в сети

Alex
30.03.2017
11:21:14
на самом деле я почитал внимательно и именно там он другое говорит, но такой аргумент тоже есть :)

Aleksey
30.03.2017
11:27:45
Кстати, я уже наверно спрашивал, но забыл. Почему в догс лист инвариантный? https://github.com/stew/dogs

Grigory
30.03.2017
11:35:55
чтоб валилось (это только догадка конечно, может цели были более высокие): val list: List[Any] = List[Int](1,2,3)

Alex
30.03.2017
11:36:15
ну это из скалази пришло

там у них постоянно такие проблемы были

Aleksey
30.03.2017
11:43:35
Меня в этом деле вот что смущает: sealed trait Foo case object A extends Foo case object B extends Foo case object C extends Foo sealed trait Lst[A] case class Cons[A](head: A, tail: Lst[A]) extends Lst[A] case object Nl extends Lst[Nothing] val xs: Lst[Foo] = Cons(A, Cons(B, Cons(C, Nl))) <console>:18: error: type mismatch; found : Nl.type required: Lst[Foo] Note: Nothing <: Foo (and Nl.type <: Lst[Nothing]), but trait Lst is invariant in type A. You may wish to define A as +A instead. (SLS 4.5) val xs: Lst[Foo] = Cons(A, Cons(B, Cons(C, Nl)))

Как с этим жить?

?Ivan
30.03.2017
11:44:53
+A написать у Lst

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