Все потоки
Поиск
Написать публикацию
Обновить
47.52

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Создаем eval через байт-код JVM

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.3K

В интерпретируемых языках программирования (или в языках, которые включают возможность компиляции в runtime) есть возможность вычисления значения выражения, полученного из внешнего источника (например, для построения графика функции, введенной пользователем) с подстановкой актуальных значений переменных. Но JVM изначально ориентирована на компиляцию перед выполнением и механизма, аналогичного eval, в JVM нет (кроме, конечно, возможности использования Nashorn и eval в JavaScript-коде). В этой статье мы рассмотрим пример динамической генерации байт-кода из математического выражения.

Читать далее

Ultron — самый простой фреймворк для разработки UI тестов Android

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров5.7K

Ultron — самый простой фреймворк для разработки UI тестов Android.

В данной статье я познакомлю вас с малоизвестным фреймворком, который позволит вам облегчить android ui тестирование.

А это еще что?

Ускоряем дебаг в разы. Зачем и как использовать брейкпоинты

Время на прочтение4 мин
Количество просмотров5.2K

Всем привет! Меня зовут Вадим Джибалов, и я Android-разработчик в AGIMA. Свою первую статью на Хабре я посвящаю простой, но важной теме — брейкпоинты. Пишу я её для джуниоров, которые только знакомятся с отладкой. Мы уделяем много внимания развитию наших стажеров и росту специалистов. А когда только начинаешь программировать, найти даже элементарные вещи бывает нелегко. Мы готовы помочь.

Читать далее

Почему так удобно использовать паттерн MVI в KMM

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров16K

Привет!

Меня зовут Стефан Серхир. Я мобильный разработчик в KTS. Пишу под Android, iOS и КММ (Kotlin Multiplatform Mobile) и веду курсы в школе Metaclass.

Недавно мы провели вебинар, в котором разобрали Model-View-Intent (MVI) в KMM на практике и посмотрели, как это выглядит в коде iOS и Android. Это статья написана по мотивам этого вебинара. Подход MVI в KMM полезен, потому что:

— Удобно шарить бизнес-логику между всеми платформами
— Можно выделять отдельный функционал в фича-модули
— Сам MVI позволяет легко разделять экран на различные состояния и менять их в зависимости от действий пользователя
— MVI очень легко ложится на Jetpack Compose (Android) и SwiftUi (iOS)

В статье я расскажу, что такое MVI и KMM вообще, опишу преимущества и недостатки MVI и разберу на практике подход MVI в KMM.

Читать далее

Разнообразие enum в Kotlin

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров7.1K

Kotlin, являясь мощным современным языком программирования, дает возможность разработчикам создавать эффективный и читаемый код. Одна из таких фич это перечисления - Enum classes - тип данных, который позволяет определить множество именованных констант. В этой статье рассмотрим различные примеры использования enum, которые помогут эффективнее применять этот инструмент в своих проектах.

Читать далее

Ни одно задание не будет провалено: Spring Boot и Quartz в режиме cluster

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K

Туториал по настройке библиотеки Quartz в режиме кластера в Spring Boot приложении с возможностью отслеживания и управления жизненным циклом задания, в том числе переносом задания в случае необходимости.

Читать далее

Создание и тестирование процессора аннотаций и кодогенератора на KSP

Время на прочтение8 мин
Количество просмотров1.4K

В первой части статьи мы рассмотрели подход к обработке аннотаций (и возможной генерации дополнительных исходных текстов), который используется в мире Java и долгое время применялся также для Kotlin (при этом Kotlin-код предварительно преобразовывался в Java-классы, что занимало дополнительное время для компиляции). С 2021 года стал доступен новый плагин для gradle, который основан на непосредственном анализе исходных текстов Kotlin и позволяет генерировать код без необходимости создания текстового файла. В этой статье мы разберемся как создать процессор аннотаций для KSP и как его можно протестировать?

Читать далее

Как настроить автомиграцию в Room

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров5.3K

Привет, Хабр! Меня зовут Роман, я Android-разработчик в IT-компании SimbirSoft. В этой статье я расскажу про автомиграцию в Room (версия не ниже Room 2.4.0), варианты ее использования, преимущества, которые она дает, и проблемы, с которыми мы можем столкнуться.

Автомиграция поможет упростить процесс работы с базой данных, особенно если она большая, и в нее часто вносятся изменения. Она позволит не писать самостоятельно сложные SQL-запросы, а сгенерирует их автоматически в специально отведенной директории. Это позволит избежать опечаток при миграции и сэкономить время (если у нас запросы с огромным количеством полей).

Дисклеймер: в этой статье я буду ориентироваться на то, что мы уже умеем работать с Room и знаем, для чего нужна миграция. Материал будет полезен Android-разработчикам уровня Middle.

Читать далее

Custom View в Android — краткое руководство

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров41K

Обзор возможностей кастомных View с примерами кода на Kotlin + бонус в виде ссылок на полезные статьи и обучающие видео по данной теме.

1. Введение.
— Когда может понадобиться реализация собственного View?
— Способы создания собственного View.
— Иерархия View в Android.
2. Жизненный цикл View.
3. Конструкторы View.
4. Методы View.
onAttachToWindow()
onMeasure()
onLayout()
onDraw()
onSizeChanged()
onSaveInstanceState() и onRestoreInstanceState()
onTouchEvent()
5. Обновление View.
invalidate()
requestLayout()
6. Атрибуты для Custom View.
7. Дополнительные материалы для изучения.

Читать дальше

