Как стать автором
Поиск
Написать публикацию
Обновить
58.35

Kotlin *

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

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

Лучший способ создания нескольких окружений для Spring Boot приложения с помощью Docker Compose

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

В новой статье от команды Amplicode я расскажу, как можно создать несколько Docker Compose файлов для разных нужд. Например, для продакшена и разработки, и при этом не утонуть в копипасте.

Читать далее

Туториал по Spring Data Envers для начинающих

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

Команда Spring АйО перевела статью, которая отлично подойдёт тем, кто ещё не знаком со Spring Data Envers. В статье на простых примерах объясняется, как отслеживать изменения данных в приложении, используя этот инструмент.

Читать далее

Kotlin для Самых маленьких

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

В этой статье я научу вас основам Kotlin. Начиная с самого начала мы дойдем до уверернного уровня использования Kotlin. Чтоб когда у вас спросили "Как сделать лямбду функцию" вы на лбу спросившего написали:

Читать далее

Как грузить данные во ViewModel?

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

Привет, Хабр!

Эта статья будет полезна для мобильных разработчиков, потому что в ней обсуждаются различные подходы к первоначальной загрузке данных во вьюмодели (Jetpack ViewModel) при ее использовании в проектах на Jetpack Compose (либо Compose Multiplatform).

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

Итак, перейдем к сути.

Читать далее

Dagger Hilt (Для начинающих)

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

Я являюсь разработчиком мобильных приложений с опытом уже более 3х лет! Я всегда разрабатываю мобильные приложения один - это требует моя работа. Но сегодня я хочу поделиться с Вами тем, что такое Dagger Hilt!

Следите за мной в телеграм

Dagger Hilt - это необходимый каждому инструмент, который упрощает в разы разработку мобильных приложений. Служит для внедрения зависимостей. В первую очередь он необходим тем, у кого в проекте есть множество классов, которые требуют реализации. Хотите чтоб за вас это сделал кто-то другой? Dagger Hilt к вашим услугам.

Читать далее

Делегаты и делегированные свойства в Kotlin

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

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube канала Android Insights

Сегодня мы погрузимся в мир делегатов и делегированных свойств в Kotlin. Эта тема может показаться сложной на первый взгляд, но я постараюсь объяснить её максимально понятно и подробно. Итак, приступим!

Читать далее

AI-ассистент со Spring AI (Часть I)

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

В новом переводе от команды Spring АйО показан процесс интеграции AI в немалоизвестное приложение Spring Petclinic. 

В статье автор пошагово делится своим опытом внедрения Spring AI, чтобы сделать приложение более интерактивным.

Читать далее

Новый подход к безопасному управлению состояниями в Kotlin-приложениях

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

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

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

Читать далее

Создание уведомлений на языке Kotlin

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

Как создать всплывающие уведомления в мобильном приложения, привязанные ко времени? Читаю документацию и разбираю код.

Читать далее

Паттерны применения многопоточности на коммерческом проекте (на примере Java)

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

После прочтения у вас сложится понимание того как работать с многопоточностью на реальном проекте

Список рассмотренных паттернов:

Запуск асинхронного процесса по сигнал
Параллельное выполнение задач без ожидания результата
Ограничение количества потоков для вызова внешнего сервиса
Выполнение Scheduled задач
Параллельное обращение к разным источникам, с последующим объединением результатов
Контекст
Ожидание асинхронного ответа

При этом в статье я намеренно не касался низкоуровневых механизмов, таких как synchronized, lock, volatile, барьеров (разве что semaphore), потому что они значительно реже применяются в работе

Читать далее

Koin: как сделать свой DI за 10 минут

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

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.

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

Дополнительная (но от того не менее важная) цель статьи — показать, что базовый механизм, на котором построен Koin, не такой уж и страшный :)

Тестовый текст

Прочие оптимизации кода Gradle Convention Plugins, выводы по результатам использования подхода

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

Всем привет! На связи Дима Котиков, и мы завершаем цикл статей о том, как облегчить себе жизнь и уменьшить boilerplate в gradle-файлах. В предыдущих статьях мы подготовили и настроили базовый модуль для написания Gradle Convention Plugins, написали несколько convention-плагинов в файлах -.gradle.kts, сделали еще один модуль и создали convention-плагины на базе kotlin-классов. В заключительной части мы немного порефакторим написанный код, попытаемся настроить области видимости convention-плагинов и extension-функций для конфигурации сборки, а также подведем итоги. 

Читать далее

Декларативный подход в организации gradle зависимостей в Android-проектах

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

В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.

Читать далее

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

Взлом JVM-приложения с помощью отладчика IntelliJ IDEA

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

Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим «режимом бога» в мире кода? 

В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.

Читать далее

Создание Convention Plugin-ов на базе Kotlin-классов

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

Всем привет! На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.

Читать далее

Проблема UseCase-ов: что нужно знать разработчикам Android

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

Введение

Если вы уже определенное время занимаетесь разработкой Android, вы, вероятно, слышали о UseCases. Их часто представляют как Святой Грааль Clean architecture. UseCases призваны отделить бизнес‑логику от Presentation и Data слоев, сделав ваш код более модульным, переиспользуемым и тестируемым. Но вот в чем загвоздка: UseCases не всегда являются серебряной пулей. На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, чего как раз и пытается избежать Clean Architecture. В этой статье мы развенчаем миф о UseCases и обсудим, когда они необходимы, а когда — просто пустая трата времени. Если вы разработчик Android и задаетесь вопросом, приносите ли вы больше вреда, чем пользы, следуя этому шаблону, эта статья для вас.

Читать далее

Пишем свой генератор ID для мобильных приложений

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

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Performance приложения Wildberries. 

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

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

Читать далее

Взаимодействие с клавиатурой в Compose: особенности и подводные камни

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

Привет, Хабр!

На связи Глеб Гутник, мобильный разработчик из компании xStack. В этой статье мы рассмотрим, как можно эффективно кастомизировать взаимодействие с клавиатурой в Jetpack Compose и Compose Multiplatform для создания комфортного UX.

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

На Android для этого предусмотрен флаг android:windowSoftInputMode="adjustResize", но он сжимает окно приложения без учета анимации клавиатуры, поэтому пользователь видит пустое поле долю секунды, пока клавиатура открывается:

Читать далее

Улучшаем автокомплит в смешанных Java-Kotlin проектах

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

Недавно я наткнулся на статью, где описывается, как можно убрать мешающие варианты из автокомплита в Android Studio. Но тот способ касается только классов — с методами у меня так же не получилось, и тогда мне пришла идея.

Что за идея?

JPA Entity Graph и нюансы его использования

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

Entity Graph — это один из мощных инструментов JPA, который помогает разработчикам гибко управлять загрузкой связанных сущностей. Entity Graph позволяет динамически настраивать загрузку данных во время выполнения программы, что делает его особенно полезным в проектах со сложными структурами данных.

Команда Spring АйО подготовила статью, в которой рассмотрела, как использовать Entity Graph.

Читать далее