Как стать автором
Обновить
31
-3
Долгополов Денис @DolgopolovDenis

Пользователь

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

Отменяем операции правильно на примере корутин

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

Всем привет! Меня зовут Павел, я Android-разработчик в Delivery Club. Моя команда разрабатывает функциональность доставки продуктов из магазинов. Я расскажу о подходе к написанию кода, подразумевающем, что любые долгие операции могут быть отменены. На примере корутин рассмотрим сферы применения такого подхода.

Читать далее
Всего голосов 21: ↑19 и ↓2+17
Комментарии7

Запустился бесплатный курс «Подготовка к алгоритмическому собеседованию» от Яндекс Практикума

Время на прочтение2 мин
Количество просмотров18K
Сервис онлайн-образования Яндекс Практикум запустил бесплатный курс «Подготовка к алгоритмическому собеседованию» для специалистов, которые планируют проходить алгоритмические собеседования или просто хотят познакомиться с понятием «алгоритмическая секция».

Курс будет полезен разработчикам независимо от уровня алгоритмической подготовки:

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



Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии24

Шпаргалка по коллекциям в Java

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

Сравним коллекции Java по следующим параметрам:

На чем основана — какая структура данных или коллекция используется под капотом.
Дубли — разрешены или нет в коллекции повторяющиеся значения.
Null — позволяет ли коллекция вставлять null.
Синхронизированность — все ли методы коллекции синхронизированы.
Потокобезопасность — безопасно ли использовать коллекцию в многопоточной среде.
Тип итератора — поведение итератора в многопоточной среде.

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

Погружаемся в работу со скроллом в Jetpack Compose

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

В этой статье я хочу поделиться опытом работы со скроллом в приложении, написанном на Jetpack Compose.

Какое-то время назад я решил, что надо попробовать Compose в деле и начал делать pet project приложение Хотелки, суть которого в записи своих желаний и возможности делиться списком желаний с помощью любого мессенджера.

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

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

Утихомиривание стиралки в деревянном доме

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

Предисловие #1: Поместите технаря в зону дискомфорта и вы удивитесь его изобретательности.

Предисловие #2: Эта история про последствия легаси, отсутствия предварительно

Читать далее
Всего голосов 25: ↑23 и ↓2+21
Комментарии80

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

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

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Всего голосов 435: ↑423 и ↓12+411
Комментарии300

О дебаге Kotlin-корутин

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

Привет, Хабр. Хочу поделиться своим решением одной из проблем использования корутин в Kotlin.

Корутины в Kotlin - одна из значимых фич языка, которая позволяет писать асинхронных код в синхронном стиле. Корутины прекрасны во всём, до тех пор пока не возникает необходимость их дебажить.

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

Как внедрить что-то своё в CoordinatorLayout и не умереть: путь Android-самурая

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

Привет! Меня зовут Андрей Шоколов, я Android-разработчик KODE.

К нам обратилась компания Forward Leasing с запросом разработать мобильное приложение по готовому дизайну. Прототип содержал дугу, которая по задумке должна была сжиматься в одну линию при скролле. За основу решили взять CoordinatorLayout: у нас уже был положительный опыт работы с ним на другом проекте. Ещё в нашей команде часто любили соревноваться, какой же Layout лучше — CoordinatorLayout или MotionLayout, и именно сейчас настало время узнать.

Сейчас я понимаю, что проблема была создана на ровном месте, — но это я выяснил только в процессе работы. В статье расскажу, с какими 7 сложностями CoordinatorLayout я столкнулся и как сделать за полчаса то, с чем я провозился сутки.

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

Памятка по жизненному циклу Android — часть I. Отдельные Activity

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

Android спроектирован так, чтобы использование приложения пользователем было максимально интуитивным. Чтобы обеспечить такое взаимодействие с пользователем, вы должны знать, как управлять жизненными циклами (ЖЦ) компонентов. Компонентом может быть Activity, Fragment, Service, класс Application и даже сам процесс приложения. Компонент имеет жизненный цикл, в течение которого он проходит через различные состояния. Всякий раз, когда происходит переход, система уведомляет вас об этом при помощи методов жизненного цикла. В этой статье мы разберем то, как устроен ЖЦ Activity на основе нескольких распространенных сценариев использования.

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

Автоматизация UI-тестирования в приложении Недвижимости на Android. Доклад Яндекса

Время на прочтение16 мин
Количество просмотров8.3K
Чем больше процессов тестирования автоматизированы, тем эффективнее релизный пайплайн и тем быстрее пользователи получают новые возможности в сервисе. Руководитель Android-разработки Яндекс.Недвижимости Александр Рогов вспомнил, как эволюционировало UI-тестирование в его команде, как разработчики пришли к идее автоматизации, почему использовали фреймворк Espresso, с какими проблемами столкнулись и что в итоге получили.

— Начать хотелось бы с небольшого исторического экскурса.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии1

Безопасность в мобильных приложениях

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

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

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

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

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

Как я посчитал миллионное число Фибоначчи

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