Корни RxJava — о чем мы не подозревали

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.1K

В этой статье описано то, как под капотом работает RxJava и почему она работает именно так, а не иначе. Статья рекомендуется к прочтению разработчикам уровня junior - middle, так же очень желательно перед прочтением статьи ознакомиться/вспомнить паттерн Observer, потому что вся история основана на нём.

Читать далее

Многоязычность на Kotlin-бэкэнде

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.5K

Язык программирования Kotlin часто ассоциируется с мобильной разработкой для Android и это неудивительно, учитывая что он принят Google как официальный язык разработки, и принес множество необходимых и удобных языковых конструкций и кооперативной многозадачности, при этом сохраняя совместимость на уровне байт-кода с ранними версиями JVM. Но применимость языка существенно выше и имеющиеся библиотеки (как созданные для Java, так и разработанные специально для Kotlin) позволяют создавать обычные приложения (например, на JavaFX или с использованием платформенных графических библиотек и Kotlin Native), а также создавать код для бэкэнда c подключениям к базам данных, кэшам, очередям сообщений и т.д. При этом, если для мобильной разработки проблем с поддержкой многоязычных сообщений не возникает (благодаря механизму ресурсов, в том числе строк, которые могут быть переопределены для конкретной локали), то для бэкэнда это становится нетривиальной задачей. В этой статье мы обсудим несколько подходов для создания бэкэнда с поддержкой нескольких языков.

Читать далее

Kotlin 1.8.20

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров3.5K

3 Апреля, вышло очередное обновление Kotlin 1.8.20

Вот некоторые изменения:

Читать далее

Как я заставил Python взаимодействовать с Kotlin

Время на прочтение4 мин
Количество просмотров4.3K

Я работаю с POC (proof-of-concept. проверка концепции), где мы используем Ktor (Kotlin Framework) в качестве бекэнда DSL. В этом проекте нами извлекается обобщенное резюме из значительного объема текста. Мы столкнулись с проблемой написания кода машинного обучения на Kotlin. Kotlin молод по сравнению с Python, R и т.д.

Читать далее

Ближайшие события

Создание и тестирование процессоров аннотаций (с кодогенерацией) для Kotlin

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.3K

В разработке с использованием Kotlin (или Java) для создания классов по верхнеуровневому описанию часто используется маркировка аннотациями (например, для моделей таблиц баз данных, сетевых запросов или инъекции зависимостей) и подключение процессоров аннотаций, которые также могут генерировать код, доступный из основного проекта. Запуск процессоров аннотаций выполняется внутри gradle (для Java-проектов через annotationProcessor, для Kotlin - kapt) и встраивается как зависимость для целей сборки проекта. И конечно же, как и для любого другого кода, для процессора аннотаций необходимо иметь возможность разрабатывать тесты. В этой статье мы рассмотрим основы использования кодогенерации (с использованием kapt) и разработки тестов для созданных генераторов кода. Во второй части статьи речь пойдет о разработке процессоров на основе Kotlin Symbol Processing (KSP) и созданию тестов для них.

Читать далее

Kotlin Multiplatform Mobile: как усложнить жизнь себе и упростить её потомкам

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.9K

На внутреннем проекте red_mad_robot не хватало iOS-разработчиков, и Head of Android red_mad_robot Central Asia Влад Бауэр задумался о том, как можно ускорить процесс. И в итоге решил пошарить часть кода и перенести его в Kotlin Multiplatform Mobile. Спойлер: у него получилось, и теперь он рассказывает о нюансах, с которыми пришлось столкнуться.

Читать далее

Автоматизируем тестирование микросервисов с REST-assured и Kotlin + Allure

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров8.4K

Всё началось с того, что перед нами поставили задачу покрыть тестами наши сервисы для микросервисной платформы TOT Pyramid, которую мы развиваем последние два года. Мы были вправе выбрать стек технологий самостоятельно. Данные тесты должны запускаться в CI каждый раз при создании мердж-реквеста и проверять, что изменения ничего не сломали. Выбор пал на Rest-assured, тем более хотелось писать тесты на модном, молодёжном Kotlin.

В данной статье хочу поделиться опытом написания автотестов на Rest-assured + Kotlin. Статья не претендует на Rocket Science - в ней я приведу простые примеры и основные принципы тестирования API, которые применяются у нас в TOT Systems.

Поэтому, если вы ищете инструмент для покрытия API автотестами и при этом хотите писать на Kotlin, то эта статья для вас.

Читать далее

KotlinDL 0.5 появился на Android

Время на прочтение7 мин
Количество просмотров3K

Вышла версия 0.5 нашей библиотеки глубокого обучения KotlinDL.

Этот выпуск посвящен новому API для удобного и простого в использовании развертывания моделей ONNX на Android. Мы доработали препроцессинг DSL, осуществили поддержку ONNX Runtime Execution Providers и многое другое.

Читать далее

Расширяем Android Lint

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.6K

Часто при разработке собственных фреймворков (или для проверки соответствия кода требованиям организации) возникает необходимость реализовать сложные проверки корректности использования в коде приложения. Это может быть реализовано через расширение возможностей линтера, который используется в Android Studio. В этой статье мы рассмотрим общие подходы к созданию таких расширений для Android-приложений и несколько примеров для проверки названий функций и наличия аннотаций.

Читать далее

Вопросы и ответы для собеседования по Kotlin. Часть 2

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров58K
Читать далее

Вопросы и ответы для собеседования по Kotlin. Часть 1

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров121K
Читать далее