Обновить
50.84

Kotlin *

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

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

Как сохранять историю процессов в Camunda без вреда для них

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

Меня зовут Павел Плетнев, я разработчик в команде кредитных карт в Тинькофф. Хочу поделиться, как можно заранее оптимизировать работу с историей в Camunda или решить проблемы, если вдруг они появились.

Читать далее

OAuth в мобильных приложениях

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

Привет! Меня зовут Максим, я занимаюсь мобильной разработкой в KTS.

Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети — например, зайти через Google или VK. А при обучении мобильной разработке используются открытые API, где для авторизации используется OAuth.

Поэтому разработчикам мобильных приложений приходится работать с OAuth. В сети по этой теме есть разрозненные материалы. 

Этой статьей я попробую закрыть нюансы OAuth в мобильных приложениях: на какие моменты стоит обратить внимание, какие способы реализации выбрать. А также поделюсь опытом настройки OAuth в Android-приложении с использованием библиотеки AppAuth.

Читать далее

Java One day offer от Почтатеха

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

Всем привет! Мы — Почтовые Технологии или просто Почтатех. Разрабатываем сложные цифровые продукты Почты России. Помогаем ей стать удобнее, быстрее, качественнее и технологичнее для вас. 

9 апреля приглашаем middle/senior-разработчиков, пишущих на Java/Kotlin, на One Day Offer — приходите и получите оффер от Почтатеха за день! Он пройдет онлайн с 10:00 до 20:00 по московскому времени.

Читать далее

Jetpack Compose в проектах на React Native: плюсы, минусы и интеграция

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

Привет! Меня зовут Сергей Курочкин, я руковожу Android-разработкой в СберМаркете. Сегодня я расскажу, зачем нужен Jetpack Compose в проектах React Native, и поделюсь опытом интеграции фреймворка в наши приложения. В конце на примере простого компонента разберем весь процесс разработки на Jetpack Compose.

Читать далее

По колено в JVM куче, или на пороге потери данных

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

Смоделируем ситуацию: у вас есть приложение на JVM (без разница, будь то Kotlin, Java или Scala), а еще у вас есть уверенность в себе и немного не хватает ответственности.

В пачке с приложением, а именно сервером, идет несколько стандартных штук - база данных, небольшой http слой, в общем, все стандартно.

Ах да, забыл упомянуть - мы хостим майнкрафт сервер с огромной самописной модификацией, которая меняет почти все нюансы геймплея. Не стоит фокусироваться на майнкрафте - просто представим, что у нас есть набор моделей, которые довольно часто меняются - игрок получает уровень, тратит свободные очки опыта, создает королевство, уходит из него и бла-бла-бла.

Мне кажется, любой уважающий себя программист на +- хобби проекте захочет навернуть нереально крутое самописное решение, чем, собственно говоря, я и занялся.

Была ли это хорошая идея?

Удаленный доступ к IP камерам. Часть 2. Мобильное приложение

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


В предыдущей статье я рассказывал о простом сервере для работы с камерами видеонаблюдения, но для оперативного просмотра RTSP потоков использовал мобильное приложение VLC, которое меня не вполне устраивало по нескольким причинам. Под катом вы найдете описание и листинги простого мобильного приложения под андроид, написанного специально для охранных камер. Исходники приложения можно взять на github. Для тех, кто не хочет собирать apk самостоятельно, вот ссылка на готовые файлы.

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

Пишем свой плагин для IDEA для поддержки нового языка (часть 2)

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

Продолжение статьи о создании языкового плагина для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin. Начало

Читать далее

Пишем свой плагин для IDEA для поддержки нового языка (часть 1)

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

В статье рассмотрено как создается языковой плагин для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin.

Читать далее

Android Studio. Kotlin. Кастомный навигатор нижнего меню. Keep state navigator

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

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

Читать далее

Создаем и тестируем свой plugin для Gradle 7.0+

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

Система сборки проектов Gradle стала значительной вехой в эволюции инструментов подготовки артефактов и заменила во многих проектах ранее популярный Maven (который ранее стал заменой для make и ant). Де-факто Gradle является стандартом для сборки проектов для Android, но в действительности он может использоваться и для других целевых платформ и технологий разработки, отличных от JVM. Подобно maven в gradle используются устанавливаемые дополнения, которые могут добавлять свои цели и элементы конфигурации, а также встраиваться в существующие цели и добавлять операции как и исходными текстами (например, форматирование), так и с вспомогательными объектами (как пример можно привести кодогенерацию), а также вызов внешних команд или объектов классов (например, компилятора kotlin или инструментов сборки ресурсов для android).

В этой статье мы пошагово создадим и протестируем простой plugin трансформации текстовых файлов для gradle (при разработке будем в основном использовать API, который поддерживается версиями 6.0+, но отдельно отметим, какие функции поддерживаются только в Gradle 7.0 и более новых).

Сначала начнем с определения контекста. Сборка любого проекта состоит из последовательности действий (actions), которые в конечном счете приводят к появлению целевого состояния (task). Конфигурация сборки описывается в виде gradle-сценария, который может взаимодействовать с методами, импортированными из plugin'ов или входящих в gradle-core, либо с версии Gradle 4.0 с использованием Kotlin Scripting (.kts) с возможностью использования объектов стандартной библиотеки Kotlin и импортируемых библиотек.

Читать далее

Hexagon — гексогональная архитектура для Kotlin Backend

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

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

Читать далее

Сравниваем кривые линии по форме

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

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

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

Читать далее

Публикуем проект с помощью Gradle и Sonatype в Maven Central без рук

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

Это такое приятное чувство, когда ты закончил какую-то задачу. А особенно когда твой проект уже готов к релизу. Остался лишь последний шаг.

Публикация проекта в Maven Central, имеено об этом я расскажу в этой статье. Как настроить Gradle, чтобы потом без труда настроить CI.

Читать далее ->

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

Функциональный Kotlin. Часть 2. Каррированные функции и где они обитают

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

Вторая статья из цикла о функциональном программировании на Kotlin с разбором принципа работы, концепции и способов применения каррирования на практике.

Читать далее

5 лаконичных синтаксисов Java, которых мне не хватает в Kotlin

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

С 2016 года, после того, как я начал использовать Kotlin в Android-разработке, то ни разу не скучал по Java. В целом, Kotlin дал мне большее удовлетворение от разработки, чем Java для Android.

Тем не менее, время от времени я натыкаюсь на такие вещи, которых мне очень не хватает; того, как они были реализованы в Java. Ниже представлены 5 из них.

Читать далее

Как я запускал Spring Cloud

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

Меня зовут Аксёнов Вячеслав, я старший бэкенд Java/Kotlin разработчик в крупном энтерпрайзе. Однажды я попал на проект, полный микросервисов, в котором за конфигурацию отвечала такая штука как Spring Cloud. Чтобы разобраться как именно это работает я исследовал и прикрутил этот диковенный элемент к одному своему пет проекту. И в этой статье я пошагово покажу как я это сделал

Читать далее

Меняем стек на продакшене в сжатые сроки

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

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

Но давайте по порядку. Меня зовут Александр Клюшкин. Я работаю в Самокате и на нашем примере расскажу о сложностях перехода на новый стек. Зачем и кому это может понадобиться?

Читать далее

Высокопроизводительные микросервисы на Kotlin с использованием gRPC. Долгий путь к DSL

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

Очень часто при проектировании высоконагруженных систем, основанных на микросервисной архитектуре, обнаруживается что «узким» местом, ограничивающим производительность системы и возможности ее масштабирования, становится передача сообщений и временные затраты на сериализацию-десериализацию сообщений и дополнительные расходы на установку соединения и начальные согласования. Решением может стать использование протокола gRPC с кодированием сообщений с применением Protocol Buffers (protobuf).

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

Читать далее

Android 12. Splash Screen API. Делаем анимированный экран загрузки

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

Android 12. Splash Screen API. Делаем анимированный экран загрузки (кручение). Боли и подводные камни, с которыми я столкнулся при реализации нового сплеш-скрина для Android 12.

Читать далее

Android Studio. Kotlin. Динамическая подгрузка данных в список RecyclerView

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

Долго я искал в сети способ сделать так, чтобы данные при построении списка RecyclerView не загружались целиком, а подгружались по мере его пролистывания пользователем. Несколько совершенно разных решений находил на StackOverflow. Пробовал применить - работало, но каждый раз, как-то криво и не надежно. После нескольких месяцев работы над проектом в режиме "Когда все дела сделаны и дети слезли с шеи", я наконец достиг, как мне кажется, идеального решения, чем и хочу поделиться в этой статье.

Читать далее