Kotlin
2.17K subscribers
273 photos
123 videos
18 files
396 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
Kotlin Flow: простая, но мощная реализация

С тех пор как Flow был впервые представлен в Kotlin версии 1.3.0, он стал важной и обсуждаемой темой в сообществе Kotlin. Но почему?

Flow - это простая, но мощная реализация асинхронного программирования в Kotlin.

Flow - это не что иное, как корутин, который возвращает несколько результатов. Она позволяет разработчикам писать структурно параллельный, асинхронный и неблокирующий код в последовательном стиле. Но что означают все эти технические термины, начинающим разработчикам сложно понять сразу. Мне потребовалось некоторое время, чтобы понять это.

https://proandroiddev.com/kotlin-flow-simple-yet-powerful-implementation-c585f337161a

✍️ @kotlin_lib
👍31
Kotlin-Swift interopedia

Kotlin/Native обеспечивает двунаправленное взаимодействие с Objective-C. На момент написания статьи Kotlin не взаимодействует со Swift напрямую, а скорее опосредованно, через мост Objective-C. Экспорт Swift - это то, что команда Kotlin/Native намерена решить в будущем. Тем не менее, выбор в пользу Objective-C вполне обоснован: старые проекты, содержащие код Objective-C, могут вызывать общий код Kotlin, а также проекты, содержащие код Swift.

https://github.com/kotlin-hands-on/kotlin-swift-interopedia

✍️ @kotlin_lib
👍2
Создание паттернов креативного дизайна в Kotlin

Этот блог предназначен для тех, кто только начинает изучать паттерны проектирования в Kotlin. Здесь я попытался создать креативные паттерны проектирования с нуля, а не просто предоставить их синтаксис и теорию.

https://proandroiddev.com/creating-the-creational-design-patterns-in-kotlin-319d08fdf9b6

✍️ @kotlin_lib
👍4
Совет

ifEmpty позволяет нам выполнить второе действие, если содержимое нашего значения пусто. Это отличный способ избавиться от if-else с isEmpty.

Пример

1- Обычный способ
2- С помощью ifEmpty
3- Максимальное

✍️ @kotlin_lib
👍17
Работаем с enum в kotlin/jvm правильно

А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур.

https://habr.com/ru/articles/781730/

✍️ @kotlin_lib
👍5
Тюнинг производительности Kotlin: 20 советов

Производительность — это критический показатель, который может привести к успеху или сломать ваше приложение. Хотя Kotlin предлагает множество функций, облегчающих разработку, знание того, как использовать их для повышения производительности, может стать решающим фактором. В этой статье приведены 20 советов, которые помогут вам писать высокопроизводительный код на Kotlin.

https://medium.com/@android-world/kotlin-performance-tuning-20-best-practices-you-should-know-354011076664

✍️ @kotlin_lib
👍5👎1
Media is too big
VIEW IN TELEGRAM
Андрей Данилов — Gradle Kotlin DSL: о чем умолчали в документации

Gradle.kts уже давно не новая технология, но далеко не все на нее перешли. Причины разные: кто-то слышал о плохом перформансе, кто-то пытался мигрировать, но с ходу не вышло. Даже спустя 5 лет после релиза скуповатая на детали документация не проясняет многие кейсы. Андрей постарается исправить эту ситуацию в своем докладе.

Вы узнаете, есть ли вообще причины переходить на kts в 2023 году и насколько все плохо (или хорошо) с перформансом, учитывая что во многих release notes сообщают об ускорениях. Спикер также разберет все проблемы, возникающие как при миграции крупного проекта, так и при интеропе Kotlin/Groovy.

источник

✍️ @kotlin_lib
👍4
Media is too big
VIEW IN TELEGRAM
IntelliJ IDEA Tips and Tricks

Антон Архипов - специалист по работе с разработчиками в команде Kotlin в компании JetBrains. В сферу его профессиональных интересов входят языки программирования и инструментарий для разработчиков. С 2014 года он является чемпионом по Java.

источник

✍️ @kotlin_lib
👍3
Kotlin-реализация RecyclerView на Android

У вас есть большой список данных для показа пользователям вашего приложения? Ищете гибкий, удобный для разработчиков и пользователей способ отображения данных?

Тогда RecyclerView  —  именно то, что вам нужно.
RecyclerView  —  это расширенная версия ListView, только более мощная и гибкая.
RecyclerView относится к семейству ViewGroup, которое является оптимизированным преемником ListView и GridView.
Как следует из названия, RecyclerView перезапускает верхние элементы списка, которые, уходя за пределы с экрана, становятся невидимыми для пользователя. Например, если пользователь прокрутит список вниз до пункта 6 или 7, то элементы в позиции 1, 2 или 3 будут удалены из памяти. В результате сокращается расход памяти.

https://medium.com/@hrithik481/implement-recyclerview-in-android-with-kotlin-42408c6bf6

✍️ @kotlin_lib
👍8😐1
KMP Library Wizard

Теперь можно в два клика создать KMP проект

https://terrakok.github.io/kmp-web-wizard/

✍️ @kotlin_lib
👍6🔥3
Защита архитектуры проекта Kotlin с помощью Konsist

Konsist - это совершенно новый инструмент, который помогает стандартизировать кодовую базу. Он совместим с различными Kotlin-проектами, включая Android-проекты, Spring-проекты и Kotlin Multiplatform-проекты.

Прежде чем погрузиться в Konsist, давайте вкратце обсудим многоуровневую архитектуру. Компоненты в рамках паттерна многоуровневой архитектуры организованы в слои, каждый из которых выполняет определенную роль в приложении. Каждый слой также определяет границы - классы и интерфейсы могут быть доступны только другим классам и интерфейсам из нужных слоев.

Konsist может быть использован для автоматизации проверки этих слоев, что повышает качество кодовой базы приложения и делает ее более управляемой. Давайте рассмотрим несколько архитектур и посмотрим, как мы можем защитить их границы.

https://proandroiddev.com/protect-kotlin-project-architecture-using-konsist-3bfbe1ad0eea

✍️ @kotlin_lib
👍3
Apress_Pro_Spring_6_with_Kotlin.pdf
24.1 MB
Pro Spring 6 with Kotlin: An In-depth Guide to Using Kotlin APIs in Spring Framework 6
Автор: Chris Schaefer (2023)

Освойте основы Spring Framework 6, опираясь на реальный опыт экспертов по Spring. Из этой книги вы узнаете, как использовать Spring 6 в тандеме с языком программирования Kotlin для создания сложных корпоративных приложений сверху донизу. От монолитов до облачных нативных приложений для потоковых микросервисов - вы получите представление о каждом аспекте процесса, включая транзакции, доступ к данным, персистентность, веб-уровни и уровни представления.

✍️ @kotlin_lib
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
YAIoGoL

Реализация игры "Жизнь"

https://github.com/welniak/YAIoGoL

✍️ @kotlin_lib
🔥4👍21
Прослушивание событий элементов с использованием Compose for Web

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

События играют ключевую роль во взаимодействии между вашим приложением и браузером. В декларативном мире события - это основной способ получения обновлений от элементов. В этом отношении HTML-документ действительно очень силен.

Как вы можете видеть в документации W3C, существует почти 100 типов событий, которые вы можете использовать. В этой статье мы узнаем, как использовать их в Compose for Web.

https://touchlab.co/compose-html-events

✍️ @kotlin_lib
👍21
DataMaps. Рассказ о нашей ORM на Kotlin

Меня зовут Александр, я ведущий программист в БФТ-Холдинге. Уже несколько лет мы с командой трудимся над платформой, которая официально называется БФТ.Платформа, а менее официально – Ice. В основном наша платформа используется в органах власти и государственных учреждениях.

Сегодня хотелось бы рассказать не обо всей платформе, а только об одном из ее компонентов – ORM (object-relational mapping) – фреймворке DataMaps.

Данная статья не инструкция или справка. Это достаточно поверхностный обзор, цель которого получить первичную обратную связь: интересен ли наш фреймворк сообществу?

Внутри БФТ-Холдинга Datamaps зарекомендовали с одной стороны, как легкий, наглядный и понятный для разработчиков фреймворк, с другой стороны, мощный по своим возможностям.

https://habr.com/ru/companies/bft/articles/787280/

✍️ @kotlin_lib
👍3
Как использовать ресурсы в Compose Multiplatform

Ресурсы являются важной частью любого мобильного приложения, они включают в себя отрисовки, шрифты, текстовые файлы и многое другое. С появлением Compose Multiplatform у нас появился компонент ресурсов Compose, но он был экспериментальным и претерпел несколько изменений в разных версиях. Теперь, когда вышла следующая основная версия Compose, а именно 1.6.0-beta01, в разделе ресурсов появились некоторые важные изменения. Давайте рассмотрим их, а также то, как перенести и использовать новый способ доступа к ресурсам.

https://proandroiddev.com/how-to-use-resources-in-compose-multiplatform-77a6552b505d

✍️ @kotlin_lib
👍3
Использование делегирования в Kotlin для упрощения совместной работы с ViewModel и управления состояниями

В предыдущем материале мы рассказали о том, как создавался наш экран InRide для водителей. По мере того как развиваются технологии и потребности, развивается и наш продукт. Хамид Реза, наш менеджер по продукции, придумал встроить навигационные возможности прямо в существующий экран In-Ride, избавив наших водителей от зависимости от сторонних навигационных приложений. 🗺️

https://proandroiddev.com/leveraging-kotlin-delegation-to-simplify-viewmodel-collaboration-and-state-management-399c17cf5df5

✍️ @kotlin_lib
👍3
Миграция конфигурации сборки с Groovy на Kotlin

Что такое DSL?
DSL (Domain-Specific Language) — это язык программирования, который спроектирован и оптимизирован для решения задач в конкретной области или для определенного класса задач. DSL build.gradle предоставляет разработчикам удобный способ определения настроек проекта и управления ими, используя специфический синтаксис, который Gradle понимает и обрабатывает. Этот DSL позволяет создавать мощные и гибкие сценарии сборки, которые могут быть легко настраиваемы для разных проектов и задач.

С Android Studio Giraffe Kotlin DSL становится новым стандартом для Gradle-скриптов в разработке Android. Когда вы создаете новые проекты, используя встроенные шаблоны IDE, вам будут предоставлены файлы Kotlin DSL вместо файлов Gradle на основе Groovy.

https://habr.com/ru/companies/ppr/articles/765544/

✍️ @kotlin_lib
👍5
Корутинные загадки
Антон Дудаков, Владимир Меркурьев

Спикеры будут показывать код с корутинами и спрашивать, что в нем должно случиться, а слушатели будут выбирать варианты ответов. После этого будет запускаться живой код и оцениваться то, что получилось на самом деле. Затем будем разбор того, почему все именно так. Кто выберет больше всего правильных вариантов — тот и победил.

Будут примеры с синхронизацией и конкурентной работой, отмена корутин и неочевидности Kotlin Flow.

https://www.youtube.com/watch?v=Qj_vTsN_4uo

✍️ @kotlin_lib
👍5
Элегантная обработка событий в Kotlin - прохождение рефакторинга

Раскройте пиковую производительность кода Kotlin с помощью этих экспертных советов по рефакторингу.

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

https://img.ly/blog/kotlin-code-refactoring-for-peak-performance/

✍️ @kotlin_lib
👍3