Pull to refresh
65
Анна Жаркова@anioutka

Lead mobile developer в Usetech, Kotlin GDE

1
Rating
114
Subscribers
Send message

Волшебный Koog. Пишем Kotlin-агент широкого профиля KMP

Level of difficultyMedium
Reading time13 min
Reach and readers9.1K

Всем привет! С вами Анна Жаркова, руководитель мобильной практики ГК Юзтех. Что ж, за последние полгода мир разработки и мир ИИ скакнули и ушли далеко вперед. Теперь знания работы с агентами, умение написать не только правильный промт, но и собственные скиллы (навыки) для этих агентов, готовить свои mcp для погружения в контекст задачи, проекта, становятся не только полезными, но и обязательными для разработчиков и IT-специалистов. Уже многие используют как специальные IDE с ИИ-агентами (Claude, Cursor, Windsurf и т.п), так и встраиваемые в привычные VsCode и AndroidStudio в виде плагинов. Можно не ограничиваться готовым настраиваемым функционалом, а пойти дальше и написать свой собственный агент. И сегодня мы поговорим про такое решение, использование специального фреймворка от JetBrains Koog для разработки свои агентов. С его помощью мы создадим агент для генерации простых KMP приложений и кросс-платформенных задач и подключим к плагину Continue dev.

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

Читать далее

WWDC 2025. Чем Apple ответит Google, и что нас ждет

Level of difficultyEasy
Reading time6 min
Reach and readers4.5K
image

Всем привет! С вами снова я, Анна Жаркова, руководитель мобильной практики компании Usetech. Буквально только что прошел основной кейноут WWDC 2025 от Apple, анонсированы основные тематические сессии, и пришло время обсудить, какие же основные тренды iOS разработки нас ожидают, чему мы будем учиться, какие практики осваивать и про что слушать и смотреть доклады на мероприятиях. Сессии можно найти на портале. Обратите внимание, что на сайте изменилось оформление, и сессии разбиты сразу по темам. Непонятно, это часть сессий, или Apple решили опубликовать все сразу, как делает Google, но они явно решили отойти от прежнего подхода.

Итак, что же нового нам представили.
— дизайн-систему Liquid Glass (ответ Expressive Material Google),
— расширенный функционал виджетов и Live Activity,
— мощный iPad OS с поддержкой многооконных приложений, панелью меню, как у MacOS, с портированными приложениями для MacOS,
— улучшения для VisionOS и пространственных вычислений,
— расширенная поддержка и улучшения других устройств экосистемы Apple, включая часы и машины,
— умные функции систем Visual Intelligence и Apple Intelligence совместно с ChatGPT,
— особое внимание перформансу и фоновым задачам (включая iPad OS)
и многое другое, например, улучшения для разработки игр, TVOS и разные библиотеки для отслеживания показателей здоровья.

Самим громким нововведением стали не доработки по AI, а дизайн-система Liquid Glass (не трогаем ассоциации). Новый «стеклянный эффект» получил UI всех устройств экосистемы Apple. Полупрозрачные иконки со свечением, особая анимация и механика движения у многих ассоциируются и с Windows Vista, и с Material Design:
image
Информация по работе с новой дизайн-системой включена практически во все видео тематической недели.
Другим новинкам API разработки и Xcode было посвящено на кейноуте относительно немного времени. По традиции, вся информация будет именно в сессиях.
Читать дальше →

Google I/O 2025. Что нового в Android

Level of difficultyEasy
Reading time6 min
Reach and readers6K
image

Всем привет! С вами Анна Жаркова, руководитель практики по мобильному направлению из компании Usetech. Прошли 2 дня Google I/O и живых сессий и воркшопов, новинки уже представлены, не все туториалы и плейлисты еще не выложены, но у нас уже есть, что обсудить. Поговорим мы не с AI, хотя про него сегодня тоже будет, а об Android. Все аспекты мы затронуть не сможем, все-таки информации было очень много, а по каждой из новинке можно писать и отдельную статью, и даже доклад. Поэтому рассмотрим наиболее яркие моменты.
Читать дальше →

В ожидании Google I/O 2025

Level of difficultyEasy
Reading time5 min
Reach and readers2.3K
image

Всем привет! С вами руководитель практики по мобильной разработке ГК Usetech Анна Жаркова. Уже совсем немного осталось до одного из основных IT-событий года Google I/O. Как обычно, мы все в нетерпении узнать, какие же новинки технологий представит нам компания Google, какие тренды ждут нас, и что будет с Android, KMP и Flutter, а также наработками по AI.

