Все потоки
Поиск
Написать публикацию
Обновить
56.86

Kotlin *

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

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

Делаем работу с Koin проще

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

Всем привет! Меня зовут Базикалов Илья, я являюсь Андроид разработчиком в компании Broniboy. В нашем клиентском приложении мы используем библиотеку Koin для внедрения зависимостей. В своей статье я хочу вам показать, с какими проблемами мы столкнулись при работе с данной библиотекой и каким образом их решили (хоть и не полностью).

Читать далее

В выгодных рамках. Как ЭКОНС позволяет каждому оператору оценить свой вклад в прибыль компании

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

Привет, Хабр! На связи Александр Попко и Игнат Старшов, и сегодня мы расскажем про наш продукт ЭКОНС – систему визуализации, которая приносит СИБУРу миллиарды рублей в год.

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

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

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

Общий экономический эффект от внедрения ЭКОНС на наших предприятиях —  уже около 2,7 млрд рублей. В статье рассказываем, как устроен продукт.

Читать далее

Масштабируем Jetpack Compose Navigation

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

В одном из моих личных проектов я решил использовать Jetpack Compose в качестве основной технологии. Это означало, что моё приложение будет иметь одну Activity, а вся навигация будет выполняться с помощью Compose. Когда я начал планировать проект, библиотеки Compose Navigation ещё не было, как не было и способа внедрить ViewModel в Composable без использования компонентов Activity, Fragment или View. 

Но примерно за полгода до публикации этой статьи появилась библиотека Jetpack Compose Navigation, и Dagger-Hilt стал поддерживать Compose. Сегодня я расскажу о моём пути: поделюсь видением проблемы масштабируемости навигации на примерах Google и предложу её возможное решение.

Читать далее

Пишем бесплатный Gerber-вьювер с открытым исходным кодом под Android с нуля

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

Привет, Хабр! Меня зовут Сергей Велеско, я Android разработчик в настоящее время и инженер-конструктор печатных плат в прошлой жизни. В этой статье я расскажу, как мне удалось применить знания, полученные в прошлой профессии, и написать простое Android приложение для просмотра Gerber-файлов.

Поехали!

Android App Bundles. Как уменьшить размер вашего приложения?

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

Привет, Хабр! Сегодня расскажу, что такое Android App Bundles, как их использовать в реальном проекте и на сколько нам удалось уменьшить размер приложения, не прикладывая очень больших усилий.

Читать далее

Умный дом своими руками на ESP8266 + Kotlin + React

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

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

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

Читать далее

Этапы работы Jetpack Compose

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

Как и большинство UI-фреймворков, Compose рендерит кадр в несколько различных этапов. В системе Android View есть 3 этапа: Measure, Layout и Drawing. Compose очень похож, но имеет важный дополнительный этап Composition в начале.

1. Composition: какой UI показывать. Compose запускает composable-функции и создает описание вашего UI 

2. Layout: где размещать UI. Этот шаг состоит из двух: измерение и размещение (measurement и placement). Элементы верстки измеряют и помещают самих себя и все дочерние элементы в 2D-координатах.

3. Drawing: как рендерить. UI-элементы отрисовываются в Canvas, обычно на экране устройства.

Читать далее

Flutter по сравнению с Kotlin в 2021 году: Что лучше для разработки кросс-платформенных приложений?

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

Кроссплатформенная разработка находится на подъеме, и вы можете задаться вопросом, почему. Как можно предположить из названия, она позволяет запускать приложения на нескольких платформах — будь то iOS или Android — и помогает бизнесу привлечь больше клиентов, а значит, заработать больше денег. Неудивительно, что акцент постепенно, но неуклонно смещается в сторону кроссплатформенной разработки, и новые технологии появляются все чаще и чаще.

Просуществовав некоторое время, этот тип разработки выявил двух лидеров: React Native и Flutter. Почему же мы хотим рассказать вам о Flutter в сравнении с Kotlin, а не о Flutter и React Native? Что такое Kotlin, и может ли он на самом деле представлять угрозу популярности Flutter? Что такое Kotlin Multiplatform (Мультиплатформа), и в чем преимущества обеих технологий? Давайте узнаем.

Читать далее

Создание и тестирование неблокирующих веб-приложений с помощью Spring WebFlux, Kotlin и Coroutines

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

Когда поступает HTTP-запрос, «обычное» веб-приложение сопоставляет запрос с конкретным потоком из пула потоков. Этот назначенный поток остается с запросом до тех пор, пока ответ не будет возвращен в сокет запроса. Попутно нам может потребоваться получить данные из некоторой веб-службы или базы данных, прочитать или записать в файл или выполнить другие вызовы ввода-вывода, во время которых поток блокируется и должен ждать, пока не получит ответ. Для приложений с высокой частотой запросов пул потоков может в какой-то момент исчерпаться, и тогда новые запросы больше не будут обрабатываться.

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

