Как стать автором
Поиск
Написать публикацию
Обновить
145.39

Разработка мобильных приложений *

Android, iOS, Windows Phone и прочие

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

Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

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

Привет, Хабр! Меня зовут Кирилл Колодяжный, я пишу код на С++ для систем хранения данных в YADRO. Помимо основной работы, интересуюсь машинным обучением и его возможностями, в том числе на «плюсах». Недавно мне стало интересно разобраться, как развернуть модель компьютерного зрения на мобильном устройстве с операционной системой Android.

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

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android. 

В первой части цикла мы:

• создадим проект в IDE Android Studio,

• реализуем сессию непрерывного захвата изображений камеры,

• преобразуем изображения в матрицу OpenCV, чтобы сделать дальнейшую работу удобной.

Читать далее

Tuist: добавляем генерацию проекта в текущее приложение

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

Знаете, что объединяет всех iOS-разработчиков, работающих над крупными проектами? Все мы когда-то сталкивались с этим старым знакомым — файлом .xcodeproj, который хранит в себе десятки, а то и сотни конфликтов после каждого merge. Мы тоже жили с этой проблемой много лет, пока не нашли решение.

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

Если у вас всё еще сохранился этот «реликт прошлого», то, возможно, наш опыт поможет вам наконец-то избавиться от него. Давайте разберемся, как это сделать.

Читать далее

Самые важные пакеты в экосистеме Dart и Flutter на Pub 2024

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

Компания Very Good Ventures провела исследование и опубликовала рейтинг самых важных пакетов в экосистеме Dart и Flutter. 

Рассказываем, какие пакеты вошли в топ — от независимых разработчиков, компаний и сообщества. 

Читать далее

Давайте писать красиво: второй сезон «Конкурса красоты кода»

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

Привет, Хабр. Хочу рассказать про «Конкурса красоты кода», который мы снова запускаем. Год назад мы его придумали, и идея народу зашла — больше 1000 человек прислали свои работы. Идея была в том, что есть несколько задач на выбор, и их надо решить в коде. Условий три: код должен работать, быть лаконичным и удобочитаемым.

Год пролетел, и мы решили повторить. Опять зовём всех поучаствовать — напиши такой код, которым будешь потом гордиться. Даже если ты не программист, победа может быть отличным стартом для карьеры (но, конечно, без гарантий).

Читать далее

Детство с синей изолентой, профессиональные трудности и путь к успеху девушки в IT: опыт Ани Жарковой

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

Эта статья — текстовый вариант выпуска подкаста Girls&Code. Поговорили с Аней о том, каково сейчас девушкам входить в IT, есть ли в индустрии сексизм и как вкатиться и стать заметнее.

— Расскажи, пожалуйста, как ты попала в IT и когда поняла, что это и есть твоё призвание? 

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

Когда я училась в школе, пришло время выбирать, куда поступать. Мне нравилось всё: и языки, и математика, и естественные науки.

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

Конечно, возможны погрешности. У меня, например, на одном из этапов тестирования было весьма приподнятое состояние, и результаты показали, что мне непременно нужно в театральный или на журналистику, то есть туда, где работа с публикой или на публику. Сейчас я регулярно закрываю этот гештальт с помощью публичных выступлений и преподавания. Но основная рекомендация была — идти в программисты, потому что у меня были и соответствующие интересы, и способности, включая концентрацию внимания и глубокое погружение в предмет. Что интересно, тогда считалось, что программисты минимально общаются с людьми во время работы. Однако, я не только разработчик уровня лид и занимающийся работой тим/техлида на разных проектах, я ещё и руководитель практики в Usetech. И с уверенностью могу утверждать, что без общения в профессии всё равно не обойтись. Неважно, менторишь ли ты младших специалистов, решаешь вопросы с руководством или командой, преподаешь свой предмет — уметь общаться нужно.

Читать далее

Как приготовить MVI в 2024

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

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube канала Android Insights

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

Читать далее

Мобильная разработка за неделю #559 (7 — 13 октября)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K
В моей новой подборке странное поведение UserDefaults и признание Google Play монополией, анимации космоса и авто-трекинг производительности, роль продуктового дизайнера, как перехватывают зашифрованный HTTP-трафик, новый рекорд приложений с подпиской и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

История одного модального окна или переходим с UIKit на SwiftUI. Часть 1

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

Всем добрый день. Хочу поделиться с вами проблемами постепенного внедрения SwiftUI в приложение, полностью написанное на UIKit, а так же моими вариантами их решения.

Читать далее

Как завалить проект и карьеру: 10+ вредных советов разработчику от менеджеров и сеньоров

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров23K
Недавно мы в «Лаборатории Касперского» провели онлайн-митап, где технические менеджеры и разработчики из команды Mobile Dev давали вредные советы про работу и карьеру. В частности, коллеги объясняли, что нужно сделать, чтобы поджечь релиз и затормозить свое развитие, и какие рабочие сигналы игнорировать, чтобы постоянно жить в хаосе.



