Size: a a a

Kotlin Community

2020 May 04

AN

Alexander Nozik in Kotlin Community
Ilmir
Зачем два дня, если у тебя один мейкфайл на проект (рекурсивный мейк - зло при кодогенерации). У него в голове объявлены модули и какие файлы им соответствуют. Типа JVM_BE = $(wildcard src/be/jvm/*). Кидаешь файл в папочку и он автоматом подхватывается.
источник

AN

Alexander Nozik in Kotlin Community
Ошибка на вашей стороне или на их?
источник

AN

Alexander Nozik in Kotlin Community
тогда только переподписаться
источник
2020 May 05

VS

Vladimir Sitnikov in Kotlin Community
Alexander Nozik
Сейчас при написании плагинов для грэдла имеется дикая боль от того, что не понятно какая часть кофигурации в какой момент уже существует, а в какой нет. Например ты не можешь делать плаги, который просто так добавляет зависимости, потому что соурс-сетов в этот момент еще нет. И еще куча всего. На все это есть полтора инструмента в виде afterEvaluate и plugins.withPlugin. Хотя на самом деле процентов 80 всей модели должны быть Deferredами с колбэками
Вот тут очень дельная фраза: в текущей модели конфигурации есть callback'и. Как известно, корутины могут превращать callback-style в последовательный код. Поэтому, да, идея не лишена смысла.

Но withPlugin это, наверное, неподходящий пример, ведь этот callback вызывается из-за действия сторонних сил.
По сути, он эквивалентен if (plugin exists) {...}

А вот afterEvaluate, да, часто используется в духе: мы тут объявим Property (~Deferred) и потом в afterEvaluate callback'е смотрим чем заполнено значение. Но и тут непонятно. Нельзя же переходить в suspended после публикации первого же Property/extension? Получится, что у нас сначала будет код, который 'публикует api', а потом обработка. Неочень-то и похоже на корутины.
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
Вот тут очень дельная фраза: в текущей модели конфигурации есть callback'и. Как известно, корутины могут превращать callback-style в последовательный код. Поэтому, да, идея не лишена смысла.

Но withPlugin это, наверное, неподходящий пример, ведь этот callback вызывается из-за действия сторонних сил.
По сути, он эквивалентен if (plugin exists) {...}

А вот afterEvaluate, да, часто используется в духе: мы тут объявим Property (~Deferred) и потом в afterEvaluate callback'е смотрим чем заполнено значение. Но и тут непонятно. Нельзя же переходить в suspended после публикации первого же Property/extension? Получится, что у нас сначала будет код, который 'публикует api', а потом обработка. Неочень-то и похоже на корутины.
WithPlugin работает не 'если', а 'когда'. Он тоже отложенный. В остальном, разумеется там надо внутреннюю логику менять и добавлять колбэки везде и потом эти колбэки в корутины заворачивать. Насчёт перехода в суспенд, получится, что любое конфигурирование будет в своем ланче в скоупе конфигуратора.
источник

VS

Vladimir Sitnikov in Kotlin Community
Alexander Nozik
WithPlugin работает не 'если', а 'когда'. Он тоже отложенный. В остальном, разумеется там надо внутреннюю логику менять и добавлять колбэки везде и потом эти колбэки в корутины заворачивать. Насчёт перехода в суспенд, получится, что любое конфигурирование будет в своем ланче в скоупе конфигуратора.
У тебя есть пример callback’а, который по-твоему нужно добавить и от которого полегчает для корутинности?

Я вот периодически хочу callback по случаю «extension полностью сконфигурирован» Но тут есть нюанс: непонятно как можно этот момент определить. Как-никак, Gradle не знает что взбредёт в голову конфигурационному коду, а каждый отдельно взятый плагин не может единолично принять решение, что «вот уж сейчас-то все-все-все настройки java установлены»
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
У тебя есть пример callback’а, который по-твоему нужно добавить и от которого полегчает для корутинности?

Я вот периодически хочу callback по случаю «extension полностью сконфигурирован» Но тут есть нюанс: непонятно как можно этот момент определить. Как-никак, Gradle не знает что взбредёт в голову конфигурационному коду, а каждый отдельно взятый плагин не может единолично принять решение, что «вот уж сейчас-то все-все-все настройки java установлены»
Для того, чтобы все работало, большинство пропертей надо превратить в deferred и реакции делать на то, когда они установлены. Скажем, мы хотим получить пропертю экстеншена, мы просим градл выдать нам пропертю по заданному пути, а потом можно сделать await на ее значение. Но про конфликтующие изменения я не подумал. Это тоже можно сделать, но надо значительно сильнее все переделывать для этого
источник

T

Tàu Ngầm Hạt Tiêu... in Kotlin Community
When i clicked back from detail fragment. Recycleview feel lag ( I request API on onCreatedView). Anyone may help me😭😭😭
источник

BV

Boris Vanin in Kotlin Community
Tàu Ngầm Hạt Tiêu
When i clicked back from detail fragment. Recycleview feel lag ( I request API on onCreatedView). Anyone may help me😭😭😭
I guess, android chat can help, this one is about kotlin
источник

T

Tàu Ngầm Hạt Tiêu... in Kotlin Community
Boris Vanin
I guess, android chat can help, this one is about kotlin
I'm newbie. Can you explain more 😔
источник

AN

Alexander Nozik in Kotlin Community
Tàu Ngầm Hạt Tiêu
I'm newbie. Can you explain more 😔
Please ask questions about kotlin here. You being newbie does not save you from chat rules.
источник

T

Tàu Ngầm Hạt Tiêu... in Kotlin Community
Alexander Nozik
Please ask questions about kotlin here. You being newbie does not save you from chat rules.
Can you send me link of group
источник

AN

Alexander Nozik in Kotlin Community
@extalosdx Вот фул-стэк демка актуальная: https://github.com/Kotlin/kotlin-full-stack-application-demo
источник

AN

Alexander Nozik in Kotlin Community
Могу еще скинуть рабочий проект, но там самодельный плагин
источник

RU

Roman Ushakov in Kotlin Community
О, благодарю, ты мне день спас)
источник

RU

Roman Ushakov in Kotlin Community
Tàu Ngầm Hạt Tiêu
Can you send me link of group
@android_ru but it's russian android group
источник

AN

Alexander Nozik in Kotlin Community
Roman Ushakov
О, благодарю, ты мне день спас)
Не моя репа. Моя вот: https://github.com/mipt-npm/dataforge-vis/blob/master/demo/muon-monitor/build.gradle.kts. Там фронт и бэк в одном мультиплатформном модуле
источник

AN

Alexander Nozik in Kotlin Community
я вчера весь день убил, но сделал копирование ресурсов между модулями в JS/
источник

RU

Roman Ushakov in Kotlin Community
Круто, спасибо
источник

VS

Vladimir Sitnikov in Kotlin Community
Alexander Nozik
Для того, чтобы все работало, большинство пропертей надо превратить в deferred и реакции делать на то, когда они установлены. Скажем, мы хотим получить пропертю экстеншена, мы просим градл выдать нам пропертю по заданному пути, а потом можно сделать await на ее значение. Но про конфликтующие изменения я не подумал. Это тоже можно сделать, но надо значительно сильнее все переделывать для этого
Всё-таки нужен пример случая где от callback'ов сильно плохо. Как-никак, а в Gradle их сильно меньше, чем, например, в обычном js (который до async/await) и меньше, чем в rx.*
источник