@kotlin_lang

Страница 862 из 982
Жабра
12.09.2018
14:30:55
Di7aK
12.09.2018
14:31:57
как прогнать определенное количество элементов в колекции по циклу?

Di7aK
12.09.2018
14:33:13
а для Map

Google
Di7aK
12.09.2018
14:33:19
не находит метод

Руслан
12.09.2018
14:34:40
А что не так с witchContext? Что он остался вне GlobalScope?
Ему в блок добавили scope, чтобы он прокидывал его

Di7aK
12.09.2018
14:34:43
через keys кароч сделал

Жабра
12.09.2018
14:35:32
Подскажите, я правильно переписал функцию? inline fun launchOnUI( coroutineScope: CoroutineScope = GlobalScope, crossinline block: suspend CoroutineScope.() -> Unit ): Job = coroutineScope.launch(Dispatchers.Main) { block() }

С учётом нововведений

Vsevolod
12.09.2018
14:38:17
правильно с точки зрения “чтобы работало как раньше”. По-хорошему нужно написать так: inline fun CoroutineScope.launchOnUI( crossinline block: suspend CoroutineScope.() -> Unit ): Job = launch(Dispatchers.Main) { block() }

Жабра
12.09.2018
14:38:41
И как теперь при выходе из активити автоматически уничтожать запущенные корутины? Раньше был parentJob

Vsevolod
12.09.2018
14:38:52
в ui-guide про это появилась секция с примером под андроид

Жабра
12.09.2018
14:40:25
Google
Sergey
12.09.2018
14:41:10
Может кто подсказать где можно подробно прочитать про то как .kotlin_metadata файлики устроены и как используются?

Vsevolod
12.09.2018
14:41:34
А можно ссылку, пожалуйста?
https://github.com/Kotlin/kotlinx.coroutines/blob/master/ui/coroutines-guide-ui.md “Structured concurrency, lifecycle and coroutine parent-child hierarchy”

Vsevolod
12.09.2018
14:41:49
Луис вон еще мини-интеграцию написал: https://gist.github.com/LouisCAD/58d3017eedb60ce00721cb32a461980f#file-lifecyclejob-kt-L30

Руслан
12.09.2018
14:44:23
DI вообще переоценен ?
К сожалению нет, тут можно попробовать распилить на модули и наверняка получится более поддерживаемое приложение

Просто задача оказалась несколько маленькая, и достаточно сложная.

Igor
12.09.2018
14:46:57
Это все "ооп-энтерпрайз" проф-деформация, когда кажется что нельзя писать программы без DI и 100500 слоев абстракций.

Sergey
12.09.2018
14:47:35
di нужно, фреймворк для этого - под вопросом

Алексей
12.09.2018
14:48:25
Добрый день Может кто-нибудь подсказать, как написать функцию, которая внутри должна отправлять асинхронный запрос (по сути, через enqueue okhttp), но сама функция на время вызова должна блочиться? Сделать нужно через корутины

Dmitry
12.09.2018
14:50:19
Может кто подсказать где можно подробно прочитать про то как .kotlin_metadata файлики устроены и как используются?
Используются компилятором для сохранения (дополнительной) информации -- флаги, modality, и тд. С технической точки зрения это сериализованнвц protobuf Есть небольшая либа для чтения метадаты, можно почитать что и как она делает, это наверное лучший источник информации про метадату (иначе только идти код компилятора читать) Upd: ссылка отклеилась https://github.com/JetBrains/kotlin/blob/master/libraries/kotlinx-metadata/jvm/ReadMe.md

Igor
12.09.2018
14:50:28
di нужно, фреймворк для этого - под вопросом
Советую (для понимания альт. точек зрения) почитать / посмотреть доклад на тему. http://blog.ploeh.dk/2017/02/02/dependency-rejection/

Алексей
12.09.2018
14:51:04
Я пытался через runBlocking launch с корутиной, которую при получении ответа отменял, а в блокирующей корутине ждал её завершения через join

Но что-то пошло не так и не завелось как надо

