Kotlin Developer
6.22K subscribers
250 photos
7 videos
343 links
Самый топовый канал по Kotlin

По вопросам сотрудничества и рекламы: @NadikaKir

Мы на бирже: https://telega.in/c/KotlinSenior
Download Telegram
Ключевое слово reified

reified — это ключевое слово, которое может быть использовано только в inline-функциях. reified позволяет получить информацию о типе generic-параметра во время выполнения программы. В обычном случае, информация о типах стирается и недоступна во время выполнения, но с помощью reified можно сохранять эту информацию и использовать в других частях приложения.

Несколько простых примеров применения:

1. Получить доступ к типу параметра во время выполнения


fun main() {
printType<String>() // String
printType<Int>() // Int
}

private inline fun <reified T> printType() {
println(T::class.simpleName)
}


В этом примере мы определяем функцию printType() с типовым параметром T, который мы указываем с помощью reified. Внутри функции мы можем получить тип T во время выполнения, используя T::class. Затем выводим название типа на экран с помощью simpleName. Когда мы вызываем функцию printType() с типом String или Int, она выводит соответствующий тип на экран.

2. reified вместе с is для проверки типа аргумента во время выполнения


fun main() {
println(isOfType<Int>(1)) // true
println(isOfType<Int>("Hello")) // false
}

private inline fun <reified T> isOfType(value: Any): Boolean {
return value is T
}


Здесь мы определяем функцию isOfType(), которая принимает значение типа Any и возвращает true, если оно является типом T. Мы используем reified, чтобы получить доступ к типу T во время выполнения. Затем мы используем оператор is для проверки типа значения и возвращаем соответствующее boolean значение.

3. Получить список элементов перечисления


enum class Color { RED, GREEN, BLUE }

fun main() {
printEnumValues<Color>() // RED, GREEN, BLUE
}


private inline fun <reified T : Enum<T>> printEnumValues() {
enumValues<T>().forEach { value ->
println(value)
}
}


Определяем функцию printEnumValues(), которая выводит список элементов перечисления типа T. Мы применяем reified, чтобы получить доступ к типу T во время выполнения. Затем используем enumValues<T>(), чтобы получить список всех значений перечисления типа T. Внутри цикла выводим каждое значение на экран. Когда мы вызываем функцию printEnumValues() с типом Color, она выводит "RED", "GREEN" и "BLUE" в консоль.
This media is not supported in your browser
VIEW IN TELEGRAM
Изучите применение ChatGPT в рабочих целях, чтобы получить от этого прибыль. Сейчас самое время начать использовать искусственный интеллект.

Здесь вы узнаете, почему стоит освоить ChatGPT. Это поможет вам:

- Использовать ChatGPT в вашей профессиональной сфере.

- Предлагать компаниям разработку индивидуально дообученного ChatGPT по заказу.

- Увеличить свой доход, освоив навык создания индивидуально дообученного ChatGPT.

Зарегистрируйтесь на бесплатный вебинар, чтобы узнать больше деталей.

Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8JwzAY
💻 kotlin-logging — легковесный фреймворк для логгирования, написанный на чистом Kotlin

implementation 'io.github.oshai:kotlin-logging-jvm:5.1.0'

kotlin-logging предоставляет обертку для slf4j-api для использования классами Kotlin; при этом kotlin-logging имеет такие преимущества:
— нет необходимости писать шаблонный код, содержащий имя логгера и класса или имя логгера
— простой способ регистрации сообщений в виде строки с ленивой оценкой с помощью лямбда-выражения {}
— все предыдущие реализации slf4j по-прежнему могут быть использованы

🖥 GitHub
🟡 Wiki

@KotlinSenior
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение

Если вы хотите сократить количество платформенного кода и ресурсы на разработку и поддержку приложения, не спешите этого делать. Леонид Емельянов делится опытом перехода на Kotlin и Compose Multimplatform.

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

Видео по ссылке 📺

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Возможности языка Kotlin в версии 2.0

Обзор улучшений и дополнений в Kotlin 2.0, включая новый движок потока управления и промежуточное представление интерфейса, а также то, как это помогает обеспечить согласованность языка.

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


