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

Kotlin *

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

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

Доставку заказывали? Как «Перекрёсток» доставляет 6000 заказов в день

Время на прочтение6 мин
Количество просмотров25K
Люди любят доставку. За небольшую плату ты покупаешь возможность получить нужные товары, не выходя из дома: еду из любимого ресторана, крупногабаритную мебель, книгу, которую хотел давно прочитать, да и вообще — что угодно. И рост числа сервисов по быстрой доставке всего на свете только подтверждает этот тезис. Да и для магазинов это плюс — запартнёрился с любой доставкой товаров до двери и увеличил свой чек.

У нас в «Перекрёстке» есть собственная доставка. Для человека со стороны процесс доставки из магазина до дома выглядит примерно так:

  1. Выбрал что-то на сайте и положил в корзину.
  2. Ввёл адрес и оплатил заказ.
  3. Магазин быстро отдал заказ курьеру.
  4. Курьер доставил заказ.

На самом деле, всё немного сложнее. Меня зовут Виталий, я руководитель отдела разработки, и сегодня я расскажу, как у нас всё работает. И на чём.


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

MVVM и выбор элементов в адаптере

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

Уже примерно после 3-его самописного адаптера, в котором надо было реализовывать логику запоминания выбранного элемента, у меня появились мысли, что должно же быть какое-то решение, которое уже включит в себя всё необходимое. Особенно, если в процессе разработки приходилось менять возможность выбора только одного элемента на множественный выбор.


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


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

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

ActivityLifecycleCallbacks — слепое пятно в публичном API

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


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

Однажды я решил почитать документацию к различным классам Android framework. Пробежался по основным классам: View, Activity, Fragment, Application, — и меня очень заинтересовал метод Application.registerActivityLifecycleCallbacks() и интерфейс ActivityLifecycleCallbacks. Из примеров его использования в интернете не нашлось ничего лучше, чем логирование жизненного цикла Activity. Тогда я начал сам экспериментировать с ним, и теперь мы в Яндекс.Деньгах активно используем его при решении целого спектра задач, связанных с воздействием на объекты Activity снаружи.
Читать дальше →

Разрабатываем игры на LibGDX с помощью шаблона Entity Component System

Время на прочтение8 мин
Количество просмотров11K
Привет Хабр! Меня зовут Андрей Шило, я android-разработчик в компании FINCH. Сегодня я расскажу вам о том какие ошибки не стоит допускать при написании даже самой простой игры и чем крут архитектурный подход Entity Component System(ECS).
Читать дальше →

Хюгге для разработчиков, или как я съездила на KotlinConf

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


Хабр, привет! Меня зовут Мария, и я программист. Пишу под Android и несколько лет делала это на Java — на фоне универских плюсо́в она мне казалась очень удобной. Но прогресс не стоит на месте, и, придя полтора года назад в Яндекс.Деньги, я познакомилась с молодым языком Kotlin, который оказался вне конкуренции. Мне была важна гибкость команды, частью которой я решила стать, и очень здорово, что здесь я получила новые возможности для развития.

Ещё в начале своей работы в компании я слышала положительные отзывы от коллег, побывавших на конференции, посвященной исключительно языку Kotlin. В IT-сфере нужно быть всегда в курсе самых свежих идей и разработок, потому что всё быстро меняется и развивается, а где можно больше узнать о происходящем в сообществе Kotlin, как не на KotlinConf? Ещё и от тех, кто разрабатывает сам язык. И вот я таки на неё съездила! В этой статье нет технического обзора докладов, все материалы есть в свободном доступе на YouTube. Дальше — о конференции в Копенгагене, её организации и моих впечатлениях.

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

Sealed classes. Semantics vs performance

Время на прочтение4 мин
Количество просмотров9.5K
Наверное, не я один после прочтения документации о sealed классах подумал: «Ладно. Может быть это когда-нибудь пригодится». Позже, когда в работе я встретил пару задач, где удалось успешно применить этот инструмент, я подумал: «Недурно. Стоит чаще задумываться о применении». И, наконец, я наткнулся на описание класса задач в книге Effective Java (Joshua Bloch, 3rd) (да-да, в книге о Java).

Давайте рассмотрим один из вариантов применения и оценим его с точки зрения семантики и производительности.

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

Конкурс для бэкенд-разработчиков FunCode Java/Kotlin challenge

