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

Android *

Пишем под самую популярную мобильную ОС

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

Построчный разбор determine-basal.js в Android APS

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

Давайте разберем файл determine-basal.js в Android APS построчно.

Это основной файл для расчета количества необходимого инсулина.

Читать далее

Параметр определяющий в Android APS необходимое количество введения инсулина

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

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

Чтобы точно ответить на вопрос поисследуем основной файл - determine-basal.js

Читать далее

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

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

Сегодня в ленте было про GPU для дата-центров. Смешно было про "мейнфреймы в офисе для AI" - в статье, на которую ссылается автор, нет ничего про то, что искуственный интеллект может или будет работать на мейнфреймах. И опять про "аппаратное ускорение AI" на пользовательских устройствах. Автор, вы сами попробуйте добраться до этого аппаратного ускорения, и если найдете как - напишите статью. А то элементарная попытка использования GPU для работы TensorFlow Lite приводит только к потерянному времени, а ускорители NPU больше не поддерживаются именно там, где должны были бы. То есть за хайпом вокруг "аппаратного ускорения ИИ" производители создали новую категорию устройств, и теперь стандартно ноутбук будет стоить в 2 раза больше, чем было раньше. А по факту пользоваться этим ускорением будут только компании-производители, чтобы еще больше заработать денег на пользователях через рекламу, "правильные" модели и торговлю персональными данными.

А мы сегодня запустим TensorFlow Lite на устройствах разного класса и года выпуска и посмотрим, что там с производительностью и ускорением.

Читать далее

$1697 за выключатель кондиционера: DIY ремонт управляющего планшета

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

Примечание переводчика: Представьте себе ситуацию, когда ваша система кондиционирования воздуха полностью исправна, но перестает работать из-за отказа простого планшета, который служит обычным выключателем. Вам предлагают решить проблему, заменив всю систему за $1697. Эта история — не просто рассказ о возмутительной ценовой политике, а о том, как инженерный подход и немного упорства могут сэкономить вам кучу денег. В этой статье автор делится своим опытом DIY-ремонта, который позволил ему обойтись без ненужных затрат и вернуть контроль над системой кондиционирования.

Заставлять клиентов менять всю систему из-за поломки самого дешевого компонента — возможно, и выгодно, но меня это так взбесило, что я решил разобраться сам. Я понимаю, что мои действия могут оказаться сложными для большинства пользователей Advantage Air, но в ходе моего исследования я выяснил, что причина несовместимости современных планшетов с более старыми системами управления кроется только в программном обеспечении. Если бы они просто добавили в свои приложения функцию выбора "системы", это решило бы проблему для всех, а их кастомный POE-разъем все равно бы заставлял использовать их оборудование.

Читать далее

Mapping объектов с помощью MapStruct

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

В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса.

В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.

Библиотека очень гибка в настройке. И позволяет минимизировать написание шаблонного кода.

Вот пример того, как реализовать gradle зависимости в вашем проекте.

Читать далее

Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?

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

Всем привет! В этом материале я поделюсь с вами практическим опытом по оптимизации своего мобильного приложения на React Native. Я расскажу как я ускорил свое приложение в 3 раза.

Я разрабатываю свое мобильное приложение BookDesk для хранения прочитанных книг. Предыдущие серии: 123

Читать далее

Как переход на AGP&Gradle 8.* изменил взгляд на работу с производительностью сборки

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

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

Меня зовут Богдан Мащенко. Я Android-разработчик в платформенной команде Одноклассников. В этой статье я расскажу о нашем опыте перехода на AGP (Android Gradle Plugin) и Gradle версий 8.*: что стало причиной перехода, как преодолевали трудности, и что мы смогли получить в результате.

Читать далее

Автообновление через GitHub releases с помощью Hilt и Retrofit в Android

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

Как сделать автоматическое обновление непосредственно через приложение или как отказаться от маркетов приложений, части из которых нет на многих устройствах, а другие не подходят по определенному ряду причин!?

Читать далее

Kotlin Coroutines. От А до Я

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

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go

Понимание прогноза глюкозы AndroidAPS

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

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

Читать далее

Из истории ОС к дню Linux

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

В 1991 год произошли сразу два важных события, сыгравших огромную роль в развитии информационных технологий: 17 мая – день рождения Интернета, а 25 августа – день рождения Linux (один из четырёх).

Когда-то давно под каждый компьютер разрабатывались свои системы, пока не стало ясно - нужно делать операционную систему, менее зависимую от железа. В 1960-х появилась ОС UNIX, а в 1980-х берут начало Windows и UNIX-подобная система от Apple.

Сегодня предлагаем окунуться в историю операционных систем. А бонусом обсудим, почему Doom – это ОС. 

Читать далее

Web-версия кулинарного android-приложения SystemCook

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

Сразу выдам ссылки на скачку того, о чем пойдет речь, чтобы ничего не потерялось и никто не теребил меня, что и где искать/качать (бесплатное и безрекламное android-приложение):

Скачать с Google Play

Прямая ссылка (если скачка с гугл-плей недоступна)

Ссылка вконтакте на видеообзор SystemCook v14.0 (если у вас проблемы с youtube)

