Kotlin Developer – Telegram
Kotlin Developer
6.4K subscribers
203 photos
9 videos
273 links
Самый топовый канал по Kotlin

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

Мы на бирже: https://telega.in/c/KotlinSenior
Download Telegram
Промежуточные (intermediate) и терминальные (terminal) операции в Sequences

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

Операции над Sequence можно разделить на две категории: промежуточные (intermediate) и терминальные (terminal).

Промежуточные операции (intermediate) — это операции, которые возвращают новую Sequence.

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

filter(predicate: (T) -> Boolean): фильтрует элементы по заданному условию и возвращает новую Sequence

map(transform: (T) -> R): преобразует каждый элемент в новый элемент типа R и возвращает новую Sequence

sortedBy(selector: (T) -> R?): сортирует элементы по заданному ключу и возвращает новую Sequence

Терминальные операции (terminal) — это операции, которые выполняются немедленно и возвращают результат (не Sequence).

Терминальные операции могут быть вызваны только после всех промежуточных операций, так как они завершают последовательность и начинают вычисление результатов на основе всей последовательности, полученной после выполнения всех промежуточных операций. Если же терминальная операция вызывается до выполнения всех промежуточных операций, то она не будет иметь доступа к полной последовательности и вернет неполный результат. Примеры:

toList(): преобразует Sequence в список

toSet(): преобразует Sequence в множество

count(): возвращает количество элементов в Sequence

forEach(action: (T) -> Unit): выполняет действие для каждого элемента Sequence

ВАЖНО: вычисления запускаются только при вызове терминальной функции (до этого момента никаких вычислений не производится).
1
👩‍💻 Strikt — это библиотека для Kotlin, предназначенная для использования с тестовыми фреймворками, такими как JUnit и Spek.

Она использует fluent API, что упрощает построение простых и безопасных тестов с помощью Kotlin-расширений.

🌟 Strikt поддерживает интеграции с библиотеками Arrow, Jackson, MockK и Spring, что делает её гибким инструментом для тестирования различных типов данных и компонентов

🖥 GitHub

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Шаблон приложения Kotlin Multiplatform

🌟 Базовый шаблон приложения Kotlin Multiplatform для Android и iOS. Он включает общую бизнес-логику и обработку данных, а также реализацию общего пользовательского интерфейса с использованием Compose Multiplatform

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Koin — это лёгкий и прагматичный фреймворк для внедрения зависимостей (Dependency Injection) на языке Kotlin!

🌟 Он поддерживает как Kotlin Multiplatform, так и Android. Koin предоставляет удобный DSL для настройки зависимостей, минимизирует избыточность кода и интегрируется с различными экосистемами, включая Jetpack Compose и Ktor.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 EitherNet — это библиотека для Kotlin, предназначенная для обработки API-ответов в приложениях!

🌟 Она предоставляет типизированный подход к обработке результатов сетевых запросов, используя sealed-классы для представления успешных и неудачных ответов. Это упрощает работу с ошибками, исключая необходимость использования исключений для обработки ошибок. Например, можно различать типы ошибок, такие как сетевые сбои, HTTP-ошибки или специфические API-ошибки, что делает код более безопасным и понятным.

🌟 Библиотека интегрируется с Retrofit, позволяя разработчикам легко подключить её к существующим API-запросам. Она поддерживает аннотации, такие как @.DecodeErrorBody, для автоматической обработки тела ошибок HTTP-ответов. Это делает работу с API более удобной и предсказуемой, улучшая качество обработки ошибок и делая код проще для чтения и поддержки.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 telephoto — это инструмент для Android-разработчиков, позволяющий упростить работу с мультимедиа, предоставляя компоненты, такие как масштабируемые изображения с поддержкой жестов панорамирования и масштабирования!

💡 Основные функции включают ZoomableImage — замену стандартного Image() с поддержкой работы с большими изображениями благодаря автоматической субдискретизации, и модификатор Modifier.zoomable(), который можно использовать для создания жестов с другими элементами интерфейса.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 KorGE — это фреймворк для разработки кроссплатформенных 2D-игр на языке Kotlin!


