Pull to refresh
6
Karma
0
Rating
Илья Павловский @TranE91

Android Software Engineer

  • Posts
  • Comments

Garbage Collection наглядно

Java
Translation
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Читать дальше →
Total votes 70: ↑68 and ↓2 +66
Views240.4K
Comments 49

Стоп рефакторинг. Kotlin. Android

Development of mobile applicationsDevelopment for AndroidKotlin
Tutorial

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

Я хочу рассказать про практики, которые не один раз уже выручали нас в проекте. Подборка примеров получилась не на пустом месте, все реальные примеры PullRequest-ов.
Все примеры НЕ выдуманные и тестировались на живых людях. В процессе сбора данных несколько людей пострадало.

Читать далее
Total votes 12: ↑11 and ↓1 +10
Views6.6K
Comments 6

Navigation Component-дзюцу, vol. 1 — BottomNavigationView

HeadHunter corporate blogDevelopment of mobile applicationsDevelopment for Android
🔥 Technotext 2020 🔥 Technotext 2020


Два года назад на Google I/O Android-разработчикам представили новое решение для навигации в приложениях — библиотеку Jetpack Navigation Component. Про маленькие приложения уже было сказано достаточно, а вот о том, с какими проблемами можно столкнуться при переводе большого приложения на Navigation Component, информации практически нет.


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

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views6.7K
Comments 11

Оптимизация сборок Android приложений: ProGuard, D8, R8. Тайны обфускации

Development for Android

Оптимизация сборки — вишенка на торте мобильного приложения. К счастью, существуют инструменты, проверенные временем и заслужившие доверие сообщества. К сожалению, ее не всегда воспринимают всерьез и не уделяют ей должного внимания. Почему в оптимизации должны быть заинтересованы все? Как выжать максимум из мобильного приложения? Как работают инструменты, которыми мы привыкли пользоваться в паре строк? И что нам продают под словом «обфускация»?

Читать далее
Total votes 17: ↑16 and ↓1 +15
Views5K
Comments 2

Разрушаем мифы о производительности Android

OTUS corporate blogProgrammingDevelopment for Android
Translation

За прошедшие годы возникло немало мифов о производительности Android. Хотя некоторые мифы могут показаться занятными или забавными, пойти по ложному следу при создании эффективных приложений для Android — полная противоположность веселья.

В этой статье мы собираемся проверить эти мифы на прочность в духе MythBusters (Разрушители легенд). Для развенчания мифов мы используем реальные примеры и инструменты, которые вы тоже можете использовать. Мы ориентируемся на превалирующие шаблоны использования: то, что вы, как разработчики, вероятнее всего, делаете в своем приложении. Но стоит озвучить одно предостережение: помните, что очень важно сначала производить измерения, прежде чем принимать решение об использовании той или иной практики по соображениям производительности. Тем не менее, давайте приступим к разрушению мифов!

Читать далее
Total votes 21: ↑18 and ↓3 +15
Views7.2K
Comments 5

Полнотекстовый поиск FTS3, FTS4 и FTS5 в Android

SimbirSoft corporate blogDevelopment for AndroidSQLiteKotlin
Полнотекстовый поиск необходим в приложениях для того, чтобы быстро находить совпадения в большом объеме данных. Такая возможность удобна, например, для поиска товаров, фильмов, рецептов, научных статей, а также фрагментов текста в электронных книгах. Хотя зачастую поиск реализуют на сервере, иногда бывает необходимо работать в оффлайне, повысить отзывчивость мобильного приложения, избежав задержек при взаимодействии с сервером. В таких случаях используют полнотекстовый поиск — Full-Text Search.

В этой статье рассмотрим особенности полнотекстового поиска в Android с использованием FTS3, FTS4 и FTS5. Статья будет наиболее полезна для читателей, знакомых с Android и SQLite.

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views2.3K
Comments 2

Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet

Dodo Engineering corporate blogDevelopment of mobile applicationsDevelopment for AndroidKotlinMobile applications design
Написано огромное количество документации и статей о важной визуальной составляющей приложений — анимации. Несмотря на это мы смогли вляпаться в проблемы столкнулись с загвоздками при её реализации.

Данная статья о проблеме и анализе вариантов её решения. Я не дам вам серебряную пулю против всех монстров, но покажу, как можно изучить конкретного, чтобы создать пулю специально для него. Разберу это на примере того, как мы подружили анимацию смены фрагментов с Bottom Sheet.


Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views7.5K
Comments 17

GitHub Flow

GitGitHub
Translation
Tutorial
Recovery mode