Ранее про SystemCook я уже рассказывал на хабре в двух предыдущих статьях тут и тут. Знаю, что много хабровчан пробовало старые версии приложения в процессе разработки, т.к. веду статистику и "мёртвых" аккаунтов у меня в базе полным-полно (кстати, если кто потерял пароль - пишите на мыло, напомню, только скажете, на какой email регистрировались). Сейчас я подытожу, что в итоге у меня вышло, расскажу свои дальнейшие планы и буду ждать от вас фидбека в комментариях.

Прогресс за три года разработки, с июня 2021:

Читать далее

Выносите ViewModel из Compose функций

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

В нашу жизнь андроид разработчиков уже прочно вошел фреймворк Compose. И при создании composable функций возникает соблазн добавить в качестве параметра viewModel. А уже в самой compose функции подписываться на состояния, которые находятся внутри viewModel. Я хочу рассказать, почему так делать не стоит, а передавать в качестве параметров простые классы.

Читать далее

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

Почему мы решили перейти с JUnit4 на JUnit5

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

Меня зовут Александр Чекунков, я — Android‑разработчик в СБЕРе. Занимаюсь разработкой CSI‑опросов в мобильном приложении «СберБанк Онлайн». Я несу ответственность за функциональность, которую используют бизнес‑команды для оценки удовлетворённости клиентов.

Не так давно, в нашем проекте мы приняли решение перейти с JUnit4 на JUnit5. Эта статья поможет разобраться в причинах выбора JUnit5 в качестве целевого решения для написания unit‑тестов. Я постараюсь ответить на ключевые вопросы: что делает JUnit5 предпочтительным выбором для современных проектов, и какие конкретные улучшения и нововведения он предлагает?

Читать далее

Мечтают ли Андроиды о нейропроцессорных модулях? Перенос модели TensorFlow Lite в мобильное приложение

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

Несмотря на то, что искусственный интеллект – наиболее хайповая тема в современных ИТ, и учитывая тот факт, что предыдущая мега-история с Internet of Things и Edge Computing до сих пор не забылась, я удивился, что отсутствуют внятные обучалки типа «Hello world» по добавлению machine learning в мобильные приложения на Android. Ну они конечно есть, только совсем не начального уровня. Кроме того, в них предлагается использовать чужие модели для распознавания кошек от собак и рукописных букв в текст итд. Но вот чтобы взять регрессию и с ней поработать – нет (или я не нашел). И в книгах не нашел. Если есть – поделитесь. Ну а пока я буду добавлять свою модель в приложение и параллельно писать этот текст.

История моего приложения есть в публикациях 1, 2, 3. Если коротко, это программа RuLearn для запоминания лексики в иностранных языках или в любой другой области, которая требует механического заучивания. Ее эффективность определяется «кривой забывания» Эббингауза, но как выясняется, интервалы для повторения хорошо было бы адаптировать под сложность изучаемого материала. То есть обучающийся учит новые слова, а приложение учится на его ошибках и подстраивает алгоритмы повторения оптимальным образом. Напрашивается машинное обучение в обучении человека.

Современные ARM-процессоры в мобильных телефонах содержат NPU для работы с нейросетями. Возможно, до сих пор это наименее используемая часть аппаратного обеспечения в вашем мобильнике. Поэтому никакая клиент-серверная архитектура в данном случае не нужна, в финале нашей разработки машинное обучение будет идти на конечном устройстве (бонус - никто с серверной стороны не сможет посмеяться над ошибками пользователя). Но на промежуточном этапе придется использовать модель, созданную на десктопе. Сегодня этим и займемся.

Читать далее

Мобильная разработка за неделю #506 (12 — 18 августа)

Время на прочтение4 мин
Количество просмотров2K
В новом дайджесте закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое. Подключайтесь!

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

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

Key-Value Хранилище на Стероидах

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

Как абстрагироваться от Key-Value хранилища и забыть про бойлерплейт внутри репозиториев с помощью Kotlin делегатов

Читать далее

Передача данных между фрагментом и BottomSheetDialogFragment с использованием Dagger и Navigation Component

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

Передача данных между фрагментом и BottomSheetDialogFragment может быть эффективно организована с использованием Dagger и Navigation Component, избегая использования передачи данных чрез конструктор или интерфейс, а также SharedViewModel и Hilt. Данный подход позволяет сосредоточиться на интеграции зависимостей и управлении состоянием через стандартные инструменты.

Читать далее

Машинное обучение в обучении человека. Развитие проекта RuLearn

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

Уже больше года я занимаюсь проектом RuLearn. Это довольно большое мобильное приложение на ~10000 строчек кода, которое реализует метод интервальных повторений, об истории проекта можно прочитать в моих предыдущих публикациях 1 и 2. Проект получился удачным, и даже побывал в числе победителей школьного московского конкурса "Инженеры будущего". Школьного, потому автор проекта - школьник :)

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

Как я провел летние каникулы

Вредные советы, как приходить с вопросами к техлиду

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

Привет! Меня зовут Абакар, я работаю главным техническим лидером в Альфа-Банке. Ко мне довольно часто приходят разработчики с вопросами, и я решил собрать свой топ-4 вредных советов о том, как не надо приходить с вопросами.

Важный дисклеймер: это вредные советы, и так делать не нужно!

Читать далее

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