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

Kotlin *

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

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

Пишем Telegram-бота для скачивания видео из VK на Spring Boot и деплоим в Kubernetes

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

В последнее время на Хабре несколько раз всплывала тема загрузки видео из VK для дальнейшего просмотра оффлайн. Я решил подойти к этому вопросу немного с другой стороны, и решить вопрос с помощью телеграм-бота.

Таким образом, убиваем сразу нескольких зайцев:

не нужно ставить никаких дополнительный приложений или плагинов: скорее всего Telegram и так уже установлен на телефоне и/или на компе;

автоматическая синхронизация видео между устройствами - поставили на закачку на компе, пошли на улицу, а тот же файл - в телефоне;

Telegram позволяет загружать файлы для последующего просмотра/прослушивания оффлайн, и это работает с выключенным экраном из коробки (привет, премиум подписки vk/youtube).

Читать далее

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

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

Как создать анимированные шейдеры в Jetpack Compose

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.7K
Jetpack Compose — молодой, но бурно развивающийся фреймворк для разработки под Android, который обладает множеством не всегда очевидных фичей. Сегодня я хотел бы описать одну из таких встроенных возможностей: речь идет об использовании OpenGL-шейдеров. Они позволяют делать красивые анимированные интерфейсы, как на картинке ниже.
image
Читать дальше →

Inline Event Sourcing

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

Привет, Хабр! При построении приложений, связанных с бизнес-процессами и реальными людьми, постоянно нужна история действий. Один из способов ее получить -- event sourcing.

Это заметное отклонение от обычной архитектуры: потребуется дополнительное обучение программистов и новые лучшие практики.

Далее описываю свой подход к event sourcing без асинхронности и распределенности, зато и без типичных для event sourcing проблем.

Есть ссылка на репозитарий с шаблоном event sourcing приложения на Kotlin.

Читать далее

Jetpack Compose: Expandable Text

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

На протяжении нескольких последних лет мобильная разработка движется в сторону декларативного пользовательского интерфейса. Кто-то начал раньше, кто-то – позже. Большой толчок развитию этого направления сообщество Android разработчиков получило благодаря языку программирования Kotlin, который отлично раскрывает данную концепцию. В 2019 Google представила свой фреймворк для создания декларативного UI: Jetpack Compose.

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

Читать далее

Четыре платформы — один код. Что такое Compose Multiplatform?

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

Разработчики давно грезили о возможности писать кроссплатформенный код — такой, который запускался и работал бы одинаково в любой операционной системе любой архитектуры. Сегодня принципом «Write once, run anywhere», когда-то прогремевшим в связи с появлением языка Java, трудно кого-либо удивить. И все же есть ниша, в которой не так много кроссплатформенных технологий: это UI-разработка.

Не будет преувеличением сказать, что на сегодняшний день есть только два UI-фреймворка, которые позволяют запускать один и тот же UI на разных платформах и широко представлены на рынке: React Native и Flutter. Казалось бы, чего еще желать? Сразу две технологии предоставляют возможность шарить UI-фичи между платформами и прекрасно с этим справляются. Но эта статья — не о них, а об их младшем собрате, удобном и мощном инструменте мобильной и десктопной разработки — Compose Multiplatform.
Читать дальше →

Google I/O 2023. Что нового в Kotlin для Android?

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

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.

И сегодня мы посмотрим на новинки Kotlin для Android, представленные Google в видео «What's new in Kotlin for Android» с Google I/O 2023 (с некоторыми моими комментариями и дополнениями).

В этом году основной фокус делают на следующие пункты:
  • Kotlin Compiler 2.0 (доступен с 2024 года)
  • Kotlin DSL скрипты build.gradle по умолчанию
  • KSP как приоритетный процессинг аннотаций
  • Kotlin Multiplatform (неожиданно)

Также внимание отводится Jetpack Compose и его улучшениям, но подробнее ознакомиться стоит в тематических видео.

Итак, начнем с компилятора Kotlin.
Читать дальше →

Шаблон Котлин-приложения

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

Где-то раз в год возникает желание посмотреть: если сейчас начинать приложение с нуля, то что бы обязательно в него включил? Кроме очевидной практической ценности (обычно начинается новый проект) это так же позволяет осознать какой архитектурный опыт получен за последнее время.

Необходимость шаблона сверх https://start.spring.io вызвана следующими типами доработок:

Читать далее

Telegram Bot на Kotlin:… и в продакшн

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

Итак, в предыдущих статьях (Введение, Командуем, Дратути) мы уже разобрали многие аспекты написания бота: как начать писать бота, как делать плагины-расширения и как работать с непосредственно пользователем и создавать функционал. Однако, до сих пор мы не разобрали, как, куда и с помощью чего можно публиковать и запускать ботов в проде.

Читать далее

«Внешняя» навигация в многомодульном проекте на Kotlin

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

Привет, Хабр! Я Дмитрий Воронов из Doubletapp, в этой статье расскажу, как мы делали навигацию в Яндекс Путешествиях. С навигацией в Android, кажется, давно все ясно: бери Jetpack Navigation, читай официальную документацию и следуй ей — и все получится. Если рекомендованная библиотека не подходит — берешь Fragment Manager, прописываешь собственную реализацию и идешь хвастаться коллегам. Если писать свою реализацию нет желания, а официальная библиотека не соответствует модным веяниям — дополняешь свое резюме умением работать с Cicerone. Если твои вкусы специфичны — почему бы не удивить людей неожиданным добавлением в проект Alligator?

