fbpx
История одного бага или не все буферы одинаково полезны.

История одного бага или не все буферы одинаково полезны.

Сегодня расскажу вам интересную историю, которая произошла при рефакторинге одного из проектов. В коде одного из интеракторов начал падать SQL-запрос SQLiteException: too many SQL variables. Долго искали ошибку, и подозрение упало на недавно переписанную логику с RxJava на Kotlin Flow. Сравните 2 цепочки: Может показаться, что они выглядят одинаково, однако это заблуждение. Во-первых, давайте присмотримся…

Dagger Component Dependencies в многомодульных Android-приложениях

Dagger Component Dependencies в многомодульных Android-приложениях

В этой статье мы на примере рассмотрим как создать многомодульное Android-приложение, и помимо этого рассмотрим работу Dagger2 в контексте многомодульных приложений на примере работы Component Dependencies. Но перед тем, как мы начнем, не забудьте подписаться на  Telegram-канал там вы найдете множество полезных материалов для Android-разработчика. Итак, поехали Основы многомодульности. Для начала, давайте рассмотрим, для чего…

SOLID в Android. Single Responsibility

SOLID в Android. Single Responsibility

Это первая часть из серии статей, состоящей из пяти частей, посвященных принципам SOLID. Чтобы не пропустить следующие статьи на тему Android и мобильной разработки подписывайтесь на Telegram-канал SOLID — это аббревиатура, помогающая определить пять основных принципов объектно-ориентированного проектирования: Single Responsibility – Принцип единой ответственности (этот пост) Open-Closed Principle – Принцип открытости-закрытости Liskov Substitution Principle – Принцип…

Отличия Sequence API vs Collection

Отличия Sequence API vs Collection

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

Как подготовиться к собеседованию по System Design мобильному разработчику

Как подготовиться к собеседованию по System Design мобильному разработчику

В последнее время рынок труда в ИТ-индустрии переходит от рынка соискателя к рынку работодателя и компании все чаще заинтересованы в отборе максимально опытного специалиста, удовлетворяющего всем требованиям. Скорее всего вы слышали о недавних сокращениях в BigTech-компаниях, специалисты из которых наводнили рынок и теперь рубятся за позиции в компаниях поменьше. Однако стандартные наборы вопросов уже давно…

Шаблонный метод на примере формирования списков в Android

Шаблонный метод на примере формирования списков в Android

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

Используем join в SQLite-запросах Room для android

Используем join в SQLite-запросах Room для android

Недавно вышла 2.4.0-alpha04 -версия Room, которая упрощают написание методов DAO и позволяет возвращать данные запросов в формате Map<key,value>. В этом посте мы вспомним про форматы JOIN в SQLite и напишем простой пример, демонстрирующий новую фичу в Room. Типы Join в SQLite Для начала, давайте вспомним, что такое join. Join – это возможность объединения двух и более таблиц…

Реализация full-text поиска данных в android-приложениях через AppSearch и RxJava

Реализация full-text поиска данных в android-приложениях через AppSearch и RxJava

Совсем недавно Google анонсировал библиотеку для локального поиска документов AppSearch. Библиотека пока находится на стадии alpha-версии, но тем не менее уже можно применить её и рассмотреть ряд возможностей. В этой статье мы разработаем небольшое приложение для локального поиска разного рода документов и отобразим их пользователю для демонстрации работы AppSearch. Введение AppSearch – это высокопроизводительная библиотека…

Kotlin Android Extensions deprecated. Что делать?Инструкция по миграции

Kotlin Android Extensions deprecated. Что делать?Инструкция по миграции

Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated. kotlinx.android.synthetic is no longer a recommended practice. Removing in favour of explicit findViewById Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. В этой статье мы кратко рассмотрим, что такое…