Как стать автором
Обновить
3
0
Оленёв Кирилл @agent10

Senior Software Engineer at mail.ru

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

Лотерея Green Card DV-2022: россиян оставили за железным занавесом. Есть ли шанс получить визу?

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

До ежегодного розыгрыша лотереи, дающей возможность получить гринкарту (вид на жительство в США) остаются считанные часы. Однако, если многие победители предыдущей лотереи DV-2021 потеряли свои счастливые билеты из-за пандемии и президентской прокламации P.P. 10141, то в этом году победителям из России полностью отрезали возможность пройти собеседование на получение визы.

Read more
Всего голосов 52: ↑34 и ↓18 +16
Комментарии 120

Как реализован экран с карточками заявок в друзья и рекомендациями в приложении ВКонтакте

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

Всем привет! Меня зовут Денис Загуменнов, я из команды ленты и рекомендаций ВКонтакте. Мы занимаемся новостной лентой, стеной, разделом «Рекомендации», записями, комментариями, VK Donut, подкастами и социальным графом. То есть всем, что касается потребления контента и взаимодействия с ним.

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

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

Получаем результат правильно (Часть 1). Activity Result API

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

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

Наконец, в 2020 году Google представила решение старой проблемы — Activity Result API. Это мощный инструмент для обмена данными между активностями и запроса runtime permissions. 

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

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

Как устроена библиотека дизайн-системы Авито в Фигме

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

В Авито колоссальное количество интерфейсов и экранов — около 1000 на десктопе и в мобильных приложениях. Чтобы интерфейсы были консистентными и корректно работали, а создавать их получалось быстрее и проще, у нас есть дизайн-система.

На самом базовом уровне дизайн-систему понимают как набор компонентов и стилей. В нашу входят ещё гайдлайны для дизайнеров и спецификации для разработчиков. Актуальность нашей библиотеки в Фигме поддерживает команда дизайн-системы. Её пользователи — дизайнеры и разработчики. Расскажем, как библиотека устроена. 

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

Автоматизация тестирования мобильных приложений. Часть 1: проверки, модули и базовые действия

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

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

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

Влияние Kotlin data-классов на вес приложения

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


Kotlin имеет много классных особенностей: null safety, smart casts, интерполяция строк и другие. Но одной из самых любимых разработчиками, по моим наблюдениям, являются data-классы. Настолько любимой, что их часто используют даже там, где никакой функциональности data-класса не требуется.


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

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

Темы, стили и атрибуты

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

В Android существуют стили и темы которые позволяют структурировать разработку пользовательского интерфейса.

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

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

Vulkan. Руководство разработчика. Image views

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


Кто еще со мной не знаком, я технический переводчик из ижевской компании CGTribe, и я занимаюсь переводом руководства к Vulkan API (vulkan-tutorial.com).

В этой публикации представлен перевод главы Image views из раздела Drawing a triangle, подраздела Presentation.

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

Как заблокировать приложение с помощью runBlocking

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

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

И это не ошибка.
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 5

Автоматизация публикации приложения в Google Play при помощи Jenkins

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

Для этого нам понадобится

1) Действующий account Google Play Developer

2) Сервер Linux с предустановленным Docker, в моём случае это Ubuntu 16.04

3) Установленный Android SDK

4) Jenkins - в данном случае развернём его при помощи Docker

5) Gitea - Удобная служба для собственного Git-репозитория (это не обязательно можно использовать и GItHub) её мы подымем также на базе Docker контейнера

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

FizzBuzz по-сениорски

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

- Добрый день, я на интервью на позицию старшего разработчика.

- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.

Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно.

Читать далее
Всего голосов 383: ↑376 и ↓7 +369
Комментарии 306

Как я готовился к собеседованию в Google