Andrey
12.09.2018
15:15:28
Советую (для понимания альт. точек зрения) почитать / посмотреть доклад на тему. http://blog.ploeh.dk/2017/02/02/dependency-rejection/
Вкратце пробежался по докладу. Ок, мы можем предоставлять внешние зависимости через частичное применение/через контекст монады в ФП, но это всё и есть внедрение зависимости в самом чистом виде, так что не очень понял тезис автора, что DI в ФП так как нарушает ссылочную прозрачность (чистоту). Как по мне, так правильный DI должен быть ссылочно прозрачным, иначе можно долго, нудно и безуспешно дебажить, особенно многопоточное приложение.

Igor
12.09.2018
15:33:11
Kirill
12.09.2018
15:45:49
А как правильно, если без DI?

Если мы за функциональность боремся. А мы за неё боремся, как я понял из этого минутного ролика.

Google
Andrey
12.09.2018
15:47:46
> Как по мне, так правильный DI должен быть ссылочно прозрачным Не знаю как ты юзаешь "правильный DI", но в обычных "прикладных" приложениях DI вот такой: https://t.me/pofftop/12986
Бред. Если сами объекты, кроме листовых, чистые, то мы получаем типичное для ФП разделение на чистый код и сайд эффекты, сосредоточенные в листах. Никакого заражения, которое нарисовали в ролике, нету.

Bogdan
12.09.2018
15:48:07
Это кусок из часового доклада выше, там все ответы
хватить давать "бесплатные дозы", людей подсаживаешь на фп

Kirill
12.09.2018
15:49:25
ФП это неплохо, но я вместе с Андреем, который пишет выше не вижу заражения, а вижу разделение. Наверное, надо посмотреть доклад, чтобы более предметно обсуждать.

Igor
12.09.2018
15:52:32
Бред. Если сами объекты, кроме листовых, чистые, то мы получаем типичное для ФП разделение на чистый код и сайд эффекты, сосредоточенные в листах. Никакого заражения, которое нарисовали в ролике, нету.
Если ты считаешь, что чтение из базы (которая недерменированная или может кинуть исключение) через интерфейс - делает ее "чистой", ну ОК - у тебя какое-то свое понимание ref-transparency

Andrey
12.09.2018
15:53:23
Хотя не. Я понял, в чём загвоздка. При такой компоновке мы вынуждены использовать в каждом из объектов функции с сайд эффектами, которые нам предоставляют листовые объекты, что делает зависимые объекты тоже не чистыми. в ФП сайд эффекты выносятся, например, в монаду, в рамках которой мы пишем не чистый код, как map/bind композицию из чистых (map) и не чистых (bind) функций. При этом у нас остаётся чёткое разделение.

Konstantine
12.09.2018
15:53:31
Это кусок из часового доклада выше, там все ответы
Хорошая попытка, мистер пиарщик, но нет

Против di, кстати, ничего особо не заметил. Речь вроде о сохранении чистоты функции, правда с телефона пробежал по статье через слово.

Советую (для понимания альт. точек зрения) почитать / посмотреть доклад на тему. http://blog.ploeh.dk/2017/02/02/dependency-rejection/

