@scala_ru

Страница 1466 из 1499
Vladimir
13.05.2018
21:08:16
twirp
Хотел сказать, что еще пара таких тулзов и прагматично скачусь в го, вспомнил про дженерики, погуглил, наткнулся на use copypaste or reflection, передумал

Viacheslav
13.05.2018
21:09:26
5 стадия смиерния или как там оно называется)

поздравляю ты на первой стадии)

Google
Viacheslav
13.05.2018
21:10:18
может кукль ещё пару десятков лярдов в маркетинг гошечки вкинет и ты будешь влюблен в этот язык)

Vladimir
13.05.2018
21:10:36
Обещали запилить жеж
Одерский вон мне новые коллекции обещает

Viacheslav
13.05.2018
21:10:56
обещать не значит...

Vladimir
13.05.2018
21:11:20
и макросы стабильные (наконец-то будет смысл их учить, текущие-то я не знаю, а уже и не надо, оказывается)

Nikolay
13.05.2018
21:13:00
и тайпклассы в языке

и быстрый компилятор

и то что не повторится судьба python 2-3

Alexander
13.05.2018
21:17:11
? все будет ещё жёстче?

Stanislav
14.05.2018
00:12:25
уф рустемчик топ. Смотрю он у вас тоже отжигает

Stanislav
14.05.2018
04:53:11


он уже ливнул или его ливнули

Google
Юрий
14.05.2018
06:05:13
Продолжаю свою борьбу с таймаутами для фьючи. Сделал реализацию на тасках моникса. Написал тест, который 100к раз запускает и делает проверку, что сайд эффект по таймауту выполняется ровно столько раз, сколько фьюч упало по таймауту. Ну и короче цифры не сходятся - сайд эффект выполняется больше раз. Так что Недельку попал в ту же проблему, что и я

Diemust
14.05.2018
06:17:46
звучит как то что ты попал в такую же проблему, что и ты

Юрий
14.05.2018
06:26:07
а зашарь код
С тасками?

Grigory
14.05.2018
06:26:22
да

Denis
14.05.2018
06:27:17
Но ведь если твой thunk уже выполняется его невозможно отменить, может по этому?

Юрий
14.05.2018
06:28:04
Но ведь если твой thunk уже выполняется его невозможно отменить, может по этому?
у меня by-name параметр, и я хочу его выполнить только в случае ошибки

да
https://scastie.scala-lang.org/7Pk3REknRVSbzULR0kzkzg

Grigory
14.05.2018
06:32:59
это моних?

ок

Daniel
14.05.2018
06:33:26
да камон

Diemust
14.05.2018
06:33:39
ща придет Олег и будет ругаться за нерабочий скасти

ну или кто-то еще, да :)

Pavel
14.05.2018
06:34:00
бл, нерабочий скасти

Daniel
14.05.2018
06:34:03
ну лучше если сразу будет рабочий, чем кажждый из открывших будет его фиксить

Grigory
14.05.2018
06:35:10
бл, нерабочий скасти
закрой ладошкой слово перед запятой

):

рибята чот скасти не пашет

пример колла добавь тоже

Google
Юрий
14.05.2018
06:37:02
епт

ща

https://scastie.scala-lang.org/kLX4SROGSli4Ikkxj5R0mw

Diemust
14.05.2018
06:48:02
о, у меня тож такое в тестах происходит, но не на фьючах, а на тасках чисто

хотя не, там runAsync все таки

Юрий
14.05.2018
06:49:04
в jvm чтобы честно прервать фьючу, нужно тред стопнуть

Diemust
14.05.2018
06:49:14
типа того private implicit class WaitTask[T](task: Task[T]) { def taskValue(timeoutOp: Option[Timeout] = None): T = { val future: CancelableFuture[T] = task.runAsync(s) future.onComplete { case Success(_) ⇒ () case Failure(exception) ⇒ exception.printStackTrace() }(s) future.futureValue(timeoutOp.getOrElse(1.second)) } }

у меня правда были подозрение, что где-то IO запускался с runSyncUnsafe, но это не объясняет, почему таймаут не кидается с одной стороны

в jvm чтобы честно прервать фьючу, нужно тред стопнуть
но если оно вот так, то, если я правильно понял, IO.unsafeRunSync и подобное могут занять все треды и типа таймауты у нас будут не срабатывать, так чтоль?

Юрий
14.05.2018
06:57:02
у меня таймер в отдельном одном потоке

Юрий
14.05.2018
06:57:22
а не, херню говорю

с тасками да, если сам шедулер заблокирован - то и таймаутов не будет. Но, по идее, шедулер должен уметь это нормально обрабатывать