Все мы понимаем, что рекурсивное вычисление чисел Фибоначчи крайне неэффективно. Многим людям наверняка хотелось проверить, где пределы (не)эффективности, но не доходили руки, не хватало времени. Специально к старту нового потока курса Fullstack-разработчик на Python мы решили поделиться переводом статьи, автор которой шаг за шагом показывает возможности современного Python на примере разных подходов к вычислению чисел Фибоначчи. В статье вы найдёте проблемные значения n и сравнение производительности оптимального и неоптимального решений на графике.

Читать далее
Всего голосов 29: ↑15 и ↓14+1
Комментарии34

Android и привязка к жизненному циклу компонентов

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

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

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

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

Android + Redux = <3

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

Привет! Меня зовут Виталий Сулимов, я Android-разработчик в компании Wheely, и сегодня я бы хотел поговорить с вами об архитектуре мобильных приложений. А именно о том, как мы в компании применили Redux-архитектуру к двум нашим приложениям и что из этого вышло.

Дисклеймер #1

Я разрабатываю коммерческие Android-приложения с 2016-го года, начинал с классического в то время MVC, потом был MVP, библиотека Moxy от ребят из Arello Mobile, Clean Architecture и вот теперь Redux. Мое мнение — идеальной и единственно правильной архитектуры не существует. Любая из них будет набором компромиссов, начиная от особенностей интеграции с самой платформой и заканчивая простотой, расширяемостью и возможностью написания тестов. То, что отлично подходит под наши приложения, может оказаться абсолютно непригодным для вашего проекта, и наоборот. Цель данной статьи — показать еще один способ написания Android-приложений.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии16

Работа с библиотеками KTX

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

Когда вы используете Android Java API в Kotlin, к вам достаточно быстро приходит понимание, что вам не хватает некоторых фич Kotlin, которые делают написание кода намного проще и приятнее. Вместо того, чтобы писать свои собственные обертки и функции расширения для этих API, я рекомендую вам обратить внимание на набор библиотек Jetpack KTX. В настоящее время более 20 библиотек имеют собственную KTX версию, создающую прекрасные идиоматические версии Java API, начиная от API платформы Android до ViewModels, SQLite и даже Play Core. В этой статье мы рассмотрим некоторые из доступных нам API и заглянем под капот, чтобы увидеть, как они были созданы.

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

Зачем дизайнеру юрист или как не получить административный штраф за видео или стоковое фото на своем сайте

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

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

По закону использовать изображение человека можно только по его письменному согласию определенным в согласии образом (это написано в статье 152.1 Гражданского кодекса). Фотостудии, например, именно для этого берут у заказчиков согласие в договорах на использование фотографий в портфолио, потому, что без согласия - такое использование будет незаконным.

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

Через некоторое время присылает дизайнер новый макет с изображением уже другой девушки и сообщает, что фото скачано с сайта "стоковых" изображений, но они купили лицензию у сайта и теперь все законно. Очень хорошо, значит учатся. Прошу прислать договор с сайтом. Присылают - читаю, договор на одном листе, в котором никакой конкретики, только сумма за некую "стандартную" лицензию и ссылка на условия использования на отдельном сайте. Они их не читали. Не поленился прочитать условия на сайте, что входит в эту "стандартную" лицензию, читаю, так и есть - лицензия без ограничения для некоммерческого использования или, а для вот коммерческого только в наружной рекламе на аудиторию не более 500 000 человек. Перезваниваю дизайнеру, спрашиваю, где планируете использовать макет?

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

Reaction — обработка результатов методов в Kotlin

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии15

Native vs Flutter vs React Native: тестируем производительность в работе с UI-элементами

Время на прочтение5 мин
Количество просмотров23K
Давайте возьмём задачи разной сложности и сравним потребление памяти, FPS, загрузку CPU и GPU при работе мобильных приложений, созданных с помощью разных технологий.

Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии23

Edge-to-edge в Android: делаем правильно

Время на прочтение8 мин
Количество просмотров14K
Прошедший Google I/O 2019 принёс массу нашумевших новинок, многие из которых будут влиять на индустрию мобильной разработки в ближайшие годы. Не менее интересно было следить за зарождающимися трендами. Сначала в историю ушли механические клавиши управления, экраны смартфонов становились всё больше, а боковые рамки всё незаметнее. На смену экранным системным кнопкам пришли жесты, оставляя всё больше пространства для потребления контента. Приложения отображаются на всей видимой поверхности дисплея, от нижней до верхней рамки, не стесняя себя условными границами статус-бара и навигационной панели. Мы на пороге эры Edge-to-Edge.


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

Создание Android Live Wallpapers

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

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


Способов, которые никак не повлияют на выполнение других приложения, всего два: Widget или Live wallpaper. Я выбрал Live wallpaper, они же "живые обои", потому что они автоматически попадают на все страницы Home screen, и даже на Lock screen. Эта статья содержит практические рекомендации, как создавать "живые обои".

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность