Martynenko
Посмотрите??
после 21 часа по минскому времени
Martynenko
@Override public void writeTo(BufferedSink sink) throws IOException типа тут?:)
Martynenko
while ( (bytesRead = mInputStream.read(data)) > 0 ) {// size 1024 byte sink.write(data, 0, bytesRead); }
Martynenko
но это не прокатывает)
Martynenko
если что)
Martynenko
он пишет одну большую колбасу и сервер мне по итогу шлёт 413 и я такой на конях мчусь пробовать заново😒
Himars
Himars
Видишь, между каждым словом
Himars
набор символов
Himars
наверное между пачками байт нужно что-то такое дописывать
Martynenko
о. можно попробовать)
Himars
7, 9, 7 - длина
Vadim
такое долгое обсуждение, и никто еще не сослался на стандарт RFC 2616
Himars
он скушный
Vadim
детсад
Martynenko
как-то букаф запредельное количество)
Vadim
facepalm.jpg
Глеб
Слушайте! ... вот это и есть те самые хвалёные супер-крутые.... КАРУТИНЫ ???
Глеб
Aleksey Goryachev
Ты же сам заюзал и не в курсе?))
Mike
выглядит как Java)
Глеб
Ты же сам заюзал и не в курсе?))
Понимаешь... тут такое дело.... в общем это java)
Mike
оно либо блокирующее, либо на магии
Aleksey Goryachev
Понимаешь... тут такое дело.... в общем это java)
Сам повелитель своей судьбы) Сам имею kotlin only товарищей
Глеб
оно либо блокирующее, либо на магии
блокирующее, а currentTime типа тяжёлый но в др потоке
Глеб
вот и вопрос ... если корутина делает то же самое... или?
Ruslan
и класс CompletableFuture?
Глеб
нет, она неблокирующая
то есть что тогда я буду в принтлн писать? пока тайм запрашивается?
Mike
то есть что тогда я буду в принтлн писать? пока тайм запрашивается?
Нет, пока тайм запрашивается, event loop будет свободен для других задач
Глеб
Нет, пока тайм запрашивается, event loop будет свободен для других задач
Ну то есть код не блокируется и пойдет след строка: печать тайма в принтлн
Глеб
?
Mike
Ну то есть код не блокируется и пойдет след строка: печать тайма в принтлн
Ну как она пойдёт пока тайм не вернулся из другого потока?
Глеб
Ну как она пойдёт пока тайм не вернулся из другого потока?
То есть и всё что ниже тоже будет ожидать?
Глеб
то есть текущий поток блокируется
Mike
развёрнутая корутина: executor.execute { val time = System.currentTimeMillis() otherExecutor.execute { println(time) } }
Martynenko
@nuclight но я посмотрел) Спасибо. Познавательно и много узнал
Глеб
ах) сек
Глеб
Mike
да, так
Глеб
да, так
Бляяя! (простите за лексику) 😕
Глеб
Это ж надо было так людям....
Глеб
голову
Mike
да, и все вот эти .then(...).then(...) пишутся линейно да ещё и обходятся дешевле
Глеб
да, и все вот эти .then(...).then(...) пишутся линейно да ещё и обходятся дешевле
Ну то есть в линию писать пока нигде не запрещено, thenAcceptAsync - длинее чем просто then - трудно несогласиться а вот насчёт "дешевле" это как ?
Kostya
кто-то ловил когда-то такую ошибку при попытке запустить аудио из raw? падает на этом моменте вроде как в нативном коде MediaPlayer.create(context, R.raw.blablabla) java.io.IOException: Prepare failed.: status=0x1
Глеб
не-не, then — это пример джавы, в корутинах этого просто нет
подожди .. у меня - одна лямдба "майн-тред колбэк" у корутин так или иначе тоже - объявление функции, запускаемой в майн-потоке с результатом
Глеб
Здесь — да. Но когда их больше, всё меняется)
больше корутин или колбэков? если колбэков - то jvm лямбда - она и в африке лямда🤔
Mike
больше корутин или колбэков? если колбэков - то jvm лямбда - она и в африке лямда🤔
Когда с CompletableFuture больше колбэков, получаешь больше классов. Когда в корутине больше suspension points, количество классов уже не меняется.
Глеб
Когда с CompletableFuture больше колбэков, получаешь больше классов. Когда в корутине больше suspension points, количество классов уже не меняется.
если все суспензии в одном потоке - возможно да) а если они дальше порождают корутины или колбэчатся на разных экзекюторах?
Глеб
Ну в целом ясно. Мне интереснее было понять "в чём фокус" корутины? И как и догадывался - всего лишь ловкость рук, и никакой магии
Mike
Ну в целом ясно. Мне интереснее было понять "в чём фокус" корутины? И как и догадывался - всего лишь ловкость рук, и никакой магии
Фокус в том, что код последовательный, а выполнение асинхронное, без смены парадигмы и без блокирования.
Глеб
Фокус в том, что код последовательный, а выполнение асинхронное, без смены парадигмы и без блокирования.
Собственно то же, что и completablefuture. Госпади а стока кипятка вокрг этой фичи! Ну...так то да - синтаксически - такое кодится приятнее))
ну и по скорости тоже по идее
лучше
Глеб
Собственно то же, что и completablefuture. Госпади а стока кипятка вокрг этой фичи! Ну...так то да - синтаксически - такое кодится приятнее))
а что же они так тогда нормально и не напишут, что - "корутины - лайт-аналог complFuture", с более эффективным(так пишут) планированием тредов под капотом
Глеб
ну и по скорости тоже по идее
Не знаю... мож есть бенчмарки... тока они точно скажут
Глеб
а что же они так тогда нормально и не напишут, что - "корутины - лайт-аналог complFuture", с более эффективным(так пишут) планированием тредов под капотом
А то гуглю гуглю - всё вокруг да около : "неблокирующий подход", "линейный стиль", "легковесные потоки"
Trubnikov
Мужики, если приложение откланено гуглом, для того чтобы они еще раз проверили нужно просто залить исправленное приложение с новой версией?
Олександр
Не знаю... мож есть бенчмарки... тока они точно скажут
Где-то на ютубе видел сравнение скорости выполнения разных участков кода с threadpool, coroutines, rxjava и ещё чего-то. Корутины не всегда самые быстрые, конечно) Мож вечером найду, скину
Глеб
Ну, CompletableFuture недостижимый для 95% андроид разработчиков 🤷‍♂
Ну.. да... это было, это есть.... но версии апи выходят каждый год, время идет )) и deprecate выталкивается с рынка вот парни и подсуетились в нише которая какой-то момент пустовала
Kirill
Корутины же помогают Артем по максимуму использовать, то есть не отправил запрос в сеть и усыпил его, а позволил на нем выполняться другой корутине
Kirill
Это одна из главных фич легковесных потоков насколько я понял
Глеб
Это одна из главных фич легковесных потоков насколько я понял
как я читал - они всегда аппелируют к тому что "не создаётся поток" но уж Елизарову там и прочим то точно известно, как работает тред-пул в экзекюторах 😊 там есть тайм-аут на реальное "умирание" трейда, а так ...он спит и ждет новых задач