Время на прочтение 9 мин
Количество просмотров 48K
Каждый инженер-программист стремится впечатлить людей своим техническим мастерством. Технологические гиганты этого мира — прекрасное место для работы технарей, которые могут предоставить услуги миллиардам пользователей. На моём недавнем собеседовании было несколько раундов, я получил предложения от Google и Amazon. В последние несколько лет онлайн-сообщество очень помогло мне в подготовке к собеседованиям. В этом посте я поделюсь всем о моём пути к собеседованию и верну вклад общества в моё обучение.


Приятного чтения!
Всего голосов 55: ↑50 и ↓5 +45
Комментарии 77

Всего лишь меняем модель эмулятора Android устройства

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

Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!

Поменять модель эмулятора
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 0

Работа с AIDL в Android

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

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

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

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

Android Bluetooth Low Energy (BLE) – готовим правильно, часть #3 (read/write)

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

Часть #1 (scanning)

Часть #2 (connecting/disconnecting)

Часть #3 (read/write), вы здесь

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

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

Запускаем свой RTMP сервер для стриминга

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


Иногда YouTube или Twitch не подходят как стриминговая платформа — скажем, если вы пилите портал с вебинарами или контентом 18+, нарушаете авторские права или хотите максимально отгородить свою трансляцию от остального интернета. У них есть много альтернатив как в виде сервисов (те же минусы, недостаток контроля и непредсказуемая политика), так и в виде self-hosted решений. Проблема опенсорсных стриминговых проектов в том, что все они начинаются с крохотной связки из пары технологий, а затем отчаянно пытаются вырасти в сервис, добавляя сложные веб-интерфейсы, чаты, библиотеки стримов и в конечном счёте отдаляясь от исходной цели: дать миру инструмент, который по понятному мануалу позволит запустить свой сервер трансляций. Что с ним будет дальше, в какие системы будет встроена эта картинка — это только ваше личное дело, а самописный аналог твича с лагающими и отваливающимися сервисами и периодически валящимся билдом не нужен никому, кроме его разработчиков. Поэтому в этой статье мы разберём минимальную цепочку действий для запуска своего RTMP-сервера с плеером.
Читать дальше →
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 14

Android Bluetooth Low Energy (BLE) — готовим правильно, часть #2 (connecting/disconnecting)

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

Подключение, отключение и обнаружение BLE сервисов.

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

Чаты на вебсокетах, когда на бэкенде WAMP. Теперь про Android

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

Мой коллега уже писал про наш опыт разработки чатов на вебсокетах для iOS, поэтому часть про особенности бэкенда с точки зрения клиента у нас общая. А вот реализация на Android, конечно, отличается. И ещё мне не приходилось, как в первой статье, искать библиотеку для поддержки старых версий операционной системы, потому что на Android каких-то глобальных изменений в сетевой части не было, всё работало и так.

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

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

Vulkan. Руководство разработчика. Устройства и очереди

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


Я переводчик из ижевской компании CG Tribe, и я продолжаю выкладывать перевод руководства к Vulkan API. Ссылка на источник — vulkan-tutorial.com.

В этой публикации представлен перевод последних двух глав раздела Drawing a triangle, подраздела Setup, которые называются Physical devices and queue families и Logical device and queues.

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

Варианты настройки iosMain sourceSet'а в Kotlin Multiplatform Mobile

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

При использовании Kotlin Multiplatform Mobile сталкиваешься с непривычной особенностью — iOS код рассматривается компилятором в нескольких вариантах: iosArm64 и iosX64, а также iosArm32 (для поддержки девайсов вышедших до iPhone 5s). При разработке под iOS на Swift про эти особенности не думаешь, так как это скрыто в header’ах системных библиотек условиями препроцессора. 

Для разработчика чаще всего и не должно быть необходимости учитывать архитектуру процессора, на котором будет запущено приложение (особенно если архитектуры одинаковой битности, как iosArm64 и iosX64). И код под обе архитектуры полностью одинаковый, поэтому проект настраивают под использование одного источника исходного кода — iosMain. Есть несколько вариантов объединения ios кода в одном sourceSet, каждый со своими плюсами и минусами.

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

Информация

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