Size: a a a

2019 June 05

Ⓢⓔⓡⓖ in Kotlin Moscow
а) Сначала построить дерево б) Отсортировать вершины, превратив в список в) Пройтись по списку; т.е. отделить построение дерева и обработку вершин
источник

VS

Vladimir Sitnikov in Kotlin Moscow
тут фича в том, что дерево строится динамически
источник

VS

Vladimir Sitnikov in Kotlin Moscow
т.е. не факт, что оно нам полное нужно
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Всё равно, сначала скачивать мета-информацию о зависимостях (но не саму библиотеку целиком) в рамках построения дерева, а уже затем в рамках обработки списка - саму библиотеку
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Нет.  Конечная цель — найти <license>  теги в pom.xml.
Поэтому качаем parent’ы до тех пор, пока не нашёлся файлик с тегом.

Вариант «сначала скачаем весь интернет» не особо обнадёживает. Как-никак, если в самом первом <license> уже присутствует, то и parent качать не нужно.
источник

VV

Vladislav Verminsky in Kotlin Moscow
Vladimir Sitnikov
class LicenseDetector(private val loader: PomLoader) {
   fun LicenseTag.parse(): License = License.`0BSD`

   suspend fun detect(id: ComponentIdentifier): License {
       val pom = loader.load(id)
       val licenses = pom.licenses
       if (licenses != null) {
           return licenses.licenses.first().parse()
       }
       val parentId = pom.parentId ?: TODO("License not found for $id, parent pom is missing as well")
       return detect(parentId)
   }
}


Куда тут добавлять очередь?
Я что-то запутался. Я не вижу у тебя тут дерева. У тебя обычный license итератор. На методе hasNext загружаем pom, и если license не null, то сохраним в поле next, вернём true. На next возвращаем ссылку next.
Где дерево то?
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Vladislav Verminsky
Я что-то запутался. Я не вижу у тебя тут дерева. У тебя обычный license итератор. На методе hasNext загружаем pom, и если license не null, то сохраним в поле next, вернём true. На next возвращаем ссылку next.
Где дерево то?
val parentId = pom.parentId ?: TODO("License not found for $id, parent pom is missing as well")
return detect(parentId)
источник

VV

Vladislav Verminsky in Kotlin Moscow
Хотя тут не итератор, сорян. Но у тебя все равно смешался парсинг лицензии и её получении. Я бы разделили
источник

VS

Vladimir Sitnikov in Kotlin Moscow
рекурсивный вызов
источник

VV

Vladislav Verminsky in Kotlin Moscow
Рекурсия ведь не дерево.
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Vladislav Verminsky
Рекурсия ведь не дерево.
ну, я дерево вверх обхожу
источник

VV

Vladislav Verminsky in Kotlin Moscow
Vladimir Sitnikov
ну, я дерево вверх обхожу
Ясно. Т.е. у тебя список листьев с одним корнем или с разными корнями? И тебе нужно хоть где нибудь найти лицензию, и если мы заходили в одну из нод и знаем, что выше ничего нет, то загружать не нужно?
источник
2019 June 06

VL

Valery Laptev in Kotlin Moscow
Ищу к себе (Leroy Merlin) в команду Java/Kotlin разработчиков. Уровень и опыт не так важен, гораздо важнее желание учиться и развиваться.

Что делаем: пилим микросервисы (без легаси).

Подробности в личке.
#вакансия
источник

AM

Alina Meilalina [JB] in Kotlin Moscow
Valery Laptev
Ищу к себе (Leroy Merlin) в команду Java/Kotlin разработчиков. Уровень и опыт не так важен, гораздо важнее желание учиться и развиваться.

Что делаем: пилим микросервисы (без легаси).

Подробности в личке.
#вакансия
Есть канал ещё такой https://t.me/kotlin_jobs
источник

VL

Valery Laptev in Kotlin Moscow
@meilalina , спасибо!
источник

AM

Alina Meilalina [JB] in Kotlin Moscow
@ValeryLaptev виделись вчера с вашими коллегами в Минске :) говорят, будете здесь открываться
источник

AM

Alina Meilalina [JB] in Kotlin Moscow
Добро пожаловать!
источник

VL

Valery Laptev in Kotlin Moscow
Да, в ближайших планах. Спасибо :-)
источник

AM

Alina Meilalina [JB] in Kotlin Moscow
Приезжайте с докладами на наш митап
источник

SE

Sergei Ermolaev in Kotlin Moscow
iOS разработчик на котлине? Это как?
источник