Как стать автором
Обновить
56
0
Анна Жаркова @anioutka

Lead mobile developer в Usetech, Kotlin GDE

Отправить сообщение

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

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

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


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

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

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

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


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

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

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

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

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

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

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



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

Помимо обработки событий из самого виджета в таких приложениях также важно синхронизировать состояние между таргетами без потерь и задержек. Данные (наши тудушки и их состояние) мы сохраняем локально. Для этого используем инструмент для хранения данных SwiftData. Данный фреймворк также был представлен на WWDC 2023, и при его использовании в разных таргетах можно встретить тоже много подводных камней.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+10
Комментарии4

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

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

Всем доброго времени суток! С вами Анна Жаркова, ведущий разработчик компании 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.

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

GraphQL в мобильной разработке

Время на прочтение8 мин
Количество просмотров5.4K
Всем привет! С вами Анна Жаркова, ведущий разработчик компании Usetech. Сегодня стартует моя серия статей, посвященная работе с технологией GraphQL при разработке мобильных приложений. Если вы интересуетесь применением необычных технологий в мобильной разработке, давно подумывали совместить Android/iOS с GraphQL или попробовать что-то для себя новое, то эти статьи окажутся для вас полезными.

Всего будет три статьи в которых я покажу, как сделать простое мобильное приложение под Android и iOS, имитирующее простую социальную сеть с лентой постов, которые можно не только писать, но и редактировать и удалять, а также лайкать. Еще мы добавим регистрацию и авторизацию.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

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

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

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании 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 коде.

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

Как мы сделали миграцию пользовательских данных с нативного приложения на Flutter

Время на прочтение6 мин
Количество просмотров4.5K
Всем привет! Меня зовут Дмитрий Андриянов, я Flutter-разработчик в Surf.

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


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

Model-Widget-WidgetModel, или какой архитектурой пользуется Flutter-команда в Surf

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

Привет, меня зовут Артём. Я руководитель Flutter-разработки в Surf и со-ведущий FlutterDev подкаста.


Flutter-отделу в Surf уже больше года. За это время мы сделали несколько проектов: от маленьких служебных, до полноценных е-коммерс и банкинга. Как минимум, многие из вас уже могли видеть приложение аптеки «Ригла». В статье я расскажу про недавно вышедший пакет mwwm — архитектуру, на которой построены все наши проекты.


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

Архитектурный шаблон MVI в Kotlin Multiplatform, часть 2

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


Это вторая из трёх статей о применении архитектурного шаблона MVI в Kotlin Multiplatform. В первой статье мы вспомнили, что такое MVI, и применили его для написания общего для iOS и Android кода. Мы ввели простые абстракции, такие как Store и View, а также некоторые вспомогательные классы и использовали их для создания общего модуля.

Задача этого модуля — загружать ссылки на изображения из Сети и связывать бизнес-логику с пользовательским интерфейсом, представленным в виде Kotlin-интерфейса, который должен быть реализован нативно на каждой платформе. Именно этим мы и займёмся в этой статье.

Мы будем реализовывать специфичные для платформы части общего модуля и интегрировать их в iOS- и Android-приложения. Как и прежде, я предполагаю, что читатель уже имеет базовые знания о Kotlin Multiplatform, поэтому не буду рассказывать о конфигурациях проектов и других вещах, не связанных с MVI в Kotlin Multiplatform.

Обновлённый пример проекта доступен на нашем GitHub.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии9

SwiftUI 2020. Что изменилось?

Время на прочтение5 мин
Количество просмотров11K
Приветствую вас, жители Хабра и все интересующиеся разработкой под IOS. На связи Анна Жаркова, Senior iOS/Android разработчик компании Usetech
Сегодня мы поговорим о тех изменениях и новшествах, которые нам представляет Apple на WWDC 2020. А именно про доработанную и даже переработанную версию фреймворка SwiftUI.

Эта технология для декларативной разработки приложений была представлен в прошлом году на WWDC 2019. Если вы с ней еще не работали, то рекомендую заглянуть сюда

Итак. Apple и их инженеры внимательно весь этот год следили за обзорами, статьями, решениями и комментариями от разработчиков-энтузиастов. В конце видео «What's new in SwiftUI» они выражают благодарность всем неравнодушным за помощь.

Теперь SwiftUI позиционируется как полноценный инструмент для разработки под разные платформы (от watchOS до macOS):


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

STM32 и FreeRTOS. 2. Семафорим по-черному

Время на прочтение7 мин
Количество просмотров67K
Часть первая, про потоки

В реальной жизни часто случается так, что некоторые события происходят с разной переодичностью (а могут и вообще не происходить). Скажем, заказ сока в «Макдональдсе», нажатие кнопки пользователем или заказ лыж в прокате. А наш могучий микроконтроллер должен все это обрабатывать. Но как это сделать наиболее удобно?

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии5

Как еще SETI думает искать внеземной разум

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

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

Перед тем как мы начнем, я так же хочу отметить, что все написанное ниже лишь является моими собственными мыслями, и ни в коем случае не являются попыткой навязать свое мнение остальным. И пусть тебя, %username%, не смущает подобный топик на хабре, ибо всем нам интересен космос и все мы наслышаны о SETI — помните лихие 2000е когда мы ставили себе скринсейвер, который что-то там считал, и тем самым мы как бы вносили свой маленький вклад в одно большое дело?
Читать дальше →
Всего голосов 74: ↑57 и ↓17+40
Комментарии62