В этом году Google выделили 4 основных направления сессий и докладов:
— AI
— Android
— Cloud
— Web.

KMP и Flutter в этом году посвящено меньшее количество сессий, и они выступают подтемами Android и AI секций. Как мы помним, обычно публикуются целые плейлисты образовательных туториалов сверх заявленного, поэтому, возможно, что-нибудь новенькое по Kotlin, KMP и KSP мы все-таки увидим. Особенно с учетом выхода Compose Multiplatform в стабильную фазу.

Чтобы не запутаться, всегда начинайте с сессий «What's new in» (Что нового в <технологии>). В них обычно рассказывают про основные новости технологий и направлений, а также дают сноски на те видео, где вы можете узнать более подробно про интересующий вас аспект.

AI

Уже который год многие считают, сколько раз слово «AI» произносится за мероприятие. В этом году, вероятно, прошлый рекорд будет побит. На Google I/O 2024 представили довольно много инструментов и новинок для практического использования искусственного интеллекта в разработке. Была представлена улучшенная модель Gemini (бывший Bard), различные SDK на ее основе для внедрения «умных функций» в свои приложения, а также «умные» приложения Android от Google с поддержкой генерации различного контента и «пониманием» запросов (Gmail, Google Photo, поиск, Google Meet и т.п).
Читать дальше →

Подключаем GigaCode к мобильной разработке

Level of difficultyMedium
Reading time8 min
Reach and readers29K


Всем привет! С вами Анна Жаркова, руководитель группы разработки в компании Usetech. Сегодня я вам принесла необычный материал. 27 июня 2024 года для сторонних разработчиков открыли и презентовали российскую среду разработки Giga IDE со встроенным ИИ-ассистентом от «Сбера» и «СберТеха». Заявлено, что встроенный в среду ИИ-ассистент GigaCode анализирует контекст, предлагает полные конструкции функций, циклов и других элементов, что позволяет писать код в среднем на 25% быстрее. Ассистент поддерживает как автокомплит кода, так и интеллектуальные подсказки для ввода, генерацию кода для поддерживаемых язык. Также его можно использовать для выполнения разных команд.

Мы посмотрим, как подключить, настроить и применить GigaCode AI к мобильной разработке.
Для начала нам потребуется скачать специальную IDE GigaCode . Нам предложит перейти на ресурс GitVerse (аналоги GitHub, полностью совместим с Git), где потребуется создать аккаунт и авторизоваться через СберID:


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

WWDC 2024. Обсуждаем, что по факту

Level of difficultyEasy
Reading time4 min
Reach and readers5K


Всем привет! С вами снова я, Анна Жаркова, руководитель группы разработки в ГК Usetech. 10 июня прошел долгожданный Keynote WWDC 2024. Прошел и оставил после себя легкий флер разочарования. Заявлено было много, показано много. Какие-то новинки (например, функция Mirroring для трансляции изображения и звука с iPhone на десктоп) вызвали одобрение аудитории, как полезные и нужные. Другие (например, настройка визуального оформления домашнего экрана, общая тема для иконок и то, как это реализовано) оставили многих в недоумении. Да, много полезного, но из-за того, что ожидания от анонса разошлись с действительностью, это меркнет на общем фоне.

Еще больше недоумения вызвал функционал Apple Intelligence. И даже не то, что какие-то вещи были показаны довольно скомкано. Разочарование вызвало 2 момента: дата выхода инструментария и отсутствие тематических сессий:



Были анонсированы и «умные» тулзы для Xcode, и встроенный ChatGPT. Но как этим пользоваться, как встраивать, как с этим работать, такой информации напрямую нет. Она частично размазана по сессиям по вспомогательным технологиям. Из них и будем черпать знания.

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

WWDC 2024. Прогнозируем, что ждет разработчиков

Level of difficultyEasy
Reading time5 min
Reach and readers5.1K


Всем привет! С вами снова я, Анна Жаркова, руководитель группы разработки из компании Usetech. Совсем скоро нас ждет неделя тематических сессий по технологиям WWDC от Apple, а это значит, что самое время составлять список того, что может быть продемонстрировано из новинок, и что хотелось бы увидеть больше всего. Затем сравним свой вишлист с анонсами.

Итак, начнем. С новинок прошлого года.