Vladimir
14.05.2018
07:07:07
Скаланы, я вот знаю, что акка стримы любят глотать эксепшоны, но не помню точных обстоятельств. Кто-то может освежить память?

Юрий
14.05.2018
07:12:09
Vladimir
14.05.2018
07:13:39
я мб не совсем верно выразился: он не падает, т.е. materialized value я не получаю, он просто по тихому перестает процессить

Denis
14.05.2018
07:16:11
перестает процессить - может просто не просит больше элементов?

Google
Vladimir
14.05.2018
07:17:50
перестает процессить - может просто не просит больше элементов?
может и не просит, я только симптом снаружи помню

посмотри причину в watchTermination()
он не терминейтится, в том-то и проблема

Timothy
14.05.2018
07:18:16
хм, т.е. просто зависает?

Vladimir
14.05.2018
07:18:20
ага

Denis
14.05.2018
07:18:29
Ну возможно у тебя mapAsync и где то не завершается фьюча

Vladimir
14.05.2018
07:19:08
https://blog.softwaremill.com/akka-streams-pitfalls-to-avoid-part-1-75ef6403c6e6

вот, видимо, если не во фьюче бросить, то можно огрести

Admin
ERROR: S client not available

Denis
14.05.2018
07:21:54
Akka Streams pitfalls to avoid: - Akka Streams usage

Grigory
14.05.2018
07:22:12
да уж

Denis
14.05.2018
07:22:55
ORLY?? .recover { case e => throw e }

WTF вообще

Юрий
14.05.2018
07:46:41
Короче я победил таймауты: https://scastie.scala-lang.org/2xZFUXpFStiUUxkHga3hpg

пришлось извращаться и заворачивать ответы в дополнительную сущность, чтобы было только 1 место, где либо возвращается успех, либо возвращается фолбэк с сайд эффектом

ну и надо видимо баг в мониксе открыть, потому что таски не дают желаемого мне эффекта

Oleg
14.05.2018
07:49:57
Мне кажется, пора переставать юзать скасти

С таким уровнем стабильности

А зачем ты сделал свой EIther?

Юрий
14.05.2018
07:51:44
хз, можно и either юзать, да

Oleg
14.05.2018
07:53:28
Ну избежав моникса ты добавил себе проблем. В частности - если твоя оригинальная фьюча составная, она продолжит выполнять все свои шаги и после таймаута. Если в процессе выполнения твоей фьючи захватываются\инициализируются какие-то ресурсы, будет нетривиально их освободить.

Google
Александр
14.05.2018
07:53:36
Хм, недавно кто-то делал что-то подобное, и там даже 3 разных решения было, но я не помню как)

Oleg
14.05.2018
07:54:04
Такие таймауты мы проходили, и это одна из ключевых мотиваций на моникс была

Oleg
14.05.2018
07:55:56
Об этом я знаю, и пока мне достаточно и такого.
Ну я понимаю, мы обсуждали, просто проговорил в чате, если кто-то наткнётся на решение.

Юрий
14.05.2018
07:56:07
?

Yaroslav
14.05.2018
08:22:35
Короче я победил таймауты: https://scastie.scala-lang.org/2xZFUXpFStiUUxkHga3hpg
У них в презентации были future с timeout https://www.youtube.com/watch?v=DcJdWYfKcwQ&list=PL-RBtv_a80i5ppRhqtd9MhBZYgdgehvwl&index=28

Юрий
14.05.2018
08:26:04
У них в презентации были future с timeout https://www.youtube.com/watch?v=DcJdWYfKcwQ&list=PL-RBtv_a80i5ppRhqtd9MhBZYgdgehvwl&index=28
У них не такой. У них там просто эксепшен бросается, а мне не это нужно было.

и слайды у них просто вырви глаз. Наклонный текст читать так себе развлечение

Юрий
14.05.2018
08:28:58
А чем тебе эксепшон плох?
Тем, что у меня там может быть не эксепшен :)

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

Oleg
14.05.2018
08:30:00
в скалаз наверняка чонить типа def withTimeout(t: Duration): IO[Either[E, TimeoutError], A]

а вот и нет https://github.com/scalaz/ioeffect/blob/master/ioeffect/src/main/scala/scalaz/ioeffect/IO.scala#L458

Юрий
14.05.2018
08:54:11
Зачем они сделали другой Option?

Grigory
14.05.2018
08:57:37
Зачем они сделали другой Option?
мейби инвариантен по параметру, тогда как опшон ковариантен. и нету гет метода небезопасного который есть у опшона и нет всяких опшоно релейтед имплиситов

а зачем они это сделали - не знаю точно ¯\_(ツ)_/¯

Oleg
14.05.2018
09:02:05
в скалаз всё своё

Интересно, в хашкеле ещё опшон не выпилили

кек, нет

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