Igor
12.09.2018
16:14:54
Это да, Марк не против DI в OOP, он даже известную книжку написал "Dep injection in .NET" (так что он как бы шарит). Он именно, про то что DI не функц., и про то какая есть альтернатива, если писать более функц. (там примеры на F# и хаскеле).

Жабра
12.09.2018
16:39:03
Подскажите, пожалуйста: нашёл в доке по currentScope Provides CoroutineScope that is already present in the current coroutineContext to the given block. Note, this method doesn’t wait for all launched children to complete (as opposed to coroutineContext). Но он же ожидает... Например currentScope { println(1) launch { delay(5000) println(3) } println(2) }

Vsevolod
12.09.2018
16:42:32
ты это небось из runBlocking вызываешь

Vsevolod
12.09.2018
16:43:42
но даже так: runBlocking { currentScope { println(1) launch { delay(5000) println(4) } println(2) } println(3) }

соответствует документации

заменишь currentScope на coroutineScope и будет печататься 1 2 4 3

Жабра
12.09.2018
16:44:06
ты это небось из runBlocking вызываешь
Да.? Но и что? Он же не должен ждать код, который обёрнут в currentScope. Нет?

Konstantine
12.09.2018
16:59:05
Сейчас начал делать мелкий домашний проект, там решил потыкать основательно корутины. В проекте нужно бегать в сеть и забирать веб-страничку, до этого это был OkHttp обернутый в Rx. Как лучше всего обернуть (или чем заменить) поход в сеть? А то сходу так приходят варианты, когда у нас просто функция синхронно вызывает сайт, но эта функция suspend.

Boris
12.09.2018
17:11:46
Знаю, что у апачевского клиента настоящая асинхронность. ОкХттп он все равно поток блокирует когда посылаешь запрос с колбэком

Sergey
12.09.2018
19:59:37
Okhttp хорошо с suspend работает

Google
Di7aK
12.09.2018
20:12:36
как понять какой участок кода будет не понятен левому обытелю чтобы его закаментить и почему мне всегда и так все понятно?

Admin
ERROR: S client not available

Di7aK
12.09.2018
20:30:45
Siyr
12.09.2018
20:32:33
а имя метода и параметры не описывают это?
В простых методах описывает, а в более сложных нет. Там очень помогает описание параметров, и что делает метод.

Di7aK
12.09.2018
20:37:03
я такие методы слава богу писать не умею

Farid
12.09.2018
21:04:06
Тут репосты с других каналов удаляются как я понял?

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

You
12.09.2018
21:04:27
Комбот удалил

С праздником

Farid
12.09.2018
21:10:26
Да ну нафиг

И видео удалил

Igor
12.09.2018
21:17:56
(бот лютует ?) Лан, спасибо - модеры посмотрели ??

Никита?❄️
12.09.2018
21:29:09
оу е, грац ребята, с праздником нас)

Igor
12.09.2018
21:54:39
с праздником =)

Igor
12.09.2018
22:11:11
Неочевидные моменты коменитить надо джавадоки к методам писать
Лучше не писать неoчевидный кoд. Кoмментить я бы сoветoвал (пpи сжатых сpoках) исключительнo какие-то нестандаpтные pешения, котоpые нужно потом не тpогать (зануление ссылок, чтобы gc мог собpать объект, явные тайп-касты, чтобы не было pантайм кpашей с Object в pегистpах, и так далее, коpоче – костыли)

ну и плюс оптимизации головного мозга, чтобы никто даже не думал пеpеписать какой-нибудь тpеш, pаботающий быстpо, на медленную но кpасивую технологию.

Di7aK
13.09.2018
05:39:36
есть кто живой? добавляю элемент в HashMap потом делаю remove но элемент все еще в ней

Google
Alexandr
13.09.2018
05:41:51
удаляешь как? по ключу?

Di7aK
13.09.2018
05:43:15
да

оказывается если изменить хоть один параметр у ключа то по тому объекту уже не находит

я думал хэшкарты используют объект как ключ, а они походу хэш объекта юзают

5 лет кодил на яве называется и ничего не знаю

Alexandr
13.09.2018
05:44:41
ключи мапы должны быть value типами, лучше всего строками

нельзя в ключ класс пихать)

Di7aK
13.09.2018
05:45:16
мне нееобходимо объект

Alexandr
13.09.2018
05:45:27
я думал хэшкарты используют объект как ключ, а они походу хэш объекта юзают
почитай на хабре как хэшмап работает... сто раз уже разжевывали

Di7aK
13.09.2018
05:45:59
уже нет смысла

а что использовать логичнее List<Pair<> >?

Alexandr
13.09.2018
05:47:06
что хочешь

просто ты делаешь что то не так

Di7aK
13.09.2018
05:47:59
мне надо держать модель файлов и их загрузчики в памяти чтобы не потерять

Страница 862 из 982