Как стать автором
Обновить
118.58

Kotlin *

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

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

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

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

Здравствуй, дорогой читатель. Каждому Android-разработчику во время разработки своего приложения необходимо сталкиваться с созданием пользовательского интерфейса. Для этого существует несколько способов, и сегодня будет рассмотрен один из них - Jetpack Compose UI.

Jetpack Compose - это библиотека, которую представила Google в 2019 году. Данная библиотека позволяет удобным способом создавать и организовывать интерактивный UI, облегчает тестирование и дает возможность грамотно использовать ресурсы устройства.

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

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии5

Задачи про PEG-парсеры

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

Когда-то я хотел сделать контест по парсингу для Codeforces. Придумал задания двух типов:

1. Дается неформальное описание языка, по которому нужно создать грамматику (например, "язык с правильными скобочными последовательностями")

2. Даны примеры строк в языке, по которым нужно восстановить грамматику

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

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

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Koin: Простой и легковесный фреймворк для внедрения зависимостей

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

Принцип внедрения зависимостей становится все более неотъемлемой частью процесса разработки. Без него сложно представить себе достижение желанного разделения обязанностей в коде или обеспечение должного уровня тестируемости.

В то же время, хотя Spring Framework и является широко распространенным выбором, он далеко не всем подходит. Некоторым было бы предпочтительнее использовать более простые и легковесные фреймворки с продвинутой поддержкой асинхронных операций ввода-вывода. Другие были бы признательны за статическое разрешение зависимостей для более быстрого запуска приложения.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Yandex MapKit для новичков: разрабатываем карты в Android-приложении

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

А давайте познакомимся поближе и поработаем с Яндекс-картами в Android-приложении! Внедрим и настроим библиотеку Yandex MapKit: откроем определенную область на карте, выставим метку в нужном месте, установим на неё желаемые растровые и векторные изображения, поиграемся с зумом, обработаем нажатие на пин, а также будем визуально выделять объекты на карте при клике и получать от них интересующую нас информацию.

Поехали!
Всего голосов 7: ↑6 и ↓1+5
Комментарии4

Истории

Книга «Head First. Программирование для Android на Kotlin. 3-е изд.»

Время на прочтение4 мин
Количество просмотров6K
image Привет, Хаброжители!

Вам уже пришла в голову гениальная идея мобильного приложения, которое завоюет весь мир? Дело за малым — воплотить ее в жизнь.

Эта полностью переработанная и обновленная книга поможет сразу приступить к работе. Вы на практике узнаете, как структурировать приложение, создавать гибкие и интерактивные пользовательские интерфейсы, сохранять информацию в базе данных и использовать новейшие возможности Android Jetpack и Jetpack Compose. Все, что вам нужно для успешного старта — это немного базовых знаний о языке Kotlin.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Ракету пустил и забыл. Или как заставить DI работать

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

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

Сегодня нужно написать простенький экран, который будет отображать список. Вы с огромным энтузиазмом начинаете реализовывать прекрасный список - каталог товаров магазина. Один запрос, один список. Все сделали красиво, фрагмент создался, подтянул из DI ViewModel, которая в свою очередь передала остальным слоям, чтоб загрузить данные по АПИ и закешировать их. Все эти компоненты правильно освобождаются, так как все это сделано как надо отдельным Субкомпонентом с отдельным скоупом.

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

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

Читать далее
Рейтинг0
Комментарии21

Kotlin Multiplatform в ОС Аврора

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

В данной статье описана работа ОС Аврора с технологией Kotlin Multiplatform. Рассматривается метод подключения модуля Kotlin Multiplatform к приложению на Qt/QML. Для демонстрации было портировано уже существующие демо приложение "KMM RSS Reader". Проведены тесты производительности.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии8

Kotlin: взгляд изнутри — преимущества, недостатки и особенности

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

Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.

В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.

Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!

Читать далее
Всего голосов 16: ↑12 и ↓4+8
Комментарии31

Java Digest #3

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

Всем привет! 👋 👋 👋

Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим со всем сообществом.

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

Терри Пратчетт «Стража! Стража!» 

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии1

Использование Kotlin и WebFlux для выполнения задач ML в Apache Spark на GPU

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

В предыдущей статье для создания Spark Driver приложения использовался сервлетный стек Spring (Boot 2.7.11) и JDK 8.

На дворе вторая половина 2023 года, у многих в проде уже используется Boot 3+ (а то и 3.1+), совсем скоро должна выйти новая LTS версия Java, и, мягко говоря, Boot 2+ и JDK8 устарели. Использовались они намеренно, так как для задач тренировки моделей машинного обучения на GPU в среде Spark частью системы является ускоритель вычислений на GPU NVidia Rapids. Поддержка JDK 17 появилась только в релизе v23.06.0 от 27.06.23, с ее выходом появилась возможность перейти на актуальную LTS версию Java, а с ней - на Spring Boot 3+.

В данной статье описывается миграция с Boot 2 и JDK 8 До Boot 3 и JDK 17, со Spring Web на Spring WebFlux, в конце сравниваются Web и WebFlux версии по потреблению аппаратных ресурсов и скорости выполнения.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии4

Все, что вам нужно знать о Kotlin Multiplatform

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

Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки кроссплатформенных приложений. В этом руководстве по Kotlin multiplatform вы подробно узнаете все об этом наборе.

Читать далее
Всего голосов 20: ↑11 и ↓9+2
Комментарии12

Выход Micronaut 4! Что нового?

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

14 июля вышла новая версия Java фреймворка Micronaut. С последнего мажорного обновления прошло почти два года (оно было 18.08.2021), и за это время произошло немало событий как в мире Java-разработки, так и в самом фреймворке. Под катом постараюсь рассказать, что же нового появилось в Micronaut.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

Эффективное и комплексное устранение утечек памяти в Android

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

Цель этой статьи — изучить эффективные и комплексные решения по нахождению и устранению утечек памяти в контексте Android-разработки. Стоит понимать, что утечка памяти чаще всего возникает из-за незнания технологии или собственного кода на подкапотном уровне, поэтому основной целью является научиться правильно писать код, учитывая специфику работы Java Memory Model, Garbage Collector и File descriptor.

Читать дальше
Всего голосов 7: ↑5 и ↓2+3
Комментарии5

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

Авторизация по биометрии — Kotlin

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

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

Вы решили сходить в магазин и купить какой‑нибудь чешский нефильтрованный напиток, посмотрели на время и увидели, что сейчас 21:45, и совсем скоро магазины закроются. Поэтому вам пришла гениальная идея — побежать, пока магазин не закрылся, но по пути вы уронили телефон и даже этого не заметили. Когда вы возвращались домой с напитком, вы обнаружили, что вашего телефона нет, а каким‑то чудом вы пообещали себе 2 дня назад, что поставите пароль на телефон «на следующий день», что, конечно же, не сделали. Через пару минут вы заходите через ноутбук или компьютер, нажимаете на кнопку «выйти со всех устройств» и думаете, что всё — никаких проблем не будет, но тут вы заходите в вашу любимую социальную сеть и видите, что вашим друзьям или коллегам было отправлено сообщение о займе 1000 рублей. В этот момент вы понимаете, что у вас был включен тот самый менеджер паролей, в который мог зайти абсолютно любой, получив ваш телефон в руки.

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

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии6

Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR

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

В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.

Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Работа с асинхронными операциями с помощью Kotlin Coroutines

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

Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines. 

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

Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии10

От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)

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

В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом.

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

Оценим готовность текущих решений к использованию в Kotlin Multiplatform.

Разработаем аналоги нескольких полезных классов пакета java.util.concurrent, до которых еще не добрались разработчики корутин.

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

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии9

The State of Kotlin Multiplatform

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

В мае 2023 года команда ГК Юзтех организовала в Томске Usetech Meetup «Тренды мобильной разработки», где своим опытом поделились эксперты российского ИТ-рынка. По итогам мероприятия мы написали серию статей, каждая из которых посвящена актуальным вопросам и транслирует выступление одного из спикеров. Начнем с выступления Алексея Гладкова, Mobile Developer компании Тинькофф.

Про Kotlin Multiplatform (КММ) многие слышали, но пробовали далеко не все. Мы с командой использовали его в работе, и здесь я расскажу о своем опыте. Возможно, теперь у вас появится понимание, как аргументировать бизнесу зачем вообще нужен KMM и насколько это сейчас рабочая история. 

Для начала пару слов о себе: меня зовут Алексей Гладков, работаю в компании «Тинькофф», преподаю в МФТИ, пишу нативные приложения уже около 10 лет, веду ютуб-канал про мобильную разработку «Mobile Developer».

Доклад, с которым я выступал в рамках митапа, называется «The State of Kotlin Multiplatform», поскольку все время выходят какие-то новые фичи, и я его дополняю. Для меня это, условно, дайджест, который я регулярно обновляю. Сейчас я расскажу о текущем состоянии Kotlin примерно на начало апреля 2023 г. 

Почему вообще надо задумываться о мультиплатформенном подходе? В 2015 году (еще даже не вышли часы Apple Watch) мы, мобильные разработчики, в основном ориентировались на телефоны. Другие разработчики ориентировались на планшеты и ноутбуки. То есть было четкое разделение. К 2023 году ситуация изменилась. Теперь ко мне могут прийти и сказать: «Мы на телевизоре хотим запуститься» или «На часах». Вполне себе реальная история. Дальше эта тенденция будет только развиваться – у нас будут появляться:

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии5

Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

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

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровкой доклада. Запись всего митапа можно посмотреть на Rutube.

Читать далее
Всего голосов 33: ↑23 и ↓10+13
Комментарии17

Ручной DI на Котлине? Легко! Ну, почти…

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

Все мы знаем, что Dagger - бич современного общества стандарт индустрии, если это касается Dependency Injection. Все мы знаем, что Dagger хоть и является мощным фреймворком, но сборка проекта с ним занимает довольно много времени, Dagger - страшный сон для многих. А что если отказаться от него? Но в пользу чего? Может быть писать все руками?

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии2