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

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

Александр
13.05.2018
21:10:14

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
уф рустемчик топ. Смотрю он у вас тоже отжигает

Oleg
14.05.2018
04:52:35
но мы ждём

Stanislav
14.05.2018
04:53:11
он уже ливнул или его ливнули

Google

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

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

Grigory
14.05.2018
06:18:43

Юрий
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
да
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:47:00

Юрий
14.05.2018
06:47:23

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, но это не объясняет, почему таймаут не кидается с одной стороны

Юрий
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
перестает процессить - может просто не просит больше элементов?

Timothy
14.05.2018
07:17:45

Google

Vladimir
14.05.2018
07:17:50

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
Такие таймауты мы проходили, и это одна из ключевых мотиваций на моникс была

Юрий
14.05.2018
07:54:43

Oleg
14.05.2018
07:55:56

Юрий
14.05.2018
07:56:07
?

Yaroslav
14.05.2018
08:22:35

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

Oleg
14.05.2018
08:28:32

Юрий
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
в скалаз всё своё
Интересно, в хашкеле ещё опшон не выпилили
кек, нет