Разработка ждёт балета
1.67K subscribers
473 photos
2 videos
15 files
1.38K links
What I cannot create, I do not understand.

DM: @alexey_mileev
PeerLab: https://t.me/+e2ND1tAa0lU2ZTli
Download Telegram
Над Kotlin сейчас угрожающе нависает такой вот KEEP-87. Если в двух словах, то эта штука про расширения и про контракты. Тут можно почитать оригинальный proposal. А тут можно посмотреть менее длинное и более простое описание.

#kotlin #keep
@etolstoy прислал нам с вами опрос Kotlin Census 2019. Он достаточно большой, у меня ушло минут ~20. Но дорогу осилит идущий, как говорится :)

#survey #kotlin
@Jacks0n23 снова приглашает всех на Android meetup по Zoom 8 апреля в 19:00. Обещают два доклада про бинарную совместимость. Кстати, один из докладов делает @lounvh - его мы знаем по Shitty Android PeerLab. Вписывайтесь!
 
#event #kotlin #binary
Бывает, несёшь себе кофеёк к компу. Путь пролегает не самый близкий - покинуть кухню, преодолеть коридор, крадучись занести кружку в комнату, не обосрав тот любимый белый ковёр, и водрузить, наконец, дрожащими руками заветный напиток на рабочий стол.
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование suspend модификатора для этих целей. Интересная идея, пометить всё, у чего есть сайд-эффекты, тогда компилятор не даст нам чистые куски запятнать. Особенно интересно в контексте Redux-like подходов на эту идею посмотреть.

#kotlin #coroutine #fp
С Kotlin 1.4.30 в бетку перешёл новый JVM IR бэкенд компилятора. И вот за этим самым бэкендом будущее. Он станет дефолтным с Kotlin 1.5, да и старый компилятор больше не будет развиваться.

И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.

Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack

#kotlin #compiler #test
Очень приятная новость: JetBrains показали kotlin interactive shell (назвали почему-то ki, а не kish. А как здорово бы могло быть, ребята! Пишешь себе в терминальчике КиШ, "И ты попала! К настоящему колдуну, Он загубил таких как ты, не одну!")

Но штука прикольная, и в автокомплит умеет, и в раскраску синтаксиса, и в импорт сторонних зависимостей. У меня иногда возникает необходимость проверить что-то на простом примере, когда дока не пишет явно про какой-то корнер-кейс. Раньше ходил в браузере к ним в песочницу, теперь буду ходить в терминальчик.

#kotlin #shell #terminal
Очень давно в Kotlin напрашивались непустые коллекции. Вот в этом посте как раз описывается, как к их написанию можно подойти.

Мне правда не нравится идея с unsafe area. По-моему оператор, который может уменьшить кол-во элементов в коллекции, при любом раскладе должен возвращать обычную, а не непустую коллекцию, потому что именно этот тип верно описывает ситуацию.

#kotlin #collections
Показывать явно в возвращаемом типе, что функция может завершиться ошибкой, - идея не новая, хоть и всё ещё не заезженная. В этом посте чувак показывает, как такую Result monad можно на Kotlin написать. Реализация там, на мой взгляд, не во всём удачна (ну в какой, скажите, вселенной, val reason: String достаточно для описания ошибки?), но достаточно хороша.

#fp #monad #kotlin
В этот раз ссылка немного странная: тут нашёлся репо с пачкой ссылок, которые, в теории, помогут углубиться в то, как работает этот наш Kotlin компилятор. Может быть однажды и пригодится, как знать.

#kotlin #compiler
Тут вот очень базовый пост про написание своего detekt правила. Обычно мне такие примитивные примеры не нравятся (всё, что там делают, это проверяют текст функции на наличие определённой подстроки), но в случае с анализаторами именно такие супер-простые правила зачастую превращают условные 20% усилий в условные же 80% результата, а это всегда очень приятно.

#detekt #lint #kotlin
Ох, сколько же всего я не знаю. Алгоритм Sleep sort, например. На массив размера N заводим N тасок, которые сделают emit элементу после некоторого delay, соответствующему ключу сортировки. Дожидаемся всех emit'ов и опа, отсортировали.

#humor #algorithm #sorting
Ну шо, уважаемые люди говорят, Kotlin 1.7.0 вышел. Ощущается скорее как промежуточный релиз с улучшениями, но предложу пофантазировать в комментариях, куда нас может завести T & Any синтаксис в дженериках.

#kotlin #language
Тут совсем коротко: чувак рассказывает, как реюзать код для Gradle Kotlin DSL. Оно просто и понятно делается в Groovy, тут чуть сложнее.

#gradle #kotlin #build
Блэт, ну вот теперь мы знаем, что на Kotlin можно и такое вот дерьмо накидать, и оно даже будет валидно.

#humor #kotlin
JetBrains снизошли до простых смертных и разродились Kotlin LSP. Люди, знакомые с внутренней кухней, помогите понять, что это? Страх потерять пользователей в лице AI-индуцированных кодеров с VS Code форками? Или апокалипсис уже начался?

Но вообще хорошо, конечно, я рад.

#kotlin #lsp #editor