🌟 Он поддерживает работу на платформах JVM, JavaScript, Android и iOS, а также предлагает удобный API для работы с графикой, звуком, анимацией и физикой. KorGE интегрируется с Gradle, что упрощает сборку и развертывание проектов.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 cryptography-kotlin — это мультиплатформенная библиотека на языке Kotlin, предоставляющая унифицированный API для различных криптографических операций, таких как генерация случайных чисел, шифрование, вычисление хешей, цифровые подписи, вывод ключей и соглашения о ключах!

🌟 Библиотека поддерживает алгоритмы, включая AES, RSA, ECDSA, ECDH, SHA, HMAC и PBKDF2. Она не реализует криптографические алгоритмы самостоятельно, а оборачивает проверенные решения, такие как OpenSSL 3.x, WebCrypto и JCA, обеспечивая типобезопасный API с согласованным поведением на разных платформах.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Kotlin-Result — функциональный подход к обработке ошибок. Библиотека предлагает монаду Result для Kotlin, вдохновлённую решениями из Rust и Haskell. Позволяет явно разделять успешный результат (Ok) и ошибку (Err), избегая исключений и null-значений.

Проект имеет zero-overhead реализацию через inline-классы и поддержку корутин. Подходит для проектов, где важна предсказуемость и читаемость кода обработки ошибок.

🖥 GitHub

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Compose Vectorize — это библиотека на базе Kotlin Multiplatform, предназначенная для автоматического создания ImageVector из .xml файлов! Она используется для преобразования графических ресурсов Android в векторные изображения, совместимые с compose.ui.graphics

🌟 Библиотека поддерживает тему и динамические цвета Material3, позволяя адаптировать цвета векторных изображений на основе тем оформления. Для работы она генерирует файлы Kotlin из XML-ресурсов, которые затем можно использовать в коде Compose

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Extra Ktor Plugins — это набор мощных плагинов для расширения возможностей Ktor-приложений как на стороне сервера, так и на стороне клиента!

🌟 Эти плагины помогают решать распространённые задачи, такие как интеграция с Kafka, планирование задач, ограничение частоты запросов и повышение устойчивости через Circuit Breaker.

🔐 Лицензия: MIT

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 AtomicFU — библиотека для работы с атомарными операциями в Kotlin. Этот проект от JetBrains предоставляет удобный и эффективный способ работы с атомарными операциями в Kotlin-проектах. Поддерживает все основные платформы: JVM, Native, JS и Wasm.

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

🖥 GitHub

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Митап по мобильной разработке в Санкт-Петербурге!⚡️

👉Когда — 4 сентября
👉Во сколько — 18:00
👉Где — Санкт-Петербург, БЦ Атлантик Сити

Что обсудим?

1️⃣ «Кастомная сериализация с помощью kotlinx.serialization» Антон Николаев (в android-разработке с 2020, сейчас — в онлайн-кинотеатре Okko в команде «Молодость»)
Разберём что такое json schema, и как мы используем ее для формирования ответов от бекенда; неудобство работы с json schema; библиотеку kotlinx.serialization, и как мы используем ее для упрощения работы с json schema


2️⃣«Уменьшение ошибок видеоплеера на Android» Егор Баженов (Android-разработчик VK, аспирант университета ИТМО)
Разберём частые ошибки воспроизведения видео на Android и способы их исправления через плеер или бэкенд. Полезно для разработчиков на ExoPlayer: доработки команды Егора сократили ошибки в 5 раз.


3️⃣ Воркшоп «Шейдерные анимации в Android на OpenGL, Vulkan и AGSL» Александр Верещагин (Android-разработчик в команде VK Музыки)
Сравним три подхода к шейдерам в Android: классический OpenGL, высокопроизводительный Vulkan и AGSL из Android 13. Разберём их сильные и слабые сторон