Развитие новинок прошлого года


В прошлом году Apple посвятили большую часть сессий своей новинке – умным очкам VR/AR, работающим на Vision OS, а также технологиям для разработки соответствующих приложений: ARKit/VRKit, Core/Metal и т.п. Разумеется, много было и различных кодлабов и воркшопов по работе с SDK и VisionOS. Затем был запущен маркет соответствующих приложений. В этом сезоне ожидаем больше оптимизированных фирменных приложений Apple, а также функцию отслеживания дыхания и поддержку стилуса Pencil Pro, представленного ранее. Ожидаем крупное обновление Vision Pro, которое включит в себя более мощную функцию Live Captions, с поддержкой генерации субтитров всех окружающих диалогов в поле зрения пользователя. И очень важно: новое обновление, вероятно, будет включать в себя поддержку и интеграцию с Искусственным интеллектом.
Читать дальше →

Room для Kotlin Multiplatform. Пробуем нативное решение

Level of difficultyMedium
Reading time6 min
Reach and readers16K

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В начале мая Google нас порадовали релизами нескольких библиотек для локальных хранилищ. Наконец, в приложения Kotlin Multiplatform можно полноценно использовать Room (версия 2.7.0-alpha01 и выше).
И сегодня мы опробуем работу с данной библиотекой на примере небольшого приложения Todo, написанного на KMP с использованием Compose Multiplatform.


Кроме Room, в проекте используется библиотека Lifecycle-viewmodel для KMP. И Koin для DI и гармонии.

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

ViewModel + Kotlin Multiplatform. Пробуем нативное решение

Level of difficultyMedium
Reading time9 min
Reach and readers14K


Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать.

Для начала освежим, с чем же мы работали до ViewModels из Lifecycle.

Сами по себе ViewModel как часть паттерна MVVM применительно к кросс-платформенным решениям идея не новая. Многие давно использовали собственную реализацию, совмещая также с платформенными архитектурами.
Читать дальше →

По граблям, по граблям. Пишем отзывчивый интерактивный виджет IOS 17

Level of difficultyMedium
Reading time9 min
Reach and readers3.7K
image

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В 2023 году на WWDC Apple представили много нового и интересного API, среди которого были долгожданные интерактивные виджеты, реагирующие с помощью механизма AppIntent на нажатия и запускающие логику без переключения в основное приложение. Однако, как показывает практика, не все так просто и красиво, как Apple показывают на демонстрационных сессиях, а от беты до релиза что-то в API обязательно ломается или внезапно меняется.

Поэтому сегодня мы поговорим, как с помощью Widget Kit iOS 17 и AppIntent сделать виджет не только интерактивным, но и рабочим и отзывчивым в моменте, и обойти подводные камушки, оставленные разработчиками API. Рассматривать будем на примере самописного приложения для заметок TODO.



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

Помимо обработки событий из самого виджета в таких приложениях также важно синхронизировать состояние между таргетами без потерь и задержек. Данные (наши тудушки и их состояние) мы сохраняем локально. Для этого используем инструмент для хранения данных SwiftData. Данный фреймворк также был представлен на WWDC 2023, и при его использовании в разных таргетах можно встретить тоже много подводных камней.
Читать дальше →

WWDC 2023. Что нового для разработчика

Reading time5 min
Reach and readers5.9K
image

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.
Вчера Apple представили Keynote долгожданной WWDC 2023. Как обычно, основная информация по новинкам для разработки вынесена в специальные инженерные сессии, которые будут публиковаться ежедневно всю эту неделю. Краткое описание можно увидеть в What Apple developers need to know at WWDC23

Давайте обсудим основные тенденции и посмотрим, на что будет сделан упор в анонсированных видео. Разумеется, мы не затронем все 175 сессий, но обозначим топовые тематики:

  • SwiftUI,
  • виджеты и App Clips,
  • Swift,
  • безопасность, приватность и сеть,
  • Xcode,
  • VR/AR.

И начнем мы с самой долгожданной для многих разработчиков новинки:
Читать дальше →

Google I/O 2023. Что нового в Kotlin для Android?

Reading time3 min
Reach and readers7.6K
image

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.

И сегодня мы посмотрим на новинки Kotlin для Android, представленные Google в видео «What's new in Kotlin for Android» с Google I/O 2023 (с некоторыми моими комментариями и дополнениями).