Время на прочтение1 мин
Количество просмотров5.8K
FunCorp проводит конкурс для бэкенд-разработчиков на языке Java/Kotlin с призовым фондом в 550 000 рублей.

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


Условия участия

Как прошёл п̶е̶р̶в̶ы̶й̶ второй митап по Android от Tinkoff

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

Я — Александр Гузенко, ведущий разработчик в компании Тинькофф. И так сложилось, что я постоянно топлю за какую-то движуху по шарингу знаний, курирую финтех школу по андроиду и люблю ходить на конференции и митапы.

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


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

Время на прочтение4 мин
Количество просмотров5K
И еще раз здравствуйте! В преддверии старта базового курса по Android-разработке, делимся заключительной частью статьи «16 советов по разработке для андроид на языке Kotlin».




Читать первую часть
Читать вторую часть

LATEINIT


Одной из ведущих особенностей Kotlin является его приверженность нулевой безопасности. Оператор lateinit предоставляет простой способ обеспечить нулевую безопасность и инициализировать переменную так, как этого требует Android. Эта функция прекрасна, тем не менее, к ней следует привыкнуть после работы на Java. Одна из идей заключается в том, что поле сразу объявляется с возможностью быть нулевым:

var total = 0 
var toolbar: Toolbar? = null

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

Управление жестами: Обработка визуальных перекрытий. Часть 2

Время на прочтение8 мин
Количество просмотров3.5K
В преддверии старта продвинутого курса по Android-разработке продолжаем делиться с вами серией полезных переводов.





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

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

В этой статье я буду ссылаться на такую вещь, как «UI системы». Именно так называется любой из интерфейсов системы, расположенный на экране, будь то панель навигации или строка состояния. Также в него входит панель уведомлений.
Читать дальше →

16 советов по разработке для андроид на языке Kotlin. Часть 2

Время на прочтение4 мин
Количество просмотров5.3K
Всем привет. В преддверии старта базового курса по Android-разработке, продолжаем делиться полезным материалом.



Перед прочтением этих советов вам желательно ознакомиться с документацией Kotlin и самостоятельно изучить язык на сайте try.kotlinlang.org. Поскольку эти советы направлены именно на использование Kotlin в контексте разработки под Android, у вас также должен быть опыт работы с Android SDK. Также желательно ознакомиться с плагином Kotlin и использованием Kotlin с Android Studio от JetBrains (создателей Kotlin)



Читать первую часть
Читать дальше →

Умеем ли мы готовить Java, Kotlin RestController?

Время на прочтение4 мин
Количество просмотров5.7K
Практически любой программист на java в своей жизни писал RestController, но мало кто задумывается правильно ли он это делает. Даже если вы опытный программист, у вас могут возникнуть вопросы, на которые я постараюсь ответить. В статье будут затронуты такие фреймворки как spring boot версии 1.5 и 2.0, а также quarkus — недавно появившийся соперник spring boot от red hat.

image

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

IntelliJ IDEA 2019.3: оптимизация производительности и улучшение качества

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

В этом релизе мы сосредоточились на производительности и качестве. Вместе с другими командами JetBrains, мы занимались оптимизацией производительности, повышением отзывчивости интерфейса, улучшением существующей функциональности.

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

Мы также работали над поддержкой новых фреймворков для создания микросервисов, таких как Micronaut, Quarkus и Helidon, и сделали долгожданную поддержку MongoDB.


blog@2x (3)



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

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

16 советов по разработке для Android на языке Kotlin. Часть 1

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


Перед прочтением этих советов вам желательно ознакомиться с документацией Kotlin и самостоятельно изучить язык на сайте try.kotlinlang.org. Поскольку эти советы направлены именно на использование Kotlin в контексте разработки под Android, у вас также должен быть опыт работы с Android SDK. Также желательно ознакомиться с плагином Kotlin и использованием Kotlin с Android Studio от JetBrains (создателей Kotlin)
Читать дальше →

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

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


Многие сервисы в современном мире, по большей части, «ничего не делают». Их задачи сводятся к запросам к другим базам/сервисам/кешам и агрегации всех этих данных по различным правилам и разнообразной бизнес-логике. Поэтому неудивительно, что появляются такие языки, как Golang, с удобной встроенной конкурентной системой, позволяющей легко организовывать неблокирующий код.


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

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

Retrofit — библиотека для обмена с интернетом (Часть 1)

Время на прочтение3 мин
Количество просмотров13K
Содержание

  1. Описание API Retrofit
  2. HTTP метода
  3. Подключение Retrofit

Описание API Retrofit


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

По следам русского Scala-движа. Часть 3

Время на прочтение19 мин
Количество просмотров3.1K
Это заключительная часть расследования о Scala-движении в России. В первой части я узнал от Романа Гребенникова о воронежском бомонде, C++ и Erlang, а от Романа Тимушева о первой Akka и рождении московских митапов. Во второй части побеседовал с Александром Подхалюзиным и Михаилом Муцянко: знакомство со Scala, 2007-й, Scala Days, Scala Native, переход в Kotlin, чем Scala хороша для банков, первые ивенты в Санкт-Петербурге, Eclipse, Jason Zaugg, IDE и Scala Plugin.



Во время подготовки второй части Владимир Успенский (vuspenskiy) направил меня к Александру Подхалюзину, с которым мы записали огромное интервью. На следующий день я получил от Владимира сообщение, но теперь уже с его личной историей: Qiwi, Scala в Тинькофф, первые встречи, ссылки на старые блоги (отдельное спасибо за это), и функциональщина из 2008 от Rúnar, которая исполняется на Java, — это та еще кровь из глаз как минимум необычно. В дополнение — истории Романа Елизарова, Алексея Фомкина и Николая Татаринова. Особенности найма Scala-разработчиков, курсы на Coursera, «идеальный код», «демоническая» компиляция, дизайн в Kotlin, 10 000 строк кода, интернет-банк Тинькофф, опять Тинькофф, Play Framework, скончавшийся Flash, «Восход» и питерские митапы — обо всем этом в заключительной части трилогии под катом.
Читать дальше →

Иван Осипов и Юрий Артамонов про Kotlin и плагины к IntelliJ IDEA на встрече jug.msk.ru

Время на прочтение2 мин
Количество просмотров2.8K
14 ноября 2019 года на встрече московского сообщества Java-разработчиков jug.msk.ru Иван Осипов и Юрий Артамонов представили доклады про миграцию приложений с Java на Kotlin и про написание плагинов для IntelliJ IDEA.


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

Организация простой архитектуры в андроид-приложении со связкой ViewModel+LiveData, Retrofit+Coroutines

Время на прочтение6 мин
Количество просмотров20K
Без долгих вступлений расскажу, как можно быстро и просто организовать удобную архитекруту вашего приложения. Материал будет полезен тем, кто не очень хорошо знаком с mvvm-паттерном и котлиновскими корутинами.

Итак, у нас стоит простая задача: получить и обработать сетевой запрос, вывести результат во вью.

Наши действия: из активити (фрагмента) вызываем нужный метод ViewModel -> ViewModel обращается к ретрофитовской ручке, выполняя запрос через корутины -> ответ сетится в лайвдату в виде ивента -> в активити получая ивент передаём данные во вью.
Читать дальше →

KotlinConf 2019 Live: смотрите в прямом эфире 5-6 декабря

Время на прочтение2 мин
Количество просмотров2K
Трансляции KotlinConf превращаются в добрую традицию. В этом году мировое сообщество пользователей Kotlin сможет увидеть конференцию в прямом эфире — все выступления, а не только объявления и новости. Приятным бонусом прямого эфира станут 12 интервью с докладчиками, которые в течение двух дней проведет ведущая популярного YouTube-канала «Android Dialogues» Хюен Туэ Дао.

Трансляция начнется выступлением руководителя команды разработки Kotlin Андрея Бреслава, затем два полных дня докладов и в конце заключительная панель, во время которой докладчики вместе с командой разработки Kotlin ответят на вопросы сообщества. Вы также можете принять участие в обсуждении — задавайте вопросы в Твиттере с хештегом #kc19ask уже сейчас, и смотрите прямой эфир, чтобы услышать ответы.

Есть и другой способ приобщиться к KotlinConf 2019 — организуйте митап в рамках программы KotlinConf 2019 Global для удаленного просмотра конференции вместе со своим сообществом, а JetBrains поддержит ваше начинание. Прочитайте наш блог-пост, подайте заявку и получите поддержку.

image

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