В одном коротком абзаце удалось обозначить сразу 4 варианта реализации навигации и, казалось бы, в чем вопрос? Каждый выбирает для своего проекта подходящий ему вариант. Все так, но ровно до того момента, пока не возникает необходимость «поделиться» частью приложения — интегрироваться в другое приложение, и там, как оказывается, другая реализация навигации. И здесь начинается: «Что будем делать? Попробуем написать мост? А может, лучше перепишем навигацию?» 

На этапе проектирования лучше сразу уточнить возможность дальнейшей интеграции с другими приложениями и заранее к этому подготовиться. Помимо всего прочего, нужно подготовить и навигацию, и сделать ее «внешней» — одно из возможных решений этой задачи.

Что такое «внешняя» навигация?
Как это делается?
Реализуем модуль навигации
Примеры реализации

Читать далее

PostgreSQL, Spring Framework и Android для начинающего разработчика

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

Здравствуй, дорогой читатель. Каждый разработчик, независимо от его специальности, сталкивался (или столкнётся во время своей профессиональной карьеры) с задачей, в которой необходимо разработать проект, имеющий базу данных, серверную часть и конечный продукт, взаимодействующий с пользователем. Данная статья поможет новичку разобраться с данной задачей.

В статье будут затронуты такие важные темы, как теория баз данных, реляционная база данных PostgreSQL, Spring Framework и Android разработка. Также будет рассмотрен базовый, не очень сложный пример, который поможет разобраться во всех этих темах и "потрогать" их руками.

Статья предназначена для начинающего разработчика, но имеющего базовые знания о разработке программного обеспечения и языках программирования Java и Kotlin.

Все материалы и исходный код можно найти здесь.

Читать далее

Kotlin Coding Conventions

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

От автора поста: ниже представлен Kotlin Code Style на 2 мая 2023 года. Конвенция постоянно меняется, но основные принципы уже заложены и неизменны. Перевод предоставлен без комментариев, как есть.

Читать далее

Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью

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

Взгляд на скорость выполнения кода с применением NDK.

Вычисление фрактала Мандельброта с помощью Kotlin и С++ и тест на реальных устройствах

Читать далее

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

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

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

Circuit-фреймворк для Jetpack Compose и тестирование с Robolectric

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

Тестирование приложений Jetpack Compose обычно основано на использовании библиотеки Compose UI Test и создании юнит-тестов поверх библиотек мокирования или DI. Однако этот подход требует наличия эмулятора и не всегда применим для использования в конвейере CI/CD, где обычно используется Robolectric вместо настоящего Android Runtime. При этом нередко в тестах используется скриншотное тестирование (например, через использование captureToImage в Compose UI Test) и сравнение рендеров с образцом, что изначально недоступно в Robolectric из-за особенностей рендеринга. В этой статье мы рассмотрим использование библиотеки Roborazzi, которая решает эту проблему, совместно с новым подходом к архитектуре Jetpack Compose приложений, которая была предложена Slack в библиотеке Circuit.

Читать далее

CustomView Android. Кольцевая диаграмма для отображения статистики

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

Наверное, каждый Android-разработчик на этапе обучения или в процессе выполнения задач в коммерческом проекте задумывался о создании своей CustomView без использования сторонних библиотек, с собственной отрисовкой, анимацией, а также хорошей оптимизацией, чтобы CustomView адаптировалась под переданные ей размеры, правильно отображалась в независимости от экрана пользователя.

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

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

Вперед за CustomView!

Kafka Client для фреймворка Ktor

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

Мне понадобилось написать приложение на Ktor с использованием Apache Kafka и Kafka Streams. Официального клиента или плагина для Ktor'a я не нашел, а работать с ванильной Кафкой не хотелось, поэтому я как любой уважающий себя разработчик решил написать велосипед.

Читать далее

Написали UI для чата поддержки с помощью Jetpack Compose: как это было

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

В предыдущей статье я упоминал кейс приложения «Бланк». Этот материал — логическое и более глубокое продолжение.

В официальном приложении «Бланк» на Android мы работали над пользовательским интерфейсом чата поддержки. Конечная цель — сделать удобный и отзывчивый UI. Задача – интегрировать Chatwoot с приложением с помощью Jetpack Compose.

Стек технологий: Android Studio, Kotlin, Jetpack Compose, Chatwoot.

Читать далее

В какой сказке встречаются Баба Яга и Колобок или сказ о том как мы таск-трекер писали, часть вторая

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

Всем привет, как и обещали, публикуем продолжение. Первая часть, напомню, здесь (если не читали, то лучше начать с нее, чтобы картина была цельной).

Читать далее

SingleRecyclerAdapter плюс ViewBinding или зачем я написал библиотеку для списков

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

Работа со списками в Android проектах — это база. Большинство проектов использует RecyclerView из-за его гибкой настройки и переиспользования ViewHolder'ов. Но даже так существуют библиотеки, которые улучшают работу с RecyclerView.Adapter и RecyclerView.ViewHolder с более удобной компоновкой большого числа элементов списка.

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

Читать далее