Подход появился, когда группа компаний объединилась в инициативе Reactive Streams, чтобы определить ключевые принципы и четыре интерфейса JVM. После этого они практически каждый пошли своим путем, чтобы создать реактивную библиотеку на основе этих соглашений. Одна из этих библиотек, Project Reactor, является основой, на которой Spring построил свою реактивную веб-платформу Spring WebFlux. 

Этот реактивный стек позволяет нам создавать неблокирующие веб-приложения в структуре, которая выглядит знакомой с точки зрения классов, методов и аннотаций, если вы работали с Spring MVC, но фактическая реализация методов может быть с довольно сложной кривой обучения. 

Читать далее

Создаем нативный образ при помощи Spring Boot

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

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

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

По Википедии

Читать далее

Семь основных моментов из дорожной карты Kotlin осень 2021 года

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

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

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

Для тех, кто не хочет читать, мы подготовили видеоролик с этими основными моментами!

Читать далее

Навигация на Jetpack Compose by Google

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

Всем привет, в данной статья покажу как организовать навигацию в Android приложении при использовании в своём проекте только compose UI. Методики навигации применены из официального источника от Google.

Расскажу как передавать объекты и примитивные данные между состояниями экранов, как советует google и свой метод, который мне подошёл как наиболее оптимальный и менее затратный.

Читать далее

Android: как подружить ваше приложение с Google Ассистентом?

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

Многие из вас прекрасно знают, что такое Google Ассистент. Это голосовой помощник, подобный Siri, Алисе, Алексе и другим. Когда пользователь что-то говорит, Google Ассистент понимает это с помощью natural language understanding (NLU). NLU преобразует человеческую речь в специальную структуру данных, которую уже можно обработать.

У разработчиков Android есть возможность интегрировать NLU в свои приложения через специальный api, который называется App Actions. Точнее, существует два вида интеграции: мы можем получить и использовать Deep Link из речи пользователя или получить данные из приложения, не открывая его, и показать их прямо в Google Ассистенте через Slice.

Читать далее

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

Android App Shortcuts: static, dynamic, and pinned shortcuts. Использование в реальном проекте

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

Привет, Хабр! Решил поделиться опытом реализации и использования в нашем проекте такого функционала как Android App Shortcuts. Прошу не судить строго, моя первая статья на Хабре.

Читать далее

Интеграция Compose в существующий проект Android

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

Всем привет, я Android разработчик в компании Enaza подразделения Games, которая занимается дистрибуцией ключей для игр. В данном посте опишу опыт интеграции Jetpack Compose в существующий проект.

В данной статье расскажу как интегрировать composable функции в фрагмент и перепишем adapter который использует layout на compose view функции.

Читать далее

Kotlin и Python в одном проекте

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

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

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

Читать далее

DI.kt: одна из первых DI библиотек для Kotlin Multiplatform

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

Прошу приветствовать одну из первых DI библиотек для Kotlin multiplatform — DI.kt

Вы можете спросить: «А зачем нам ещё DI либы?». Долгое время полноценного DI для Kotlin Multiplatform не было. Существующие библиотеки — это сервис-локаторы (Koin, Kodein, Popkorn), которые не валидируют граф зависимостей во время компиляции. А это одна из важнейших фич многих привычных Java и Android сообществам DI библиотек и фреймворков. Чтобы принести эту фичу в Kotlin Multiplatform, я и написал DI.kt. Библиотека намного проще привычного нам Dagger — нет мультибиндингов и прочих концептов, которые делают его таким сложным в освоении (и периодически используются неправильно).

Читать далее

Модульность и DI в современном Android-приложении. Большой туториал от Яндекса

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

Всем привет! Я Денис Загаевский из Android-разработки Яндекс.Карт. Если вы развиваете многомодульное приложение или хотите разбить на части пока ещё одномодульное, этот туториал для вас.


Под катом расскажу, как удобно разбить приложение на модули, зачем это нужно и как потом приготовить в нём DI (dependency injection). Кто-то мог слышать мой доклад на Mobius 2021 Piter или в Школе мобильной разработки, а для всех остальных я написал эту статью.


Смотреть доклады

На Mobius:



В ШРИ:



Местами буду ссылаться на опыт Яндекс.Карт. Кстати, рабочий пример нашего подхода есть на GitHub.


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

Нужен ли Mockito, если у вас Kotlin?

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

Салют, коллеги.

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

Я занимаюсь разработкой аддонов для Atlassian-стека в компании Stiltsoft и, из-за технических ограничений, до сих пор (да в 2021 году и, скорее всего, в ближайшие пару лет) вынужден использовать Java 8. Но, чтоб не отставать от прогрессивного человечества, внутри компании мы пробуем Kotlin, пишем на нем тесты и разные экспериментальные продукты.

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

Читать далее

IT Nights 2021: тайна возвращения образовательного IT-шоу

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

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

На данный момент Order256 сумел установить, что мероприятие шифруется под кодовым именем IT Nights 3:0, и ведется застройка секретного бункера в Университете Иннополис. Нам удалось получить сведения и о некоторых человеческих объектах, согласившихся сделать доклады в рамках рассекреченной конференции. 

Дешифрованный список спикеров прилагается к данному файлу.

Снять гриф секретности