В этом посте — краткая выжимка эфира в нескольких ключевых тезисах. Если же вам интересно послушать более развернутую дискуссию и аргументы участников, посмотрите запись митапа здесь или в виджете ниже.
Читать дальше →

Рецензия на книгу “Flutter и Dart. Сборник рецептов: Разработка полнофункциональных облачных приложений”

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

Новая рецензия будет о книге, помогающей разработчикам стать профи в довольно редкой пока профессии Flutter/Dart Developer. Книга«Flutter и Dart. Сборник рецептов» (Flutter and Dart Cookbook) авторства Ричарда Роуза (Richard Rose) — это практическое руководство по разработке мобильных приложений с использованием Flutter и Dart. Книга построена на аналогии со сборником кулинарных рецептов, помогая разработчикам решать конкретные задачи на мобильных платформах. Рассматривается создание UI, работа с API, управление состоянием приложений и многие другие аспекты разработки на Flutter и Dart.

Читать далее

Автотрекинг производительности Room Database

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров1.9K

Room (абстракция над SQLite) — одна из основных технологий, используемая почти во всех Android-приложениях для кэширования данных, оффлайновости, как cross-process хранилище данных и тому подобное.

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

Встает вопрос: “А не является ли сама работа с БД узким местом скорости старта приложения?

В Wildberries это особенно актуально, так как приложение построено на парадигме offline-first, когда почти вся информация кэшируется в БД, чтобы приложение работало даже с медленным интернетом или без него.

Для ответа на этот вопрос в статье разберем рантайм реализацию автоматического трекинга скорости выполнения запросов и транзакций в Room Database на основе Java Dynamic Proxy.

Читать далее

Чем роль продуктового дизайнера отличается от роли UX/UI-дизайнера. Показываю на практике

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

Часто сталкиваюсь с тем, что люди смешивают понятия продуктового дизайна и UX/UI-дизайна. Это делают и работодатели, и работники, и даже авторы образовательных программ. В этой статье я хочу рассказать, в чём же заключается роль дизайнера продукта и чем она отличается от роли дизайнера интерфейса. И как это проявляется на практике.

Читать далее

Как грузить данные во ViewModel?

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

Привет, Хабр!

Эта статья будет полезна для мобильных разработчиков, потому что в ней обсуждаются различные подходы к первоначальной загрузке данных во вьюмодели (Jetpack ViewModel) при ее использовании в проектах на Jetpack Compose (либо Compose Multiplatform).

Тема эта настолько холиварная, что один из самых влиятельных ютуберов в сфере Android-разработки Philip Lackner даже недавно посвятил ей отдельный как всегда очень качественный обзор. Эта статья - во многом ответ и дополнение к нему.

Итак, перейдем к сути.

Читать далее

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

Мобильная разработка за неделю #558 (30 сентября — 6 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K
В новом дайджесте ускорение запуска приложений и спойлер-эффект кна Swift, сборщик метрик Android-проекта и рисование звезд, замена Firebase, идеальный встраиваемый язык, приложение для заметок, которое не стремится сделать вас более продуктивным и многое другое. Подключайтесь!

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

Минцифры дало ответ, что действия ТБанк по получению согласия на обработку биометрии противоречат положениям закона

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

Минцифры дало ответ, что действия ТБанк по получению согласия на обработку биометрии НЕ соответствую (противоречат) положениям закона⁠⁠.

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

Читать далее

Как устроен сборщик метрик Android-проекта

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

Привет! Меня зовут Даниил, я Android-разработчик в команде VK ID SDK в VK. Наша команда создала легковесный SDK для авторизации через приложения экосистемы VK. Он состоит из кнопки One Tap для входа в один клик, кнопки входа в другую учётную запись и виджета для авторизации через Mail или Одноклассники.

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

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

Читать далее

Создание уведомлений на языке Kotlin

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

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

Читать далее

Koin: как сделать свой DI за 10 минут

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

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.

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

Дополнительная (но от того не менее важная) цель статьи — показать, что базовый механизм, на котором построен Koin, не такой уж и страшный :)

Тестовый текст

Мобильная разработка за неделю #557 (23 — 29 сентября)

Время на прочтение4 мин
Количество просмотров1.8K
В этом выпуске сетчатые градиенты и курощение виджетов, сломанная Android-разработка и инструментирование байт-кода Java во имя великого блага, единая биометрическая система во Flutter-приложении, портирование игр на Аврору, видеозвонки с Лили и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Превращаем планшет в терминал самообслуживания: осваиваем режим Kiosk в KNOX сервисах

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

Что такое киоск? Это ограничение набора приложений, которые доступны пользователю. Иными словами — замена лаунчера по умолчанию. Когда доступно только одно приложение, нельзя открыть браузер, другие приложения и даже залезть в настройки. Вообще ничего не доступно. Это как защита от нецелевого использования, так и от дурака…

Давайте сделаем киоск режим для нашего приложения на планшете. Через сервис KNOX Configure это делается быстро и без программирования. Ниже расскажу об этом на примере сервиса для бронирования переговорных.

Читать далее

Вклад авторов