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

Kotlin *

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

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

Микросервисная архитектура на современном стеке Java-технологий

Время на прочтение11 мин
Количество просмотров69K
У нас были JDK 11, Kotlin, Spring 5 и Spring Boot 2, Gradle 5 с production-ready Kotlin DSL, JUnit 5, а ещё с полдюжины библиотек стека Spring Cloud для Service discovery, создания API gateway, клиентской балансировки, имплементации паттерна Circuit breaker, написания декларативных HTTP клиентов, распределённой трассировки и всего такого. Не то чтобы всё это было нужно для создания микросервисной архитектуры — only just for fun...
Читать дальше →

Декабрьские вебинары Kotlin 1.3

Время на прочтение2 мин
Количество просмотров2.1K
5 и 12 декабря JetBrains организует два вебинара, посвященных свежему релизу Kotlin 1.3. На вебинарах Роман Елизаров и Николай Иготти расскажут о том, как начать использовать корутины, Kotlin/Native и Multiplatform Projects. Андрей Бреслав ответит на вопросы зрителей о Kotlin 1.3 и планах на будущее. Задайте ваши вопросы Андрею в Твиттере с хэштегом #kotlinask_13 уже сейчас или в YouTube-чате во время вебинара.

Оба мероприятия бесплатны для участия и будут транслироваться на YouTube канале JetBrains TV. Вебинары и Q&A сессия пройдут на английском языке. Зарегистрируйтесь, чтобы получить ссылку на трансляцию перед вебинаром.

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

Kotlin: ищем Head of Marketing

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

Привет!


Снова пришло то время, когда нам пора поднимать маркетинг Котлина на новый уровень. Почему? Если коротко, мы очень выросли, и у нас очень большие амбиции.


Сегодня в маркетинге Котлина работает 2 (прописью: два) человека. Всем очевидно, что это очень мало. Результаты у них — заоблачные, но, во-первых, они зашиваются, во-вторых, один из них решил снова стать инженером и двигать вперед Machine Learning (на Котлине, разумеется). Теперь мы ищем не просто маркетолога, а человека, который сможет со временем собрать команду.


Вообще говоря, мы никогда не искали просто маркетолога. Нам нужен человек, который будет говорить с пользователями на одном языке. Это значит, что необходимо понимать девелоперов, их нужды и реалии. Нужно уметь шутить шутки для программистов, чувствовать ярость программистов и разделять их (нашу) радость. Нужно понимать, зачем люди, которые всю неделю пишут код на работе, по выходным и вечерами пишут код в хобби-проектах. Самый простой способ этого достичь: самой/самому писать код. Хотя бы какое-то время. Можно по будням :) Опыт в DevRel явно пригодится. Опыт выступлений и/или организации конференций, написания учебрных материалов, создания комьюнити разработчиков — тоже (а что, собственно, еще такое DevRel?). И очень пригодится опыт продвижения идей. Любых идей.


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

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

Жадный гном: Как я писал аналитику рынка в Lineage 2

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

Вот и наступила осенне-зимняя пора. За окном дожди и желания проводить время на открытом воздухе все меньше и меньше. И вот приходит мне сообщение от товарища "А давай поиграем в Lineage 2?". И опять я, поддавшись ностальгии, согласился. Выбрали мы свеженький сервер на ру-офе и создали персонажей.



 
В отличии от World of Warcraft в Lineage 2 совершенно другая система добычи игровой валюты. Нужно круглыми сутками охотиться на монстров с целью получения наживы. Для меня было даже открытием, что для некоторых людей RMT (Real money trading) является чем то вроде работы. Также, в игре присутствует экономика, которую формируют игроки. Иными словами, можно заработать на купи-продай или же покупать дешевые ресурсы, из них делать вещи и продавать с наценкой. Так как для нас игра остается чем то вроде отдыха именно такой способ получения игровой валюты был выбран нами.


Чтобы покупать и продавать предметы игрок должен находиться online (Скриншот сверху). Соответсвенно, кто-то хочет побыстрее продать (дешевле) а кто-то побыстрее купить (дороже). А что если разница продать — купить положительная? Как раз этот пример и будет рассмотрен в статье как итог.


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


Spoiler:
В статье будут использованы следующие технологии
Docker, DigitalOcean, NodeJs, Ktor, Prometheus, Grafana, Telegram bot notification

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

Kotlin: статика, которой нет

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

В этой статье пойдёт речь об использовании статики в Kotlin.
Начнём.
В Kotlin нет статики!

Об этом говорится в официальной документации.

И вроде бы на этом можно было бы и закончить статью. Но позвольте, как же так? Ведь если в Android Studio вставить код на Java в файл на Kotlin, то умный конвертер сделает магию, превратит всё в код на нужном языке и всё заработает! А как же полная совместимость с Java?

В этом месте любой разработчик, узнав про отсутствие статики в Kotlin, полезет в документацию и форумы разбираться с этим вопросом. Давайте разбираться вместе, вдумчиво и кропотливо. Постараюсь, чтобы к концу этой статьи вопросов по этой теме осталось как можно меньше.
Читать дальше →

Как использовать корутины в проде и спокойно спать по ночам

Время на прочтение20 мин
Количество просмотров33K
Корутины — мощный инструмент для асинхронного исполнения кода. Они работают параллельно, общаются друг с другом и потребляют мало ресурсов. Казалось бы, без страха можно внедрять корутины в продакшен. Но страхи есть и они мешают.

Доклад Владимира Иванова на AppsConf как раз о том, что не так страшен чёрт и что можно прямо сегодня применять корутины:



О спикере: Владимир Иванов (dzigoro) — ведущий Android-разработчик в компании EPAM с 7-летним опытом, увлекается Solution Architecture, React Native и разработкой под iOS, а еще имеет сертификат Google Cloud Architect.

7 библиотек для Android разработки на Kotlin

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

7 библиотек для Android разработки на Kotlin


Недавно я начал изучать Kotlin для Android-разработки, и мне это очень понравилось. Kotlin по синтаксису очень похож на Swift, и это удобно. Я всего лишь новичок в Android-разработке, поэтому скорее всего есть ещё много полезных библиотек, которые у меня ещё не было возможности изучить, но этот список — это некоторые из тех, которые я уже успешно использовал или планирую сделать это в скором времени.

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

Строим систему реактивных компонентов с помощью Kotlin

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


Всем привет! Меня зовут Анатолий Варивончик, я Android-разработчик Badoo. Сегодня я поделюсь с вами переводом второй части статьи моего коллеги Zsolt Kocsi о реализации MVI, которую мы ежедневно используем в процессе разработки. Первая часть здесь.

Чего мы хотим и как мы это сделаем


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

Каждая Feature отслеживаема — есть возможность подписаться на изменения её состояния и получать уведомления об этом. При этом Feature можно подписать на источник ввода. И в этом есть смысл, ведь с включением Rx в кодовую базу у нас и так появилось множество наблюдаемых объектов и подписок на самых разных уровнях.

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

Современная MVI-архитектура на базе Kotlin

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


За последние два года Android-разработчики в Badoo прошли длинный тернистый путь от MVP к совершенно иному подходу к архитектуре приложений. Мы с ANublo хотим поделиться переводом статьи нашего коллеги Zsolt Kocsi, описывающую проблемы, с которыми мы столкнулись, и их решение.

Это первая из нескольких статей, посвящённых разработке современной MVI-архитектуры на Kotlin.
Читать дальше →

Thrift в качестве REST API

Время на прочтение7 мин
Количество просмотров21K
Небольшая статья о том, как мы столкнулись с проблемами синхронизации работы между командами клиентской и серверной разработки. Как мы подключили Thrift для того, чтобы упростить взаимодействие между нашими командами.

Кому интересно, как мы это сделали, и какие «побочные» эффекты мы словили, прошу заглянуть под кат.
Читать дальше →

Работа с сетью в Android с использованием корутин и Retrofit

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

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


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

Как начать работать с Hibernate Search

Время на прочтение7 мин
Количество просмотров18K
Сегодня многие разрабатывают enterprise-приложения на Java с использованием spring boot. В ходе проектов часто возникают задачи по созданию поисковых систем разной сложности. Например, если вы разрабатываете систему, хранящую данные о пользователях и книгах, то рано или поздно в ней может потребоваться поиск по имени/фамилии пользователя, по названиям/аннотациям для книг.



В этом посте я вкратце расскажу об инструментах, которые могут помочь в решении таких задач. А затем представлю демо-проект поискового сервиса, где реализована более интересная и сложная фича — синхронизация сущностей, БД и поискового индекса. На примере этого демо-проекта вы сможете познакомиться с Hibernate Search — удобным способом общения с полнотекстовыми индексами Solr, Lucene, ElasticSearch.
Читать дальше →

Kotlin 1.3 с поддержкой корутин, бета-версией Kotlin/Native и не только

Время на прочтение5 мин
Количество просмотров16K
На днях вышел Kotlin 1.3 с комплектом сопутствующих библиотек, инструментов сборки и учебных материалов.

Мы делаем Kotlin как инструмент для разработки приложений любого масштаба на любых платформах. В Kotlin 1.3, благодаря корутинам, читать и писать неблокирующий асинхронный код стало легко и удобно. Масштабируемость стала гораздо доступнее. В новом релизе мы также выпустили бета-версию Kotlin/Native, позволяющую компилировать код Kotlin непосредственно в машинный код. Мультиплатформенные возможности Kotlin теперь работают на всех поддерживаемых платформах, что позволяет, например, использовать одну и ту же бизнес-логику в приложениях для Android и iOS. Общую логику можно также использовать для серверов и мобильных и веб-клиентов. Кроме того, появилась возможность писать легко переносимые мультиплатформенные библиотеки, которые возьмут на себя большинство повседневных задач.

image

В ближайшее время мы проведем серию вебинаров по основным возможностям версии 1.3, записывайтесь здесь.
Читать дальше →

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

MOSDROID митап в FunCorp

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


10 ноября совместно с MOSDROID проведём Android митап. В программе 5 докладов от Сбертеха, Яндекс.Такси, FunCorp, Lamoda и Joom.

Программа


«MotionLayout: знакомство и применение»
Павел Апановский, Сбертех

На Google I/O '18 был представлен новый механизм работы с анимацией в Android – MotionLayout. Разберём, что он из себя представляет, как им пользоваться, что скрывается под капотом, да и нужен ли он в проекте?

«Как мы поддерживаем стабильность приложения Lamoda»
Виталий Бендик, Lamoda

Поговорим о том, что мы понимаем под стабильностью. Какие факторы приводили к нарушению стабильности, как мы с ними боролись и что предприняли для их устранения.
Читать дальше →

Android LiveData на Kotlin с использованием Retrofit и coroutines

Время на прочтение6 мин
Количество просмотров22K
Статья рассказывает об использовании Android Components ViewModel, LifeCycle и LiveData. Эти компоненты позволяют не заботиться о жизненном цикле Activity.

Так же рассмотрен пример применения современного Coroutines в связке с репозитарием на Retrofit

fun main(args: Array<String>): Unit = runBlocking {
    // Wait (suspend) for Result
    val result: Result<User> = api.getUser("username").awaitResult()
    // Check result type
    when (result) {
        //Successful HTTP result
        is Result.Ok -> saveToDb(result.value)
        // Any HTTP error
        is Result.Error -> log("HTTP error with code ${result.error.code()}", result.error)
        // Exception while request invocation
        is Result.Exception -> log("Something broken", e)
    }
}
Читать дальше →

Практика тестирования бэкенда на Java + Rest-Assured

Время на прочтение5 мин
Количество просмотров35K
В предыдущей статье я поделился своим опытом автоматизации на Robot Framework. Теперь же речь пойдет о несколько другом подходе к тестированию API для проекта на Kotlin.

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

image

(изображение используется на правах пародии)
Читать дальше →

Joker 2018: невозможное возможно

Время на прочтение7 мин
Количество просмотров8.7K
19-20 октября 2018 года в Санкт-Петербурге прошло долгожданное Java-мероприятие второй половины года — конференция Joker 2018. Подробности, впечатления, детали — всё дальше.


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

На поводу у трендов, или движение навстречу RxJava и LiveData

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


На дворе 2018 год. Всё чаще встречаются слова RxJava и LiveData. Но если вдруг так случилось, что в вашем приложении до сих пор балом правят старомодные решения вроде библиотеки android-priority-jobqueue или AsyncTask (да, бывает и так), то эта статья специально для вас. Я разделяю эти подходы, исходя из заложенной в них философии. Первый предполагает некоторую зависимость выполнения работы от отображения, второй — выполнение задачи, при котором View слушает её и она не прерывается в зависимости от событий жизненного цикла (например, при повороте экрана). Под катом я предлагаю рассмотреть миграцию на связку RxJava и LiveData для обоих подходов.
Читать дальше →

Как декларативно описать коллапсирующий тулбар

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


Хочу представить решение того, как можно описать CollapsingToolbar, с акцентом на читаемости кода. В статье не будет объясняться, что такое и как написать свой CoordinatorLayout.Behavior. Если читателю интересно в этом разобраться, есть много статей, в том числе на хабре. Если разбираться не хочется — ничего страшного: я постарался вынести написание CollapsingToolbar так, чтобы можно было абстрагироваться от CoordinatorLayout.Behavior и OnOffsetChangedListener.
Читать дальше →

Kotlin: копаем глубже. Конструкторы и инициализаторы

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


В уже далёком мае 2017 года Google объявила о том, что Kotlin стал официальным языком для разработки под Android. Кто-то тогда впервые услышал название этого языка, кто-то на нём уже продолжительное время писал, но с того момента стало понятно, что все, кто близок к Android-разработке, теперь просто обязаны познакомиться с ним. Далее последовали как восторженные отклики «Наконец-то!», так и жуткое негодование «Зачем нам нам новый язык? Чем Java не угодила?» и т.д. и т.п.

С тех пор прошло достаточно времени, и хоть споры о том, хороший Kotlin или плохой, до сих пор не утихли, всё больше кода под Android пишется именно на нём. И даже вполне консервативные разработчики тоже переходят на него. Кроме того, в сети можно наткнуться на информацию, что скорость разработки после освоения этого языка увеличивается на 30% по сравнению с Java.

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

И вот на этой волне мне пришла в голову идея подробно разобрать отдельные элементы молодого, но популярного языка. Обратить внимание на сложные моменты и сравнить их с Java для наглядности и лучшего понимания. Разобраться в вопросе несколько глубже, чем это можно сделать, прочитав документацию. Если эта статья вызовет интерес, то, скорее всего, она положит начало целому циклу статей. А пока начну с довольно базовых вещей, которые, тем не менее, скрывают массу подводных камней. Поговорим о конструкторах и инициализаторах в Kotlin.
Читать дальше →