Увидев в очередной раз базворд GitFlow я психанул и решил перевести описание более простой и менее проблемной схемы работы с ветками под названием GitHub Flow. Именно её имеет смысл использовать по умолчанию, переходя к какой-то другой лишь в случае непреодолимых обстоятельств.


Создайте ветвь



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

Читать дальше →
Total votes 48: ↑32 and ↓16 +16
Views59K
Comments 22

Управление жестами: обработка конфликтов жестов. Часть 3

OTUS corporate blogDevelopment of mobile applicationsDevelopment for AndroidMobile applications design
Translation
Перевод статьи подготовлен в преддверии старта продвинутого и базового курсов по Android-разработке.




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

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

Что мы понимаем под конфликтами жестов? Давайте рассмотрим это на примере. Допустим, у нас есть музыкальный проигрыватель, который позволяет пользователю проматывать текущую песню, перетаскивая SeekBar.


Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views1.8K
Comments 0

Монорепозитории: пожалуйста, не надо (часть 2)

Version control systemsDevelopment ManagementBuild automation
Всем привет!

Итак, новая порция обещанного холивара про монорепозитории. В первой части мы обсуждали перевод статьи уважаемого инженера из Lyft (и ранее Twitter) о том, какие есть недостатки у монорепозиториев и почему они нивелируют почти все достоинства этого подхода. Лично я во многом согласен с доводами, приведенными в оригинальной статье. Но, как и обещал, чтобы поставить точку в этом обсуждении, я бы хотел озвучить еще несколько моментов, на мой взгляд даже более важных и более практических.
Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Views15.6K
Comments 100

Машинное обучение на Android

Open sourceData MiningAlgorithmsData visualizationArtificial Intelligence
Sandbox
Привет, Хабр! Представляю вашему внимаю перевод статьи из журнала APC.

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

Однако недавно в Google Play появилось новое бесплатное приложение под названием «DataLearner», с помощью которого можно добывать данные. Оно не требует внешних ресурсов и доступа с полномочиями суперпользователя.

Вычислительные ресурсы смартфонов


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

У компьютерного обучения есть свои уровни сложности. Если представить, что такая недавно появившаяся техника глубокого обучения, как свёрточная нейросеть (CNN) – это автомобиль с высокой удельной мощностью, то другие техники, например, дерево поиска решений и многие прочие «лесные» методы обучения – это горячие «хэтчбеки». Они показывают отличные результаты, быстры и легки даже при ограниченных вычислительных возможностях CPU.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views10.2K
Comments 4

Как происходит рендеринг экрана сообщений ВКонтакте

ВКонтакте corporate blogJUG Ru Group corporate blogDevelopment of mobile applicationsDevelopment for AndroidSocial networks and communities
Что делает ВКонтакте, чтобы уменьшить лаги отрисовки? Как отобразить очень большое сообщение и не убить UiThread? Как уменьшить задержки при скролле в RecyclerView?



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

Я программирую под Android уже почти десять лет, ранее занимался фрилансом для PHP/Node.js. Сейчас — старший Android-разработчик ВКонтакте.

Под катом — видео и расшифровка моего доклада с конференции Mobius 2019 Moscow.
Читать дальше →
Total votes 46: ↑45 and ↓1 +44
Views13.8K
Comments 16

Сборка Android-приложения. Задачка со звёздочкой

FunCorp corporate blogDevelopment of mobile applicationsDevelopment for AndroidBuild automationGradle


Привет, Хабр! Летом я выступал на Summer Droid Meetup с докладом про сборку Android-приложения. Видеоверсию можно найти здесь: habr.com/ru/company/funcorp/blog/462825. А для тех, кто больше любит читать, я как раз и написал эту статью.

Речь пойдёт о том, что же это такое — Android-приложение. Мы соберём разными способами Hello, world!: начнём с консоли и посмотрим, что вообще происходит под капотом систем сборки, потом вернёмся немного в прошлое, вспомним про Maven и изучим современные решения Bazel и Buck. И, наконец, всё это сравним.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views14.7K
Comments 16

Переключение языка в Android-приложении

red_mad_robot corporate blogDevelopment of mobile applicationsDevelopment for Android

Иллюстрация для статьи


Есть простой способ реализовать переключение языка в Single-Activity приложении. Стек экранов при этом подходе не сбрасывается, пользователь остается там, где переключил язык. Когда пользователь переходит на предыдущие экраны, они сразу отображаются переведенными. А результат локализации чисел, денежных сумм и процентов может удивить дизайнеров.

Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Views13.7K
Comments 9

Tasks и Back Stack в Android

