Pull to refresh
4
0
Павел Беловол @belovol

Android разработчик в КION by MTS Digital

Send message

Декларативный подход в организации gradle зависимостей в Android-проектах

Level of difficultyEasy
Reading time5 min
Views1.9K

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

Читать далее
Total votes 5: ↑2 and ↓3+3
Comments10

Отключаем Jetifier и ускоряем сборку: опыт Тинькофф.Бизнес

Reading time4 min
Views6.9K

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

Уже пять лет наша команда разрабатывает Тинькофф.Бизнес – мобильный банк для юридических лиц. За это время наше Android-приложение успело набрать целых 200 модулей и 400 тысяч строк компилируемого кода.

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

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments1

Интересные приёмы, взятые из исходников Android

Level of difficultyEasy
Reading time8 min
Views12K
Интересные приёмы, взятые из исходников Android

В процессе чтения исходников Android SDK я замечал интересные механики и приёмы написания кода, какие-то из них до сих пор используются при создании новых библиотек, другие, напротив, заменены более логичными и понятными конструкциями. В этой статье я постараюсь перечислить всё, что смог заметить сам при изучении исходников Android'а. Сразу отмечу: эта статья не претендует на полноту материала и возможно вы нашли даже больше интересных моментов при чтении кода, ладно, погнали, короче!
Читать дальше
Total votes 31: ↑28 and ↓3+43
Comments3

Как сделать свой сервер мобильному разработчику, если он никогда такого не делал?

Level of difficultyMedium
Reading time12 min
Views9.8K

У меня ушел один месяц на создание своего сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.

Читать далее
Total votes 10: ↑7 and ↓3+7
Comments3

Измеряя sequences

Level of difficultyHard
Reading time38 min
Views6K

Измерение sequences в сравнении с обычными коллекциями. Смотрим под капот и разбираемся, как работают sequences и за счет чего мы получаем выигрыш в производительности.

Много кода и теории...

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments12

Как перестать бояться Proguard и начать жить

Reading time12 min
Views61K


Здравствуйте, я Android разработчик и я больше не боюсь ProGuard...


Обычно, об этой утилите вспоминают, когда сталкиваются с dalvik dex-limit issue или с требованием улучшить безопасность приложения. К сожалению, правильно настроить Proguard удается далеко не с первого раза. Я часто наблюдал, как многие, сломав проект, выключают Proguard и включают поддержку Mulditex и каждый раз немножечко грустил по этому поводу, ведь Proguard помогает как сократить размер приложения, так и повысить его производительность.


В итоге, я решил написать статью, в которую смогу поместить всю полезную информацию, которую я узнал за несколько лет работы с Proguard и которая могла бы помочь как совсем новичкам, так и тем, кто уже что-то знает.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments12

Как настроить Charles

Reading time5 min
Views80K

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments9

«Наташ, вставай!» или как научить GitHub присылать вам SMS

Level of difficultyMedium
Reading time8 min
Views3.8K

Привет, Хабр! В одной из прошлых своих статей я уже писал про API для работы с SMS-сообщениями от компании МТТ (входит в экосистему МТС). На этом можно было бы и остановиться, если бы не одно «но». Не так давно вышла в свет платформа МТС Exolve за авторством всё той же компании МТТ. Методы для работы с SMS у MTT Telecom API и MTC Exolve очень похожи, за исключением одного: чтобы «покрутить в руках» MTC Exolve, не нужно заключать договор.

Cегодня мы  «поймаем двух зайцев»: посмотрим, как работает GitHub Actions и научимся отправлять SMS с помощью МТС Exolve.

Читать далее
Total votes 19: ↑18 and ↓1+26
Comments2

Как мы запустили рекомендацию похожих фильмов в онлайн-кинотеатре

Reading time6 min
Views2.5K

Привет, Хабр! На связи Леша Мельников, Коля Ундалов и Паша Беловол. Леша — менеджер по продукту в KION (онлайн-кинотеатр в экосистеме МТС), отвечает за все, что связано с работой искусственного интеллекта и виртуальных ассистентов. Коля — ML-разработчик, а Паша — Android-разработчик. В этой статье мы расскажем, как, зачем и с каким эффектом мы запустили функционал «Похожие» в онлайн-кинотеатре KION.

Читать далее
Total votes 15: ↑12 and ↓3+13
Comments6

CustomView Android. Кольцевая диаграмма для отображения статистики

Level of difficultyMedium
Reading time25 min
Views9.8K

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

Самый верный и действенный способ постичь Дзен в реализации CustomView является работа над диаграммами и графиками. Чем сложнее будет задуманная диаграмма, тем больше этапов будет пройдено в её реализации: начиная от собственного расчета размеров, заканчивая многоступенчатой анимацией при отрисовке. Каждый из вас способен сделать что-то своё, но порог входа для этого, я соглашусь, достаточно высокий. Поэтому необходим некоторый пример, который поможет разобраться в этом темном лихолесье неизвестности. 

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

Вперед за CustomView!
Total votes 10: ↑9 and ↓1+9
Comments8

«Извините, но вам придется закодировать Щелкунчика»

Reading time4 min
Views3.7K

Так и не попав на всем известный балет в декабре, мы решили организовать своего Щелкунчика. Речь не о балете, а о первом в мире IT‑контесте по переводу сказки на Python, Go, C#, JavaScript и Java, задача которого звучала так: «Извините, но вам придется закодировать Щелкунчика».