Идея о книге с дополненной реальностью

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

Добрый день


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

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

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

Если у кого хватит знаний и желания объединить эти технологии в одну буду только за, дарю идею для умелых рук.

Считаю идеи должны принадлежать всем.
Всего голосов 82: ↑62 и ↓20+42
Комментарии48

LitRes.ru пытается «отжать» бизнес у авторов приложения «Читатель»

Время на прочтение3 мин
Количество просмотров97K
imageПо следам новости "Google заблокировал приложение Moon+ Reader по жалобе LitRes".

Оказывается незадолго до описанных событий Литрес «влетел на бабки» и теперь усиленно ищет способы финансово на ком-нибудь отыграться. Суд взыскал с «ЛитРес» 1 млн рублей в пользу «Этногенеза».

Moon+ Reader было не единственным приложением, которое оказалось заблокировано по жалобе со стороны LitRes. Также в патовой ситуации оказались создатели программ CoolReader и «Читатель». С «Читателем» ситуация приняла и вовсе неожиданный оборот и теперь скорее напоминает банальный рейдерский захват. Litres отказывается отзывать жалобу на приложение, пока авторы его не превратят приложение в витрину Литреса или не передадут свою речевую технологию.

Процитирую из первых уст:
Текст открытого письма Егора Рябошлыка
Всего голосов 276: ↑271 и ↓5+266
Комментарии307

LunarCraft или освоение недальних рубежей космоса Хабрасообществом

Время на прочтение5 мин
Количество просмотров6.7K
<банальность> Недавно на хабре была статья habrahabr.ru/post/167391 </банальность> о хаброинициативе в области освоения космоса. Я поддался призыву “Поэтому сейчас предлагаю устроить «мозговой штурм»” © и делюсь своими соображениями по этому поводу.

Начну с названия — LunarCraft: предполагается, что проект русский поэтому луна, а не moon или selena (так же привет Гуглу [1]), Craft отсылает нас к minecraf — каким образом,
читайте под катом
Всего голосов 15: ↑9 и ↓6+3
Комментарии10

Солнечные затмения с расстояния 36 тыс. км или почему мы об их космосе знаем больше чем о нашем

Время на прочтение5 мин
Количество просмотров173K
Я выбирал заголовок для этого текста из двух вариантов, но потом решил объединить. Многие уже привыкли, что я пишу о Curiosity или, в крайнем случае, о каком-нибудь достижении NASA. Сегодня я отойду от традиции, и поговорим о наболевшем родном — о русском исследовательском космосе. Нет, я не о том, что воруют и ничего не летает. Наоборот, кое-что летает, даже есть чем гордиться, хоть и не так много как хотелось бы. Я о чертовски бестолковой и зачастую провальной работе отделов по связям с общественностью нашей космической науки.
image
Читать дальше →
Всего голосов 397: ↑394 и ↓3+391
Комментарии95

Cуперкомпьютер за 1 млрд евро: симуляция мозга человека

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


Еврокомиссия одобрила финансирование самого крупного и амбициозного проекта по симуляции человеческого мозга. Проект Human Brain Project объединит усилия европейских учёных на 2013-2023 гг и предварительно оценивается в 1,19 млрд евро.
Читать дальше →
Всего голосов 138: ↑128 и ↓10+118
Комментарии240

Microsoft взяла на работу дизайнера, создавшего футуристический бренд

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


Дизайнер Эндрю Ким (Andrew Kim) наделал много шуму летом 2012 года, когда создал свой вариант брендинга для Microsoft. Бренд The Next Microsoft основан на научной фантастике, футуристическом развитии человеческого вида и освоении космоса.

Несколько дней назад Эндрю Ким написал в своём блоге, что после шести месяцев переговоров компания Microsoft взяла его на работу, в подразделение Xbox. Эндрю приступит к работе после окончания учёбы в университете, летом 2013 года.
Читать дальше →
Всего голосов 160: ↑129 и ↓31+98
Комментарии90

Искусственный разум – принципиальная схема

Время на прочтение22 мин
Количество просмотров37K
image

В одном из предыдущих постов я доказывал, что создать искусственный разум (ИР) невозможно (здесь). Не отказываясь от прежнего мнения, хочу тем не менее рассмотреть вопрос о принципах работы того, что невозможно создать. По какому пути пойти человечеству, чтобы обмануть пускай не природу, но хотя бы самого себя – посчитать, что проблема создания ИР благополучно разрешена? На мой взгляд, по этому.
Оговорюсь, что все высказываемое ниже:
а) МНЕНИЕ,
б) мнение ЧАСТНОЕ,
в) частное мнение ДИЛЕТАНТА (специалиста в иной области, вышедшего на проблему ИР в ходе решения своих узкопрофессиональных задач).

О заставке: из мозга высовываются, наряду с механическими приспособлениями, не половые члены носорога, как вы могли подумать, а глаза улитки. Они символизируют сенсоры, которыми обладает ИР.
Читать дальше →
Всего голосов 34: ↑17 и ↓170
Комментарии63
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Барнаул, Алтайский край, Россия
Работает в
Дата рождения
Зарегистрирована
Активность

Специализация

Mobile Application Developer, Software Architect
Lead