Development for Android
Tutorial
Привет. Из названия темы вы могли заметить, что речь пойдет о том, как устроены Tasks и Back Stack в Android. Эта статья будет являться свободным переводом официального источника. Тема больше ориентирована на новичков, но я думаю, что и опытный разработчик сможет узнать что-то новое, т.к. тема специфична и не часто приходится кастомизировать поведение наших Activity.
Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Views68.7K
Comments 12

Классификация разработчиков по рангам боевых искусств

ProgrammingIT career
Translation

Как называют разработчиков


В своём блоге я взаимозаменяемо использую термины «программист», «кодер», «разработчик» и «инженер», чтобы избежать тавтологии. Тем не менее я считаю, что между этими словами и другими аналогичными есть некоторые различия.

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

Толкование значений


Представленные здесь определения не являются официальными. Я не знаю каких-то формальных определений или принятого стандарта. Тем не менее, у многих людей есть твёрдое мнение по этому вопросу. Мое понимание каждого термина основано на 30 годах опыта в индустрии программного обеспечения, но я абсолютно готов к тому, что другие не согласятся с моей интерпретацией.
Читать дальше →
Total votes 21: ↑9 and ↓12 -3
Views8K
Comments 13

Kotlin, puzzlers and 2 Kekses: Вы уверены, что знаете, как ведет себя Kotlin?

JUG Ru Group corporate blogProgrammingKotlin
Вначале была Java (ладно, не то чтобы в самом начале… но наша история начинается именно здесь), шло время, и спустя 20 с небольшим лет умные ребята из JetBrains спроектировали и зарелизили Kotlin, «более лучшую» Java, универсальный язык, понятный, мощный и прозрачный.

В свое время Андрей abreslav Бреслав говорил, что Kotlin разрабатывался как удобный и предсказуемый язык. Тогда же прозвучало мнение, что в этом языке вы не найдете паззлеров (коротких кусочков кода, результаты выполнения которых оказываются неожиданными, пугающими или разочаровывающими). Ну что же, Антон antonkeks Кекс поколдовал в IDEA и кое-что все-таки накопал, да еще на наглядных примерах рассказал о своих находках в паре с Филиппом Кексом. Смотрите сами:



Под катом — подборка таких паззлеров и развернутые комментарии к ним. В основе материала доклад Антона Кекса (Codeborne) и Филиппа Кекса (Creative mobile) на конференции Мобиус 2017 (Санкт-Петербург).
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Views12K
Comments 24

Ошибки, которые погубят проект любой сложности. Опыт менеджеров Redmadrobot

red_mad_robot corporate blogDevelopment of mobile applicationsMobile applications designProject managementPersonnel Management


Мы, электрические, запускаем проекты с 2008 года, и за 11 лет сформировали сильную команду робоменеджеров. Прокачивать железных помогают боевые задачи и одна из самых сложных — управлять проектом. Ситуации, при которых появляется необходимость взять на себя обязанности PM (project manager), бывают разные: в маркетинге — при создании сайта, в HR — при организации мероприятий. Мы вспомним десятки подобных случаев.

Мы подготовили список ошибок, которые допускают новоиспеченные руководители проектов и дополнили их своими рекомендациями. В статье два варианта рекомендаций: простые и для тех, кто хочет заморочиться — с референсами и ссылками на полезные ресурсы. Так что у вас не останется и шанса их повторить при надлежащем внимании. Надеемся, что это позволит сделать ваш проект проще, качественнее и внесет предсказуемость в процесс его создания.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views8K
Comments 7

ПШЕ AndroidStudio или как использовать VCS Tools по полной

Development of mobile applicationsDevelopment for Android
Tutorial

ПШЕ AndroidStudio или как использовать VCS Tools по полной


- Все хорошо, только перед влитием обязательно засквошь коммиты.
- Заскво...Что?

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


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


Я постараюсь не обращать внимания на банальные вещи: init VCS; new/rename/push branch; rebase/merge onto branch; setup remotes e.t.c. Я постараюсь обратить внимание на те элементы, которые по боязни своего незнания, я долгое время избегал(и жалею).

Читать дальше →
Total votes 28: ↑23 and ↓5 +18
Views9.7K
Comments 30

4 толковых канала на Youtube про технические собеседования

Personnel ManagementIT career
Смотрю разные каналы ребят, которые проходят/проводят интервью в крупных компаниях и рассказывают про это. На русском прям что-то крутое не попадалось, но вот личный топ каналов на английском:


Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views15.8K
Comments 1
1

Information

Rating
5,651-st
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity