Обновить
49.67

Kotlin *

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

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

Книга «Kotlin. Программирование для профессионалов. 2-е изд.»

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

Kotlin — это язык программирования со статической типизацией, который взяла на вооружение Google в ОС Android. Кроме того, это мультиплатформенный язык, позволяющий создавать приложения для macOS, Windows и iOS.

Джош Скин, Дэвид Гринхол, Эндрю Бэйли на практических примерах познакомят вас с ключевыми концепциями Kotlin и фундаментальными API.

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

Платформа из красного кирпича: как настроить окружение в Kotlin Multiplatform Mobile

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

Первое, в чём может возникнуть затруднение у Android разработчика при переходе на ККМ - это быстрая настройка окружения. Официальный сайт Kotlin не пестрит подробными инструкциями, и можно потратить несколько часов в поисках нужной информации. В данной статье мы пройдёмся по этапам настройки проекта.

Читать далее

Пишем бота-кликера на Kotlin для Lineage 2

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

Еще не все новогодние салаты были съедены, “Ирония судьбы” уже просмотрена, а до начала рабочей недели еще целая вечность и нужно было придумать себе развлечение на оставшиеся праздники. Предвкушая ностальгию я открыл Lineage 2, одну из самых популярных MMORPG “нулевых” на СНГ пространстве. Однако, самому играть уже не хотелось и пришла идея автоматизировать это дело. За подробностями под кат!

Читать далее

Упрощаем создание FragmentFactory при помощи dsl котлина

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

Фрагменты в андроид разработке стали привычным способом написания ui и со временем, для удобства разработки, появилось много нового функционала. Один из таких примеров - использование своей реализации FragmentFactory. Об этом я и хотел бы поговорить.

Для чего нужно использовать фабрику фрагментов? 

Часто бывает, что при создании во фрагмент нужно передать какие-то параметры, это может быть ссылка на объект, от которого зависит фрагмент или же, в самом простом случае, id контента, который нужно отобразить. Любой андроид разработчик знает, что просто передать в конструктор фрагмента нужные параметры не получится, так как при пересоздании фрагмента используется дефолтный конструктор. Стандартный способ для передачи id, положить его в аргументы фрагмента.

Читать далее

CI, кодстайл и TDD: обзор практик для повышения качества кода

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

Blade Runner 2049, Warner Bros. Pictures

Я видел не во сне, а наяву атакующие корабли, пылающие под четырьмя вложенными if-else, и лучи CI с кучей сканирований у ворот Тангейзера, вызывающие лютую боль разработчиков. Меня зовут Максим Морев, и я техлид в Газпромбанке.

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

Читать далее

Как сделать анимацию с помощью MotionLayout

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

Привет, Хабр! Меня зовут Павел Беловол, я Android-разработчик на проекте онлайн-кинотеатра KION в МТС Digital. Это новая часть сериала о внедрении фичи Autoplay в KION, в которой я расскажу про свой личный опыт работы с MotionLayout на примере продакшн-задачи в KION. Из этой статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.

Читать далее

Как стать Android разработчиком в 2023

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

И так, давайте начнем с того, что должен знать и уметь человек, чтобы стать Android разработчиком? Скиллсет будем смотреть по вот этому Roadmap

Читать далее

Готовим FeatureToggle для Android

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

Готовим FeatureToggle для Android

Всем привет, меня зовут Илья, я андроид инженер. Почти три года назад, мы начали свой проект в сфере финтех. Срок запуска MVP был оптимистичным. За неделю до наступления дедлайна наша команда осознала, что срок запуска переносить никто не собирается, а одна фича вряд ли будет закончена вовремя. Рисковать не хотелось и было решено - прикрыть эту часть заглушкой. Блокируя часть нерабочей функциональности, мы питали надежды, что скоуп MVP будет закрыт. По-этому, выключить нерабочий код хотели так, чтобы по щелчку кнопки CI/Web экран стал доступен для пользователя.

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

Откровенно говоря, разговоры внутри команды о внедрении FeatureToggling шли уже давно. Эта история стала спусковым крючком для его внедрения.

Читать далее

Как я написал свой язык и онлайн IDE

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

Здесь онлайн интерпретатор, здесь документация.

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

Чуть позже я выяснил, что такие программы называют процедурными генераторами. Я увлекся этим, сделал ещё парочку (1, 2).

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

Читать далее

Как внедрить KMM в существующие проекты и не пожалеть: теория, наш опыт и гайд

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

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

Читать далее

Не верьте ChatGPT и используйте KotUniL

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

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

Попробовал пообщаться с ChatGPT и я. Результат общения вынесен в заголовок. 

Хотите узнать, почему ChatGPT верить нельзя и почему лучше использовать KotUniL - читайте дальше.

Что же, почитаем...

Моя любимая функция Kotlin

Время на прочтение6 мин
Количество просмотров14K
За последние несколько лет я видел много дискуссий о функциях Kotlin. Среди обсуждаемых тем обнуляемость всегда в первых рядах. Мне она нравится, но это определенно не моя любимая функция.

Больше всего в Kotlin мне нравятся некоторые мелкие особенности, благодаря которым язык становится очень элегантным. Например, смарт-кастинг (контракты), приостановка, функции приемника/расширения и делегирование.

Но на данный момент моей любимой особенностью является сочетание функций inline и suspend.
Читать дальше →

Приложение для бортпроводников c 23 интеграциями и работой без интернета

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

Как мы переводили работу бортпроводников из бумаги в приложение и внедряли фишечки для пассажиров.

Читать далее

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

Exposed с SQLite на Android?

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

Лень - двигатель прогресса, так что сегодня я покажу, как подключить Exposed таблицы из JVM таргета в Android с JDBC SQLite.

Читать далее

Магия размерностей и магия Котлина. Часть третья: Смешение магий

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

Это третья, заключительная статья серии, посвящённой библиотеке по манипулировали физическими величинами системы СИ, а также другими величинами, в Котлин. В ней мы рассмотрим, как фундаментальные математические структуры, которые природа “заложила” в систему СИ, предопределяют дизайн библиотеки и как возможности и ограничения Котлина были использованы при разработке библиотеки KotUniL.

Читать далее

Магия размерностей и магия Котлина. Часть вторая: Продвинутые возможности  KotUniL

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

Это вторая статья из серии статей про магии размерностий и Котлина на примере библиотеки KotUniL.

В первой статье мы рассмотрели, как с помощью этой библиотеки не разбивать космические аппараты :-). 

В этой статье мы рассмотрим менее очевидные, но не менее интересные фичи библиотеки.

Читать далее

Создаем простую игру с Jetpack Compose для часов на Google WearOS

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

Библиотека Jetpack Compose значительно изменила подход к разработке нативных приложений и позволила декларативно описывать в коде интерфейсы, которые зависят от состояния и автоматически отслеживают его изменение. Но долгое время ее применимость ограничивалась платформой Android для телефонов и планшетов, а затем (благодаря разработкам JetBrains) стало возможным использовать реактивный стиль разработки для создания десктопных и веб-приложений. Но все еще нельзя было создавать приложения для умных часов, работающих над вариантом платформы Android - WearOS. В июле 2022 года команда разработки Android предложила первую стабильную версию Compose for WearOS, а в начале декабря вышло обновление библиотеки версии 1.1 с новыми возможностями по настройке пользовательского интерфейса и дополнительными компонентами. В этой статье мы сделаем несложную игру для WearOS с использованием Compose.

Читать далее

Магия размерностей и магия Котлина. Часть первая: Введение в KotUniL

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

Амперы нельзя складывать с вольтами. Сантиметры можно складывать с дюймами, но очень внимательно. Иначе получится как с космическим аппаратом стоимостью 125 миллионов долларов Mars Climate Orbiter, который успешно долетел до Марса, но бездарно разбился о его  поверхность. 

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

Этих катастроф и смертей можно было бы избежать, если бы программисты бортового и системного ПО использовали в своей работе специализированные библиотеки типа KotUniL, о которой я хочу рассказать в серии статей. 

Первая (эта) статья собственно о библиотеке, её возможностях и нехитрых правилах использования. Другие статьи этой серии затрагивают темы, которые могут оказаться полезными и интересными всем программистам, вне зависимости от используемого ими языка, хотя “котлинцам” они могут пригодиться больше других.

Читать далее

Создание веб-приложения на Ktor. Часть 1

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

Создание первого веб-приложения используя фреймворк Ktor.

Научимся генерировать проект Ktor в Intellij IDEA используя плагин, проводить тесты уже готового приложения.

Читать далее

Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку

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


Меня зовут Фёдор Игнаткевич, я делаю приложение Яндекс и мобильный Яндекс Браузер для Android. Примерно год назад я предложил команде идею фреймворка для внедрения зависимостей, который более чем вдвое ускорил сборку обоих проектов и который мы сегодня выложили на Гитхаб — чтобы разработчики других приложений тоже могли улучшить скорость сборки. Я с нуля реализовал фреймворк, а затем мы вместе с командой интегрировали его в проекты и сейчас активно используем.

Как раз про свой опыт разработки я и хочу рассказать. Давайте попробуем разобраться, какие есть факторы замедления сборки, как Yatagan, совместимый с Dagger по API, с ними справляется и какие ещё задачи могут стоять перед DI-фреймворком — например, в части зависимостей под рантайм-условиями. Кстати, нативная поддержка этих зависимостей в Yatagan избавила нас от ручной обработки состояний A/B-экспериментов в DI.

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