Обновить
48.37

Kotlin *

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

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

KMongo и неструктурированные данные

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

Несмотря на то, что MongoDB начало движение в сторону строгости реляционной модели, она по прежнему остается документной БД и предполагает возможность сохранения документов произвольной структуры. И при использовании MongoDB в языках с динамической типизацией (JavaScript, Python) сохранение или генерация объектов не вызывает сложностей, поскольку заранее не требуется определить структуру извлекаемого или сохраняемого объекта. Но как действовать в случае использования драйверов для MongoDB для языков со строгой типизацией?

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

Читать далее

Список фишек Android Studio для ускорения разработки

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

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

Android-разработчики каждый день сталкиваются с своим основным инструментом — Android Studio. 

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

Читать далее

Kotlin. Ключевые слова in и out. А так же что такое ковариантность и контрвариантность

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

Здравствуйте!

В этой статье речь пойдет про вариантность параметризованных типов в Котлин.

Цель данной статьи дать первичное понимание работы ковариантности и контрвариантности в Котлин. Здесь будет рассмотрено использование ключевых слов in и out в параметризованных типах.

Читать далее

Как мы играли в тесты на Groovy и проиграли

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

В начале у меня будет один вопрос к тебе дорогой читатель. Писал ли ты когда-нибудь unit-тесты на Groovy ? Если ты андроид-разработчик, то вероятность этого крайне мала. И я с таким не сталкивался пока не пришел на проект Альфы. Небольшой дисклеймер: если ты до этого никогда не писал unit-тесты, то этот материал может показаться тебе непонятным.

Давай представим, ты приходишь на проект и видишь тест, как на картинке. Что ты будешь делать дальше?

Читать далее

Основы OkHttp в Android-разработке

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

OkHttp — библиотека и по совместительству HTTP-клиент с открытым исходным кодом для Java и Kotlin, разработанная Square, которая также создала Retrofit.

Порой стоит использовать не вездесущий Retrofit, а OkHttp из-за его производительности и большего функционала.

В статье подробно рассмотрены основные объекты и методы библиотеки и представлены основы работы с ней в Android-разработке.

Читать далее

Самодостаточный системный подход с применением мультиплатформенного Kotlin

Время на прочтение7 мин
Количество просмотров2.6K
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех, кто уже имеет опыт работы с Kotlin? Поделюсь моим опытом по созданию веб-UI для JVM-микросервиса при помощи Kotlin Multiplatform.

image

Введение


Не буду здесь вдаваться в детали о том, с какой целью применяется микросервисный подход, а также не стану углубляться в теорию микросервисов. Начнём этот пост с допущения, что вы хотите улучшить микросервисный ландшафт, имеющийся у вас в настоящий момент, либо собираетесь мигрировать на микросервисную систему, чтобы улучшить удобство использования и/или администрирования – предоставив для этого веб-UI. Идеально, если при этом вы уже знакомы с Kotlin.
Читать дальше →

Spring Cloud OpenFeign и авторизация

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

В статье я хочу показать, каким образом можно реализовать отправку запросов с авторизацией при использовании Spring Cloud OpenFeign клиента для работы с АПИ.

Читать далее

Курс по изучению Kotlin и Android Studio с нуля до Junior. #2 Создание первого проекта в Android Studio

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

Всем привет, сегодня у нас вторая часть курса по изучению языка программирования Kotlin и среды программирования Android Studio. Сегодня мы с вами создадим свой первый проект в Android Studio, а так же пройдемся по основным пунктам меню в среде разработки Android Studio. Поехали!

Читать далее

Курс по изучению Kotlin и Android Studio с нуля до Junior. #1 Введение. Установка Android Studio

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

Всем привет, меня зовут Антон и сегодня я начинаю новый курс по созданию мобильных приложений для операционной системы Android с помощью среды разработки Android Studio и языка программирования Kotlin.

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

Читать далее

Kotlin-сервер без JVM — реальность?

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

Не секрет, что Kotlin может использоваться для создания всех компонентов FullStack-приложения - от мобильных приложения для Android/iOS и веб-сайтов на Kotlin JS до бэкэнда (например, с использованием Ktor, http4k и micronaut). Но все же многих останавливает от использования Kotlin для создания API тот факт, что код запускается в хоть и оптимизированной, но все же Java виртуальной машине. Есть ли решение у этой проблемы? Да, и в этой статье мы обсудим способы компиляции приложения на Kotlin для создания API в нативный код и подводные камни, которые нас ожидают на этом пути.

Читать далее

Пошаговая отладка, inline-методы, JVM

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


В Java, как известно, inline-методов нет. Но такое понятие существует в других языках, исполняющихся на JVM. Например, в Scala или Kotlin. Во время компиляции вызов такого метода заменяется на его тело, как если бы разработчик написал этот код вручную.

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

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

Как адаптировать Android-приложение под Huawei

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

Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения.

Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную операционную систему и сказал: «Ребята, вот вам новая система, кайфуйте». Многие отнеслись к новой ОС скептически. Остальным пришлось адаптировать под нее свои Android-приложения.

Мы оказались во второй группе. К нам время от времени обращаются с просьбой помочь с адаптацией под Huawei. И мы неплохо в этом вопросе прокачались. Поэтому сейчас расскажу, что надо сделать, чтобы стало хорошо. А покажу всё это на примере крупного ретейлера, с которым мы работаем.

Читать далее

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

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

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

Итак, знакомьтесь. Тасктрекер "Яга", целимся импортозаместить Atlassian Jira. Система управления знаниями "Кощей" - закрывает нишу Confluence. "Колобок" (как первый релиз) - вариант более простого трекера (не всем нужна функциональность Jir'ы) - по мотивам Trello.

Читать далее

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

Приглашаем на Ozon Tech Community Mobile Meetup

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

UPD: Добавили записи выступлений и слайды

Мы делаем приложения для всех — для покупателей, продавцов, курьеров и сотрудников пунктов выдачи заказов. И каждое чем-то уникально.

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

Работа в IT для меня – челлендж, благодаря стремительному развитию и непрерывному обновлению базы знаний. Но главное, что в этой сфере прост и приятен безвозмездный обмен знаниями и технологиями. Зачастую, попав на какой-нибудь провинциальный митап, ты можешь узнать гораздо больше, чем на крутой коммерческой конференции. В свою очередь, я охотно участвую во всевозможных митапах и тоже делюсь своим опытом. 

Читать далее

Kotlin/Golang работа в двух языках

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

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

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

Читать далее

Риски, связанные с наследованием

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

Эта статья расскажет о рисках, связанных с наследованием классов. Здесь будет показана альтернатива наследованию классов – композиция. После прочтения вы поймете, почему Kotlin по умолчанию делает все классы конечными. Статья объяснит, почему не следует делать класс Kotlin open (открытый), если на то нет веских причин.

Читать далее

Библиотека «Room» для начинающего Android-разработчика

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

Здравствуй, дорогой читатель. Каждый Android-разработчик сталкивался (или столкнётся во время своей профессиональной карьеры) с задачей, в которой необходимо хранить большое количество изменяемых данных. В данной статье будет разобрана библиотека от Google - Room.

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

Статья предназначена для новичков, не знакомых с данной библиотекой, но, желательно, имеющих базовые знаниях о SQLite, Kotlin Coroutines, Kotlin Flow, MVVM.

Читать далее

Чистый код: как писать код, который легко читать

Время на прочтение11 мин
Количество просмотров18K
Для начала мы обсудим, зачем вам вообще может понадобиться писать более читаемый, а не краткий код. Затем мы рассмотрим стратегии, как это делать в случае:

  • Именования переменных, классов и функций
  • Вспомогательных функций
  • Комментариев к коду
  • Перечислений/словарей/запечатанных классов и так далее
  • Упорядочивания и именования пакетов

Зависит ли эффективность от меньшего количества нажатий на клавиши?


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

Моя логика была проста: если у меня это занимает меньше времени, то так я быстрее справлюсь с работой.

Эта логика имела бы смысл, если бы были истинными следующие условия:

  • Мне или кому-то другому никогда не придётся читать или исправлять то, что я написал в прошлом
  • Я нечасто забываю при чтении функции, в чём смысл одной или нескольких переменных
  • Мне время от времени не приходится писать действительно сложный и запутанный код
  • Я могу переименовывать функции, классы или свойства внешних библиотек с непонятными или нелогичными названиями во что-то более разумное

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

У вас может быть другое мнение, и это абсолютно нормально! Можете взять из этой статьи только самое полезное для вас, а об остальном забыть.
Читать дальше →

Spring Cloud Config и обновление компонентов в рантайме

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

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

На проекте используется spring boot 2.6.4 и kotlin 1.5.31. Также для конфигурации сервисов используется spring cloud config server, где в качестве backend используются Git + Vault.

Читать далее

Testcontainers с Kotlin и Spring Data R2DBC

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

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

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

По сути, приложение представляет собой сервис, который предоставляет несколько конечных точек GraphQL для создания, запроса и удаления рецензий из базы данных PostgreSQL через Spring Data R2DBC. Приложение написано на Kotlin с использованием Spring Boot 2.7.3. 

Я решил написать эту статью специально для Spring Data R2DBC, поскольку в случае Spring Data JPA интеграционное тестирование с testcontainers не вызывает затруднений. Тем не менее, когда дело доходит до R2DBC, возникают некоторые проблемы, которые необходимо решить.

Читать далее