В этом году основной фокус делают на следующие пункты:
  • Kotlin Compiler 2.0 (доступен с 2024 года)
  • Kotlin DSL скрипты build.gradle по умолчанию
  • KSP как приоритетный процессинг аннотаций
  • Kotlin Multiplatform (неожиданно)

Также внимание отводится Jetpack Compose и его улучшениям, но подробнее ознакомиться стоит в тематических видео.

Итак, начнем с компилятора Kotlin.
Читать дальше →

Remote бэкенд на Firebase для МП без бэкенда

Level of difficultyMedium
Reading time8 min
Reach and readers6.3K

image


Всем привет! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем вам рассказывать про интересные технологии мобильной разработки и об их эффективном применении в приложениях на практике. Сегодня поговорим про то, как с помощью Firebase (без помощи бэкенд-разработчика), а именно облачных хранилищ Firebase Realtime Database/Firestore и Cloud Storage, создать свой собственный бэкенд для мобильного приложения. В качестве примера напишем приложение-аналог известного сервиса с картинками, фотографиями и постами. UI у нас уже готов, подробнее можно посмотреть в этой статье.

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

WWDC 2022. Что нового в SwiftUI

Reading time3 min
Reach and readers4.4K

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech. 

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

В этой версии ставку сделали как на поддержку новых возможностей iOS, так и на улучшение и доработку уже существовавших. Основными направления развития SwiftUI стали:

1. Поддержка нового фреймворка для графиков Charts.

2.Навигация (своя, родная, нативная).

3.Сложные контролы.

4.Поддержка шаринга.

5.Графика и разметка.

Предлагаю рассмотреть их детальнее.

Charts

Начнем по порядку с API для графиков.

Читать далее

Чего ждать разработчику от WWDC 2022

Reading time7 min
Reach and readers2.8K

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech. 

Итак, долгожданная ежегодная презентация WWDC состоялась, мы готовы обсудить представленные новинки и анонсированные сессии. В этом году на Keynote основной упор был сделан на:

- игры и разработку

- иммерсивный звук и изображение

- многооконность

- расширенный и улучшенный шаринг, механизмы обмена самыми разными данными и совместные процессы, взаимодействие между устройствами

- улучшенные возможности отслеживать состояние здоровья и физическую активность

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

Сразу скажу, что все сессии упомянуть не возможно. В этом году их много, они довольно разнообразные и разноплановые. От улучшений уже известных нам фреймворков (SwiftUI, WidgetKit, SharePlay) до совсем новых (WeatherKit, ScreenCaptureKit). Также верно сказано, что описания сессий в этом году не сильно многословны, видимо, что подстегнуть зрителей к просмотру всех.

Читать далее

GraphQL в мобильной разработке. Пишем клиент для iOS

Reading time17 min
Reach and readers4.9K


Доброго времени суток! С вами Анна Жаркова, ведущий разработчик компании Usetech, и мы продолжаем нашу серию статей, посвященных работе с технологией GraphQL  при разработке мобильных приложений.

В предыдущих частях мы говорили о подготовке облачного GraphQL бекенда на Hasura и подключении GraphQL API к Android клиенту. Теперь настал черед iOS мобильного приложения.

Для работы нам понадобится библиотека Apollo GraphQL для iOS:

www.apollographql.com/docs/ios

github.com/apollographql/apollo-ios

Наше приложение абсолютно аналогичное Android и включает в себя такие же по функционалу экраны:

— вход

— регистрация

— лента постов

— экран создания и редактирования поста

— экран с информацией о текущем пользователе.

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

GraphQL в мобильной разработке. Пишем клиент для Android

Reading time14 min
Reach and readers8.9K


Доброго времени суток! С вами Анна Жаркова, ведущий разработчик компании Usetech, и мы продолжаем нашу серию статей, посвященных работе с технологией GraphQL при разработке мобильных приложений.

В прошлой части мы говорили о подготовке облачного GraphQL бекенда на Hasura. В этой статье мы перейдем собственно к подключению GraphQL и API к нашему приложению. И начнем мы с Android клиента.

github.com/apollographql/apollo-android
www.apollographql.com/docs/android

Наше приложение состоит из нескольких экранов:

  • вход
  • регистрация
  • лента постов
  • экран создания и редактирования поста
  • экран с информацией о текущем пользователе.

Экраны и сопутствующий код уже у нас есть, осталось подключить API.
Изображения мы храним в Firebase Storage, поэтому не затрагиваем этот вопрос.
Читать дальше →

Kotlin Multiplatform. Работаем с асинхронностью на стороне iOS. Publishers, async/await

Reading time6 min
Reach and readers7.7K

Всем доброго времени суток! С вами Анна Жаркова, ведущий разработчик компании Usetech. Продолжаем говорить про Kotlin Multiplatform и работу с асинхронными функциями. В этой статье мы будем рассматривать, как можно удобно подключать Kotlin общий код на стороне iOS, используя возможности Swift. А именно, как работать с Combine Publishers и новым async/await.

* Примеры кода доступны в полной версии статьи, и к сожалению, не доступны в предпросмотре

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

Если на стороне common, мы оперируем корутинами и suspend функциями, то на стороне iOS проекта нативного благодаря поддержке interop Kotlin/Obj-C с версии Kotlin 1.4 suspend функции преобразуются в функции с completion handler.

Далее мы можем в этом блоке либо вызвать вывод данных, либо выполнение какого-то следующего метода. Все стандартно и просто.

Однако, не все любят простой синтаксис completion handler. А еще мы прекрасно знаем, что если ими злоупотреблять, можно легко попасть в ситуацию callback hell и потерять читабельность и чистоту кода.

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

Попробуем сделать наш Kotlin код совместимым с Combine Publishers. Для этого превратим вызов нашей suspend функции в AnyPublisher с использованием Future Deferred и Promise.

Читать далее

Kotlin Symbol Processing. Работаем с аннотациями по-новому

Reading time9 min
Reach and readers11K

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. В феврале 2021 года компания Google анонсировали экспериментальный релиз технологии Kotlin Symbol Processing (совместима с Kotlin с 1.4.30), как более эффективную альтернативу KAPT (Kotlin Annotation Processing Tool). Она сразу привлекла внимание многих разработчиков, помышляющих о внедрении аннотаций в мультиплатформенные проекты, несмотря на рекомендации создателей не использовать ее в продакте. В сентябре вышел первый стабильный релиз, и теперь она официальна готова к работе в боевых проектах. В этой статье предлагаю рассмотреть нюансы работы с KSP как в приложениях для Android, так и Kotlin Multiplatform.

Итак, начнем с назначения. Kotlin Symbol Processing предназначена для разработки легковесных плагинов компиляции Kotlin и процессоров аннотаций. Последние нас и интересуют. По сути аннотации нужны в приложении для того, чтобы упростить работу и избавить нас от лишнего кода. Например, когда нам нужно проанализировать код для определенной цели и затем сделать какие-то действия. Либо убрать лишнюю абстракцию из приложения. Гораздо привлекательнее выглядит добавить буквально 1 команду над конкретным объектом/методом/типов, и вместо того, чтобы писать тонны бойлерплейта для каждого случая, поручить это библиотеке, которая сделает все сама.

Давайте посмотрим, как работает в своей механике процессор аннотаций. Например, такой, как мы используем в Java коде.

Читать далее

Kotlin Native. Работаем с новой моделью памяти

Reading time6 min
Reach and readers10K

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native. В предыдущих статьях мы уже рассмотрели существующие способы работы с многопоточностью с корутинами и без, и что делать с имеющимися болями. Теперь поговорим о новой модели управления памятью, которая появилась совсем недавно.

31 августа компания JetBrains представили превью новой модели управления памятью в Kotlin Native. Основной упор команда разработчиков сделала на безопасность шаринга между потоками, устранение утечек памяти и освобождение нас от использования специальных аннотаций. Также доработка коснулась Coroutines, и теперь можно без опаски переключаться между контекстами корутин без заморозки. Обновления подхватили и Ktor:  

Итак, что же нового появится в версии Kotlin 1.6.0-M1-139: 
1. Заявлено, что мы можем убрать все freeze() блоки (в том числе и во всех фоновых Worker), и переключаться между контекстами и потоками без каких-либо проблем. 

2.Использование AtomicReference или FreezableAtomicReference не приводит к утечкам памяти.

3.При работе с глобальными константами не нужно теперь использовать SharedImmutable.

4.При работе с Worker.execute producer больше не требует возвращать изолированный подграф объектов. 

Однако есть и нюансы:

Читать далее
1

Information

Rating
2,013-th
Location
Барнаул, Алтайский край, Россия
Works in
Date of birth
Registered
Activity

Specialization

Разработчик мобильных приложений, Архитектор программного обеспечения
Ведущий