Обновить

Мобильная разработка

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

Android-приложение «Контакты»: работает — не трогай

У многих полей контакта есть типы. Например, у номеров телефонов или адресов электронной почты по умолчанию есть типы «рабочий» и «домашний». Аналитики сказали, что нужно реализовать дополнительные типы и дать пользователю возможность создавать свои. Звучит легко, но на деле оказалось совсем непросто.

Чтобы заменить стандартные типы полей, нужно добавить новую базу данных с доступными типами полей, а также реализовать отображение и возможность выбора поля. Для этого пришлось во многом переписать код редактирования полей контакта, где и без этого логика была непростой. Теперь стало совсем сложно: при добавлении или обновлении поля в contentProvider нужно указывать тип поля, так что мы начали указывать «custom».

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

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

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

Пришлось опять добавлять костыль: в отдельной корутине ожидать инициализации БД и только потом начинать рисовать экран...

Дмитрий Бражник, старший инженер-программист в департаменте разработки мобильных приложений YADRO, рассказал в статье, как его команда пыталась допилить стандартное AOSP-приложение «Контакты» и к чему они в итоге пришли.

Теги:
Всего голосов 3: ↑2 и ↓1+2
Комментарии0

Решаю строительные задачи с помощью питона на телефоне

Привет хабр!
Я учусь в строительном сфере Проектировщиком здании.
Во время уроков я пользуюсь pydroid3 и задачи похожую на математику решаю питоном.
Из библиотек я пользуюсь основном Jupyter notebook и sympy::{solve,simplify} и math::{degrees,radians,sin,cos,hypos}. А pandas, mathplot, ipycanvas для красивого оформления.
На моём телефоне собралось много решённых и не решённых задач и я решил попробовать публиковать на гидхаб.
Хочу представить вам мою публикацию гидхаб Kurut‑eater/TaskWithHelpPL
Каталог «Osnovy_i_fundamenty» является моей первой публикацией
На данный момент я сделал задачу «Выбор оборудования для погружения несущих элементов». Дальнейшая будущие идей будут зависеть от общества.

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии7

Зачем разработчику учиться работать с неопределенностью, развивать мультиперспективность и прокачивать социальную стелс-механику?
Об этом (и о том, что вообще эти слова значат) рассказал наш Senior Software Developer Леша Приньков, который параллельно ведёт академическую карьеру в математике. В общем, с абстракциями, сложными системами и парадоксами неопределённости он на «ты». Бери на заметку неклишированные и реально актуальные софт-скилы 2025 года. 

Скил №1: Эмоциональный интеллект 
в виртуальной реальности
Включает в себя:
1. Умение считывать невербальные сигналы — тон, мимику, паузы (даже
в Zoom). Так ты лучше поймешь эмоциональное состояние собеседника.

2. Способность подстраиваться под эмоциональный контекст. Это делает общение более плавным и понятным.

Скил №2: Этикет
в онлайн-взаимодействии
Включает в себя:
1. Уважение к собеседникам.
Без пассивной агрессии 
и колкостей — просто вежливо и по делу.

2. Ясные и короткие сообщения. Чтобы никто не запутался и всё понял с первого раза.

3. Уважение к чужим границам. Не пересылаешь личную инфу без разрешения и не навязываешься.

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

Скил №4. Работа с неопределенностью и использование вероятностного подхода в принятии решений
Включает в себя:
1. Умение учитывать разные сценарии и просчитывать риски. Так ты принимаешь более взвешенные решения.

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

Скил №5. Адаптивность
и гибкость
Включает в себя:
1. Умение быстро перестраиваться под новые задачи, условия и инструменты.
2. Способность учиться на ходу и не застревать в старых подходах.

А еще этот скил помогает сохранять продуктивность и мотивацию в условиях неопределенности.

Скил №6. Мультиперспективность
Это про умение посмотреть на задачу глазами не только разработчика.
За счет этого скила можно: 
— принимать более эффективные решения, ведь ты видишь больше вариантов решения.
— видеть риски, которые незаметны при узком взгляде, и снижать их.
— генерить нестандартные идеи, комбинируя подходы из разных областей.

Скил №7. Управление уровнем детализации
Это про способность поддерживать нужный уровень абстракции. Где надо — зарываешься в детали, где не надо — держишь фокус на главном.

Этот скил помогает лучше понимать общую картину
и объяснять суть задачи, не запутывая ни себя, ни других. В итоге ты работаешь продуктивнее и тратишь меньше времени и сил. 

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Всем привет! Меня зовут Ульяна, я ведущий разработчик мобильных приложений и писатель. Занимаюсь всем от регистрации девайсов до код-ревью и CI. В отпуске я планировала поменьше сидеть за компом, но как бы не так! Расскажу по порядку.

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

Чего я никак не ожидала — что поеду в кузове по размытой бетонке. С правой стороны нависала гора и местами осыпалась на дорогу, слева был обрыв. Было похоже на американские горки, только к сидениям ты совершенно не пристёгнут. Из-за переполняющих меня эмоций стала делать видео, сначала в настроении «если я не вернусь — завещаю…», а потом: «как же страшно и красиво!»

На площадку приехали до заката, и вскоре айфон сообщил, что память заполнена. Я отправила видео подругам, удалила на телефоне и стала снимать новые. Успела проделать так несколько итераций, наверное, раза три. Потом наступили серые сумерки и появилась первая звёздочка. А через пять минут на площадке включились фонари и прожекторы — и все звёзды исчезли.

А мой телефон сел, и после зарядки застрял на иконке яблока. Оказалось, айфон позволяет занять даже и ту память, которая необходима для старта операционки! А я научилась чинить и это.

Теги:
Всего голосов 3: ↑3 и ↓0+7
Комментарии0
12 ...
8