Меня зовут Вадим Рощин, я деврел МТС Digital, и сейчас я расскажу о том, как это было.

Читать далее
Total votes 24: ↑20 and ↓4+18
Comments2

Как устроена бесшовная авторизация в онлайн-кинотеатре

Reading time5 min
Views3.3K

Привет, Хабр! На связи Ваня Семенков из МТС Digital и команда продукта МТС ID, мы отвечаем за продуктовую вертикаль авторизации в онлайн‑кинотеатре KION. Наша цель — увеличивать% авторизованных пользователей, поэтому в этой статье мы расскажем, какие способы авторизации применяются в KION, разберем их плюсы и минусы, заглянем «под капот». А еще поговорим о том, как бесшовная авторизация повлияла на воронку C0.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

Как сделать анимацию с помощью MotionLayout

Reading time14 min
Views6.5K

Привет, Хабр! Меня зовут Павел Беловол, я Android-разработчик на проекте онлайн-кинотеатра KION в МТС Digital. Это новая часть сериала о внедрении фичи Autoplay в KION, в которой я расскажу про свой личный опыт работы с MotionLayout на примере продакшн-задачи в KION. Из этой статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments13

ML-задача на 30 минут: гадаем по cookie

Reading time5 min
Views19K

«Я тебя по IP вычислю!» – помните такую угрозу из интернета времен нулевых годов? Мы в Big Data МТС решили выяснить, можно ли составить хотя бы приблизительное представление о человеке, обладая информацией о сайтах, которые он посещает. Мы сгенерировали полусинтетические данные, чтобы понять, насколько смелыми можно быть в этих ваших интернетах.

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

Читать далее
Total votes 33: ↑33 and ↓0+33
Comments14

Двадцать лет с юзкейсами: выжимаем практический опыт

Reading time12 min
Views83K
У нас в QIWI регулярно проводятся встречи аналитиков и проектных менеджеров, где мы рассказываем друг другу о своем опыте, делимся знаниями и полезными приемами. На одной из таких встреч я рассказал о методике Use Case и о своем опыте работы с ней. Рассказ был встречен на ура, и я решил поделиться им с хабрасообществом.



Я буду использовать разговорное «юзкейс» вместо неуклюжей кальки «прецедент использования». Надеюсь, уважаемая публика меня за это простит.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments2

Принцип единственной ответственности: глубокое погружение

Reading time17 min
Views50K
Про принцип единственной ответственности (The Single Responsibility Principle, SRP) уже было написано множество статей. В большинстве из них даётся лишь поверхностное его описание мало чем отличающееся от информации в википедии. А те немногие статьи что затрагивают ключевые особенности SRP делают это вскользь, не акцентируя на них внимания и не развивая тему дальше.

Эта статья — попытка дать более глубокое объяснение принципу единственной ответственности, а также показать как его всё таки можно применять на практике. Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 26: ↑24 and ↓2+34
Comments106

Java собеседование. Коллекции

Reading time10 min
Views898K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments306

Как правильно внедрять изменения, которые никто не хочет

Reading time10 min
Views17K

Типичная история тимлида. Съездил на конференцию, узнал новые вдохновляющие идеи и загорелся ими. Начал сходу внедрять то, что (по его мнению) точно сработает, и получил закономерный отпор команды: «Зачем нам вообще что-то менять?»

«Но доклад был классный! Это точно рабочий инструмент!» — думает тимлид. Он начинает поддавливать, иногда уговорами, иногда — другими способами. Команда — «в штыки». Лид получает странный опыт: пришел с благой целью, а получил негатив. Теперь он больше ничего не хочет менять, даже когда это на самом деле нужно. Команда тоже пострадала: после неумелого change-менеджмента она не готова к изменениям вообще. Знакомая история?

И что же, теперь обходить конференции и заразительные идеи стороной? Не внедрять изменения в рабочие процессы команды, пока коллеги сами их не захотят? Совсем нет. Сейчас я ведущий разработчик в облачной платформе Selectel, возглавляю команду Compute. На собственном примере расскажу, как правильно внедрять новые идеи в работу команды и можно ли собрать целый «фреймворк» для улучшений.
Читать дальше →
Total votes 56: ↑49 and ↓7+55
Comments34

Если мошенники украли деньги с банковской карты — не спешите в полицию

Reading time8 min
Views184K

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

Народ жалуется на Tinkoff, Альфа-банк и прочие банки, на операторов сотовой связи. Портал banki.ru ввёл драконовские правила, что у него решения судов без оценок в народном рейтинге, на форуме нельзя написать, что itsoft выиграл дело у ВТБ — это реклама itsoft видите ли, то есть видно надо писать одна компания, но не скажем какая выиграла суд у ВТБ.

В статье “Банки не хотят внедрять многофакторную авторизацию и покончить с мошенничеством” есть простые рецепты, которые бы исключили случаи мошенничества хотя бы для тех, кто не разговаривает с мошенниками и не сообщает им коды. Народ хочет аппаратные токены, а банки не дают. 

К написанию данной статьи меня ещё подвиг наш конфликт с хостером Leaseweb. 7 лет мы платили одну цену в месяц за аренду серверов там. А потом она внезапно выросла в 70 раз. Leaseweb решил, что за действия злоумышленников деньги надо списать с нашей корпоративной карты.

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

Читать далее
Total votes 162: ↑142 and ↓20+159
Comments210
1

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Lead
Git
Kotlin
Android SDK
Android Studio