@KotlinSenior #kotlin
Хотели бы изучить потенциал Flutter для разработки высокопроизводительных веб-приложений и игр?

Ждём вас на открытом практическом уроке от OTUS, где мы:
▫️рассмотрим новые возможности Flutter 3.22 для запуска с веб;
▫️сделаем небольшую игру для браузера, которая будет дополнительно использовать внешние C++ библиотеки с компиляцией через emscripten;
▫️научимся использовать кастомные шейдеры для графики в веб-приложении и возможности 3D-графики через WebGL (wasm);
▫️разберем не менее важные смежные темы и ответим на все возникающие вопросы.

Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.

📝 Встречаемся 3 июля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение!

➡️Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cy4SfD

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 lets-plot — мультиплатформенная библиотека для построения графиков и диаграмм, написанная на Kotlin и Python

pip install lets-plot

Графики, созданные с помощью lets-plot можно встраивать в JVM (Swing, JavaFX) и Kotlin/JS-приложения.

🖥 GitHub

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 github-workflows-kt — инструмент на Kotlin для создания рабочих процессов GitHub Actions

github-workflows-kt поможет писать типобезопасный код на Kotlin для организации надежных рабочих процессов, планирования GitHub Actions и т.д.

🖥 GitHub
🟡 Доки

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Compose ImageLoader — библиотека для настройки компонентов загрузки изображений для Kotlin

<dependency>
<groupId>io.github.qdsfdhvh</groupId>
<artifactId>image-loader</artifactId>
<version>1.8.1</version>
</dependency>


Позволяет настраивать пользовательский ImageLoader на каждой платформе и не только

🖥 GitHub
🟡 Доки

@KotlinSenior
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 strikt — библиотека Kotlin для работы с assertion

dependencies {
testImplementation("io.strikt:strikt-core:<version>")
}


Strikt — это библиотека Kotlin для работы с assertion в тестах;
предназначена для использования с такими компонентами как JUnit, Minutest, Spek или KotlinTest.

Strikt опирается на свободный стиль утверждений, похожий на AssertJ, но не использует сложную иерархию классов для построения утверждений.

🖥 GitHub
🟡 Доки

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как сделать Flutter-приложение плавным и отзывчивым?

Хотите научиться писать эффективные и высокопроизводительные приложения для всех платформ? Ждём вас на открытом практическом уроке от OTUS, где мы разберем:

▫️знакомство с DevTools и Perfetto;
▫️добавление контрольных точек через dart:developer;
▫️слои рендеринга на сцене, использование RepaintBoundary;
▫️чем помогает Impeller и когда интерфейс с ним становится быстрее;
▫️фильтры, которые влияют на производительность;
▫️структуру и назначение ServiceExtensions, визуальную пометку потенциально медленных виджетов;
▫️финальный замер производительности после всех оптимизаций.

Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.

Встречаемся 24 июля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cyra6g

Реклама. ООО «Отус онлайн-образование», ОГРН 117774661857
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Landscapist — высокооптимизированная библиотека Kotlin для загрузки изображений

Landscapist обеспечивает загрузку и отрисовку изображений с помощью 3 компонентов: Glide, Coil и Fresco.
Landscapist поддерживает отслеживание состояний загрузки изображений.
Библиотека также предоставляет разные удобные анимации, включая кроссфейды, трансформации размытия и многие другие.

А ещё Landscapist позволяет гибко управлять загрузкой изображений с помощью массы плагинов

🖥 GitHub
🟡 Доки

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Ktlint — линтер Kotlin в духе feross/standard (JS) и gofmt (Go)

brew install ktlint

Вообще, это довольно известный линтер, но если вдруг кто не знал — обязательно попробуйте

Особенности ktlint:
— не требует настройки; уже из коробки ktlint позволяет отслеживать соблюдение соглашений по стилю — Android Kotlin Style Guide

— ktlint позволяет легко создать собственные наборы правил; при необходимости эти правила можно легко отключить

— в ktlint встроен форматтер, который исправляет неправильное написание кода, когда это возможно

— настраиваемый вывод; из коробки доступны несколько отчетов форматов вывода plain, plain-summary, json, html и checkstyle; также без проблем можно создать собственный формат вывода

🖥 GitHub
🟡 Использование

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM