Асинхронные моки. Создаем и тестируем telegram-бот на Kotlin
Любая асинхронность повышает уровень тревожности при разработке автоматических тестов. Особенно в ситуации, когда нужно выполнить проверку корректности работы системы, основанной на графе состояний со взаимодействием с внешним API через Flow. Примером такой системы может быть Telegram-бот, построенный на диалоге с внешним пользователем. В этой статье мы с вами создадим простой бот на Kotlin (с поддержкой многоязычности) и последовательно разберем возможные способы использования асинхронных моков и тестов для Flow с использованием библиотеки mockk и типобезопасной библиотеки для взаимодействия с API Telegram на Kotlin.
✍️ @kotlin_lib
Любая асинхронность повышает уровень тревожности при разработке автоматических тестов. Особенно в ситуации, когда нужно выполнить проверку корректности работы системы, основанной на графе состояний со взаимодействием с внешним API через Flow. Примером такой системы может быть Telegram-бот, построенный на диалоге с внешним пользователем. В этой статье мы с вами создадим простой бот на Kotlin (с поддержкой многоязычности) и последовательно разберем возможные способы использования асинхронных моков и тестов для Flow с использованием библиотеки mockk и типобезопасной библиотеки для взаимодействия с API Telegram на Kotlin.
✍️ @kotlin_lib
👍2
How to move View with Keyboard in Android using Kotlin
https://johncodeos.com/move-view-with-keyboard-in-android-using-kotlin/
✍️ @kotlin_lib
https://johncodeos.com/move-view-with-keyboard-in-android-using-kotlin/
✍️ @kotlin_lib
👍3
Media is too big
VIEW IN TELEGRAM
Расширяем возможности kotlinx.serialization с помощью Arrow Meta
На проекте, использующим Kotlin, хочется работать с Kotlin-first библиотеками. Например, хочется вместо Jackson использовать kotlinx.serialization. К сожалению, перевести существующий проект на любимые технологии не всегда возможно из-за разницы в подходах или отсутствии фич. Например, global naming strategy.
Можно ли обойти ограничения библиотеки и добавить недостающее?
Можно! С помощью Arrow Meta.
Arrow Meta — это библиотека, позволяющая писать плагины для компилятора, линтеры и другие преобразователи исходного кода.
В данном докладе мы поговорим о настройке проекта, возможностях библиотеки и разберём реальный use-case добавления global naming strategy в kotlinx.serialization. Данный доклад будет интересен продвинутой аудитории, преимущественно использующей Kotlin для backend-разработки.
✍️ @kotlin_lib
На проекте, использующим Kotlin, хочется работать с Kotlin-first библиотеками. Например, хочется вместо Jackson использовать kotlinx.serialization. К сожалению, перевести существующий проект на любимые технологии не всегда возможно из-за разницы в подходах или отсутствии фич. Например, global naming strategy.
Можно ли обойти ограничения библиотеки и добавить недостающее?
Можно! С помощью Arrow Meta.
Arrow Meta — это библиотека, позволяющая писать плагины для компилятора, линтеры и другие преобразователи исходного кода.
В данном докладе мы поговорим о настройке проекта, возможностях библиотеки и разберём реальный use-case добавления global naming strategy в kotlinx.serialization. Данный доклад будет интересен продвинутой аудитории, преимущественно использующей Kotlin для backend-разработки.
✍️ @kotlin_lib
👍1
How to use Kotlin Multiplatform ViewModel in SwiftUI and Jetpack Compose
https://medium.com/icerock/how-to-use-kotlin-multiplatform-viewmodel-in-swiftui-and-jetpack-compose-8158e98c091d
✍️ @kotlin_lib
https://medium.com/icerock/how-to-use-kotlin-multiplatform-viewmodel-in-swiftui-and-jetpack-compose-8158e98c091d
✍️ @kotlin_lib
👍1
Что такое Kotlin SAM?
Если вы когда-нибудь писали на Kotlinbe, то наверняка слышали о его функции SAM, а именно о функциональных интерфейсах. Эта функция используется во многих библиотеках, например, в Ktor. Таким образом, изучение того, что это такое и как его использовать, является обязательным, если не сказать - необходимым, для нас, разработчиков.
https://oguzhanaslann.medium.com/what-is-kotlin-sam-c6cfee64b00d
✍️ @kotlin_lib
Если вы когда-нибудь писали на Kotlinbe, то наверняка слышали о его функции SAM, а именно о функциональных интерфейсах. Эта функция используется во многих библиотеках, например, в Ktor. Таким образом, изучение того, что это такое и как его использовать, является обязательным, если не сказать - необходимым, для нас, разработчиков.
https://oguzhanaslann.medium.com/what-is-kotlin-sam-c6cfee64b00d
✍️ @kotlin_lib
👍4
Kotlin Algorithms and Design Patterns
В этом репозитории приведены наиболее распространенные алгоритмы, структуры данных и паттерны проектирования, написанные на языке программирования Kotlin.
Весь код разбит по отдельным пакетам:
Для каждого файла с кодом сделаны тесты, которые находятся в директории test/kotlin
✍️ @kotlin_lib
В этом репозитории приведены наиболее распространенные алгоритмы, структуры данных и паттерны проектирования, написанные на языке программирования Kotlin.
Весь код разбит по отдельным пакетам:
ru.sorting
- алгоритмы сортировкиru.search
- алгоритмы поискаru.structures
- структуры данных (списки, массивы, стэк, очередь, бинарное дерево и др.)design-patterns
- паттерны проектированияru.other
- другие алгоритмы (расстояние Левенштейна, алгоритм Кнута Морриса Пратта и т.д.)Для каждого файла с кодом сделаны тесты, которые находятся в директории test/kotlin
✍️ @kotlin_lib
👍4
Kotlin Algorithms and Design Patterns
Eng ver. https://github.com/evitwilly/Kotlin-Algorithms-and-Design-Patterns/
✍️ @kotlin_lib
Eng ver. https://github.com/evitwilly/Kotlin-Algorithms-and-Design-Patterns/
✍️ @kotlin_lib
GitHub
GitHub - DmitryTsyvtsyn/Kotlin-Algorithms-and-Design-Patterns: This repository contains the most common algorithms and data structures…
This repository contains the most common algorithms and data structures written in the Kotlin language with simple and concise code. - DmitryTsyvtsyn/Kotlin-Algorithms-and-Design-Patterns
❤2
KMP, iOS Developers and Production
Kotlin Multiplatform (или KMP, KMM и т. п.) уже несколько лет широко используется в продакшен приложениях. JetBrains создала веб-сайт со списком компаний, которые в настоящее время используют KMP. Далее
✍️ @kotlin_lib
Kotlin Multiplatform (или KMP, KMM и т. п.) уже несколько лет широко используется в продакшен приложениях. JetBrains создала веб-сайт со списком компаний, которые в настоящее время используют KMP. Далее
✍️ @kotlin_lib
👍3
To Flow or not to Flow? Message subscription in Kotlin
https://dev.to/altavir/to-flow-or-not-to-flow-message-subscription-in-kotlin-57ea
✍️ @kotlin_lib
https://dev.to/altavir/to-flow-or-not-to-flow-message-subscription-in-kotlin-57ea
✍️ @kotlin_lib
👍1
An Illustrated Guide • Scopes and Scope Functions
https://typealias.com/start/kotlin-scopes-and-scope-functions/
✍️ @kotlin_lib
https://typealias.com/start/kotlin-scopes-and-scope-functions/
✍️ @kotlin_lib
👍1
Seal — загрузчик аудио или видео файлов для Android в цветах Material You. Умеет скачивать видео или аудио со стриминговых платформ (в том числе плейлисты целиком), встраивать субтитры в скачиваемое видео, динамически менять цвета в UI в соответствии с заветами Material Design 3. Написан на Kotlin.
https://github.com/JunkFood02/Seal
✍️ @kotlin_lib
https://github.com/JunkFood02/Seal
✍️ @kotlin_lib
👍4
Pagination in Kotlin Multiplatform Mobile
https://betterprogramming.pub/pagination-in-kotlin-multiplatform-mobile-a96f21e71668
✍️ @kotlin_lib
https://betterprogramming.pub/pagination-in-kotlin-multiplatform-mobile-a96f21e71668
✍️ @kotlin_lib
👍1
Почему исключения в Kotlin Coroutines это сложно и как с этим жить?
Обработка исключений, вероятно одна из самых сложных частей, когда вы изучаете корутины в Kotlin. В этой статье, я расскажу о причинах такой сложности и объясню некоторые ключевые моменты для хорошего понимания темы. После этого вы сможете реализовать правильную инфраструктуру для обработки ошибок в своем собственном приложении.
original
✍️ @kotlin_lib
Обработка исключений, вероятно одна из самых сложных частей, когда вы изучаете корутины в Kotlin. В этой статье, я расскажу о причинах такой сложности и объясню некоторые ключевые моменты для хорошего понимания темы. После этого вы сможете реализовать правильную инфраструктуру для обработки ошибок в своем собственном приложении.
original
✍️ @kotlin_lib
👍2
Design of Kotlin Coroutines
https://proandroiddev.com/design-of-kotlin-coroutines-879bd35e0f34
✍️ @kotlin_lib
https://proandroiddev.com/design-of-kotlin-coroutines-879bd35e0f34
✍️ @kotlin_lib
👍2
Dotlin — это компилятор Kotlin в Dart. Цель состоит в том, чтобы интегрировать Kotlin как язык в экосистему Dart, сочетая лучшее из обоих миров: язык Kotlin и его стандартную библиотеку с экосистемой и системой сборки Dart.
Dotlin использует IR (Immediate Representation) компилятор Kotlin и на его основе генерирует исходный код Dart. Правда, на данный момент поддерживаются не все функции Kotlin.
Support all Kotlin language features
Support the Kotlin standard library
Allow the use of any library written in Dart by generating external Kotlin APIs
Generate code that is still readable and pleasant to use for Dart consumers
Integrate with Dart's build system (e.g. use pubspec.yaml to define dependencies)
Create an IntelliJ/Fleet plugin
https://github.com/dotlin-org/dotlin
✍️ @kotlin_lib
Dotlin использует IR (Immediate Representation) компилятор Kotlin и на его основе генерирует исходный код Dart. Правда, на данный момент поддерживаются не все функции Kotlin.
Support all Kotlin language features
Support the Kotlin standard library
Allow the use of any library written in Dart by generating external Kotlin APIs
Generate code that is still readable and pleasant to use for Dart consumers
Integrate with Dart's build system (e.g. use pubspec.yaml to define dependencies)
Create an IntelliJ/Fleet plugin
https://github.com/dotlin-org/dotlin
✍️ @kotlin_lib
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Курс по корутинам
#1 Что такое корутина. Важные особенности
#2 CoroutineContext. Настраиваем корутины
#3 Жизненный цикл корутины. CoroutineScope. Structured Concurrency
#4 Обработка ошибок в корутинах
#5 Каналы. Зачем если есть Flow?
#6 Синхронизация между корутинами
#7 Kotlin Coroutines Flow. StateFlow. SharedFlow
#8 Корутины в Android. Специальные API
https://www.youtube.com/playlist?list=PL0SwNXKJbuNmsKQW9mtTSxNn00oJlYOLA
✍️ @kotlin_lib
#1 Что такое корутина. Важные особенности
#2 CoroutineContext. Настраиваем корутины
#3 Жизненный цикл корутины. CoroutineScope. Structured Concurrency
#4 Обработка ошибок в корутинах
#5 Каналы. Зачем если есть Flow?
#6 Синхронизация между корутинами
#7 Kotlin Coroutines Flow. StateFlow. SharedFlow
#8 Корутины в Android. Специальные API
https://www.youtube.com/playlist?list=PL0SwNXKJbuNmsKQW9mtTSxNn00oJlYOLA
✍️ @kotlin_lib
👍8❤2👎1🔥1🤔1🤮1
Kotlin Multiplatform. Как превратить нативное приложение в кроссплатформенное
Кроссплатформенные технологии и концепция «Написал один раз, используй везде» популярны всегда. Их преимущество в ускорении и упрощении процесса разработки за счет использования общих модулей кода. Одним из таких инструментов является Kotlin Multiplatform. Вместе с Анной Жарковой мы посмотрим, как можно превратить приложение Android в кроссплатформенное и сделать используемым вместе с iOS.
https://www.youtube.com/watch?v=C7vEe8-sm24
✍️ @kotlin_lib
Кроссплатформенные технологии и концепция «Написал один раз, используй везде» популярны всегда. Их преимущество в ускорении и упрощении процесса разработки за счет использования общих модулей кода. Одним из таких инструментов является Kotlin Multiplatform. Вместе с Анной Жарковой мы посмотрим, как можно превратить приложение Android в кроссплатформенное и сделать используемым вместе с iOS.
https://www.youtube.com/watch?v=C7vEe8-sm24
✍️ @kotlin_lib
YouTube
Анна Жаркова — Kotlin Multiplatform. Как превратить нативное приложение в кроссплатформенное
Даты ближайшего фестиваля TechTrain будут анонсированы позднее.
Подробнее о TechTrain: https://jrg.su/YR8JKw
— Ближайший фестиваль: TechTrain 2022 Autumn – 8 октября, online
Билеты – https://bit.ly/3Czzyay
– –
Кроссплатформенные технологии и концепция «Написал…
Подробнее о TechTrain: https://jrg.su/YR8JKw
— Ближайший фестиваль: TechTrain 2022 Autumn – 8 октября, online
Билеты – https://bit.ly/3Czzyay
– –
Кроссплатформенные технологии и концепция «Написал…
🔥4👍1🤔1
MVI implementation in Kotlin Multiplatform using the Reaktive library (Part 1)
https://randy-arba.medium.com/mvi-implementation-in-kotlin-multiplatform-using-the-reaktive-library-part-1-2c283c9e50de
MVI implementation in Kotlin Multiplatform using the Reaktive library (Part 2)
https://randy-arba.medium.com/mvi-implementation-in-kotlin-multiplatform-using-the-reaktive-library-part-2-50cafdfcb35a
✍️ @kotlin_lib
https://randy-arba.medium.com/mvi-implementation-in-kotlin-multiplatform-using-the-reaktive-library-part-1-2c283c9e50de
MVI implementation in Kotlin Multiplatform using the Reaktive library (Part 2)
https://randy-arba.medium.com/mvi-implementation-in-kotlin-multiplatform-using-the-reaktive-library-part-2-50cafdfcb35a
✍️ @kotlin_lib
👍2