4️⃣ Воркшоп «Зачем CI/CD мобильным разработчикам?» Владислав Рябчевский (Автоматика-Сервис)
Практический воркшоп по CI/CD: разберём российские аналоги, соберём пайплайн для Aurora OS и научимся настраивать его в своих проектах.


Митап проводится совместно с Okko TechTeam. Встреча бесплатная, но необходима предварительная регистрация📍

Приходите за разбором реальных кейсов, плодотворным нетворкингом и полезными навыками!

👉Зарегистрироваться👈
1
👩‍💻 Galoisenne — это библиотека на Kotlin, предназначенная для работы с графами, конечными полями и дискретными динамическими системами!

🌟 Она реализует новый вычислительный подход, называемый графовыми вычислениями, который отличается от традиционных моделей, таких как машина Тьюринга или λ-исчисление Чёрча. Преимущество этого подхода заключается в возможности прямого преобразования в итеративное умножение матриц на GPU, что открывает широкие возможности для параллельных вычислений.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
📱System Design в мобильной разработке — это про архитектуру, которая выходит за рамки экранов и навигации.

Чтобы приложения масштабировались, выдерживали нагрузку и не ломались при росте — нужен системный подход.

Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.

В программе:

🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)

🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)

⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)

⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.

🔗 Подключайся — будет полезно

По промокоду для подписчиков скидка 500 р: android_crew_14_8zleHF
1
🔥 NFCGate — это приложение для Android, предназначенное для захвата, анализа и модификации NFC-трафика!

🔎 Основные возможности NFCGate:

🌟 Захват на устройстве: позволяет перехватывать NFC-трафик от сторонних приложений, работающих на устройстве.

🌟 Режим ретрансляции: передача NFC-трафика между двумя устройствами через сервер, где одно устройство работает в режиме "ридера", а другое эмулирует NFC-метку с использованием Host Card Emulation (HCE).

🌟 Режим воспроизведения: повторное воспроизведение ранее захваченного NFC-трафика в режиме "ридера" или "метки".

🌟 Клонирование: копирование начальной информации метки, такой как идентификатор (ID).

🌟 Экспорт в pcapng: сохранение захваченного NFC-трафика в формате pcapng для дальнейшего анализа в инструментах, таких как Wireshark.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Resaca — это библиотека для Jetpack Compose, позволяющая привязывать ViewModel или другие объекты к конкретным @Composable функциям, обеспечивая их сохранение во время пересозданий и навигации! Это позволяет создавать более мелкие и переиспользуемые компоненты с собственной логикой, улучшая структуру и поддержку кода.

🔐 Лицензия: MIT

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
Зовём на 2ХАКАТОН от 2ГИС

4–5 октября, офлайн, Москва
Два дня, чтобы общаться, кодить, вдохновляться и менять городские сервисы к лучшему!

Три трека: городские данные с ЦОДД, инклюзия с фондами «Антон тут рядом», «Продвижение», «ЛизаАлерт» и носимые устройства — часы, браслеты, AR и другие гаджеты.

Призовой фонд: 1 000 000 рублей
и шанс, что проект попадёт прямо в 2ГИС!

Регистрируйся с командой от 3 до 6 человек или соло — поможем найти команду в чате!

Реклама. ООО 'ДУБЛЬГИС', ИНН 5405276278, Erid: 2VSb5wynAim
1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Bonsai — это компонент для создания древовидных структур (Tree View) в Jetpack Compose!

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

🔐 Лицензия: MIT

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 FlexibleBottomSheet — мощный и настраиваемый компонент для работы с нижними листами (bottom sheets) в Jetpack Compose, включая мультиплатформенную поддержку!

🌟 Он позволяет использовать сегментированные размеры, настраивать модальные и немодальные типы листов, а также обеспечивает взаимодействие с элементами позади листа, как в Google Maps. Библиотека поддерживает три уровня расширения (полное, промежуточное и слегка открытое состояние), а также гибкие параметры для управления состояниями и анимацией.

🔐 Лицензия: Apache-2.0

🖥 Github

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