Size: a a a

Android Live 🤖

2018 December 06
Android Live 🤖
Не ожидал такого ажиотажа на эту тему! С удовольствием даю возможность задать свои #вопросы в форме. Ссылка на него тут.

Обязательно все прочту и постараюсь на все ответить на канале!
источник
2018 December 12
Android Live 🤖
Про удаленную работу
#ответы #опрос

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

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

Обсудить тему удаленной работы можно в комментариях.

Нравится ли формат ответов-вопросов?
источник
2018 December 15
Android Live 🤖
​​Отладка в Android Studio
#разработка #начинающим

Недавно обратились с просьбой рассказать о небольшой статье, которая описывает базовые возможности отладки Android Studio.

Опрос на канале показал, что большинство участников считает себя junior-разработчиками, поэтому статья будет полезна в большей степени им.

В статье узнаете:
• что такое отладка;
• как остановить и запустить отладку;
• что такое точки остановки;
• приостановка, остановка и заглушка точек остановки;
• информация о навигации по коду во время отладки.

Также теперь буду помечать подобные советы и статьи специальным хэштегом для удобного поиска.
источник
2018 December 18
Android Live 🤖
Решил сделать на канале небольшой #конкурс, связанный с разработкой.

В этот четверг, 20 декабря в 18:00, будет пост с задачей. Для участия в конкурсе необходимо решить задачу в течении 24 часов с момента размещения поста. Она небольшая, писать огромное приложение не нужно.

Так как канал посвящен Android разработке, то решение можно отправить на Kotlin или на Java. Это две категории, которые оцениваются отдельно.

Партнер конкурса — канал @yegor256news. С каналом автора и блогом я познакомился во время одной из конференций. Блог будет полезен всем разработчикам. Автор делится огромным количеством статей о чистом написании кода, о культуре разработки, о тестировании.

Призкнига Егора Бугаенко «Elegant Objects». Уверен, что о правильном написании кода стоит читать каждому разработчику, вне зависимости от уровня и языка программирования. Книга будет полезна всем. Соответственно, будет разыграно две книги: для лучшего решения на Java и на Kotlin.

Поэтому, следите за каналом и не упустите возможность выиграть полезную вещь.
источник
2018 December 19
Android Live 🤖
​​Фриланс из палатки
#разработка #статьи

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

Его день начинался около 5-6 часов утра, на работу он делал 2-3 перерыва в день по 2-3 часа каждый. Остальное время — передвижение на велосипеде, наслаждение природой и отдых.

Интересна сама подготовка: необходимо было обеспечить непрерывный источник электричества и интернет.

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

Ссылка на статью тут.
А вы бы смогли так работать?
источник
2018 December 20
Android Live 🤖
Задача про Рождественскую распродажу
#конкурс

Для участия в конкурсе, необходимо решить следующую задачу:

Вы хотите купить несколько игр на свой телефон, чтобы поиграть в предстоящие новогодние праздники.

Обычно все игры продаются по одной и той же цене в R рублях. Однако, впереди праздники и Google Play хочет провести Рождественскую распродажу! Поэтому, вы сможете купить игры по более низкой цене.

Условия распродажи такие. Первая игра продается по цене R. Но каждая следующая покупка обойдется на D рублей дешевле, чем предыдущая. Вы будете покупать игры, пока цена игры не станет равна минимальным M-рублей. После этого, каждая игра будет стоить M-рублей.
В вашем кошельке находится N-рублей, поэтому выходить за рамки этой суммы вы не можете. Сколько игры вы сможете купить на распродаже?

Входные данные
Строка с данными R, D, M и N.

Выходные данные
Количество игр, которое можно купить.

Ограничения
1 <= M <= R <=100
1 <= D <=100
1 <= N <= 10^4

Пример входных данных
20 3 6 85

Пример выходных данных
7

Объяснение
Первоначальная цена игры R=20. Каждая следующая покупка обходится на D=3 рубля дешевле, чем предыдущая. Минимальная цена игры M=6. В кошельке у пользователя N=85.
20 + 17 + 14 + 11 + 8 + 6 + 6 = 82.
Количество игр = 7.

Шаблоны на языке Kotlin и Java.

Условия конкурса
1. Решения принимаются в течении 24 часов. Необходимо отправить только тело функции.
2. Отправлять можно только одно решение.
3. Можно исправлять отправленное решение неограниченное количество раз. Принятым будет считаться решение, отправленное последним.
4. Победителем будет являться самая короткая функция gamesCount().
5. В подсчете количества символов считается только тело функции. Например, в примере return 0; количество символов равняется 9. Это и определяет длину решения.
6. Переименовывать функцию нельзя, как и изменять входные параметры. В Kotlin убирать return также запрещается.
7. Требований к форматированию нет, важно рабочее решение. Можно убирать пробелы между переменными и писать код в одну строку, если это не нарушит работоспособность решения.
8. В случае одинаковых по длине решений в каждом из языков, победитель будет выбран рандомно, а запись в выбором победителя будет опубликована на канале.

О призе рассказывал раньше. Это книга Егора Бугаенко «Elegant Objects». Канал автора — @yegor256news.

Отправить решение нужно сюда. Всем удачи!
источник
2018 December 21
Android Live 🤖
Благодарю всех за участие в конкурсе! В скором времени будут объявлены результаты.
источник
2018 December 22
Android Live 🤖
Android ColorFilter Mode
#разработка 

На прошлой неделе столкнулся с задачей динамического создания кнопок разных цветов из кастомного drawable. 

Задача достаточно простая: нужно было создать кнопку, а дальше сделать setBackgroundResource() и выбрать необходимый файл. Дальше задать необходимый цвет при помощи метода setColorFilter

Однако, в моем случае, у каждой кнопки была обводка. То есть, в drawable задана <stroke>, а после применения фильтра она пропадала. Пришлось задаться вопросом и подробнее изучить тему Mode для ColorFilter. 

ColorFilter используется для нескольких целей. Например, им можно поменять Canvas, если вы создаете с нуля свою View. Или же для изменения цвета и рендеринга ImageView и Drawable, что используется в большинстве случаев.

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

Подробнее о том, как работают фильтры можно найти в этой статье. В моем случае помог Mode MULTIPLY, который не затронул обводку у кнопки.
источник
2018 December 24
Android Live 🤖
Результаты конкурса «Рождественская распродажа»
#конкурс

Итак, прошли выходные и я подвожу итоги конкурса. Всего прислано 72% решений на Java и 28% на Kotlin.

1) Java. Лучшие решения состоят из 47 символов. Таких решений было 3:

• return r>n?0:gamesCount(r-d>m?r-d:m,d,m,n-r)+1; — @smallcreep
• return n<m?0:gamesCount(r-d<m?m:r-d,d,m,n-r)+1; — @maxim_ivanov
• return n<r?0:r>m?1+gamesCount(r-d,d,m,n-r):n/m; — @warmouse

При помощи рандомайзера, победителем является @maxim_ivanov!

Отдельно хочу отметить решение автора @aIexmoran. Если предыдущие решения используют рекурсию, то решение автора нет. Это самое короткое решение без рекурсии — 48 символов.
• int i=0;while(m<=r){n-=r;r-=d;i++;}return i+n/m;

2) Kotlin. Тут было немного сложнее определить победителя.
В правилах я не указывал о том, что нельзя добавлять свои imports. С одной стороны, самым коротким было решение из 53 символов. Но также было решение из 58 символов, которое было похожим на короткое, но без импорта java.lang.Math.*. Принял решение, что было бы несправедливым не отметить автора второго решения. Поэтому, я считаю, что самыми короткими решениями на Kotlin — это решения из 58 символов. Под критерии подходят 2 решения:

• return if(n<r)0 else gamesCount(Math.max(r-d,m),d,m,n-r)+1  — @R1KUD0
• return if(r<=n)1+gamesCount(Math.max(r-d,m),d,m,n-r)else 0 — @Svyat

При помощи рандомайзера, победителем является @R1KUD0!

Ссылки на видео с использование рандомайзера тут и тут.

Напоминаю, что победители получат книги Егора Бугаенко «Elegant Objects»

Большое спасибо всем участникам конкурса! Мне очень понравился подобный формат, поэтому мы обязательно к нему вернемся.

Как вам подобный формат?
источник
2018 December 29
Android Live 🤖
Еще немного о конкурсе

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

Бдительный подписчик обнаружил, что решение победителя не проходит некоторые из тестов, которые я не использовал для проверки, а именно:
15 5 3 24
ожидается результат — 1, реальный результат — 2
37 6 10 36
ожидается результат — 0, реальный результат — 1

Решение с рекурсией также не проходит некоторые из тестов:
37 6 10 36
ожидается результат — 0, реальный результат — -3
24 8 5 24
ожидается результат — 1, реальный результат — -1

Поэтому, из опубликованных решений правильным являются два решения:
• return r>n?0:gamesCount(r-d>m?r-d:m,d,m,n-r)+1; — @smallcreep
• return n<r?0:r>m?1+gamesCount(r-d,d,m,n-r):n/m; — @warmouse

Победителем конкурса является @smallcreep
Ссылка на рандомайзер тут.

Первый конкурс на канале, в предстоящих конкурсах я обязательно буду писать больше тестов для выбора победителя.
источник
2018 December 31
Android Live 🤖
Друзья, сегодня последний день 2018 года.

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

Желаю вам интересных проектов, карьерного роста, поменьше легаси-кода… ну и помнить о том, что в жизни есть не только монитор со средой разработки😉.

С Новым, 2019 годом!
источник
2019 January 05
Android Live 🤖
​​Деньги для разработчика
#мысли #комментарии

Спрашивали ли вы себя, для чего работаете? Почему интересовались IT и выбрали эту сферу в качестве ремесла? 

Некоторые рассуждают так: находишься в теплом офисе, сидишь за монитором, жмёшь кнопки, что-то кодишь и получаешь при этом хорошие деньги. С подобным подходом вряд ли станешь толковым разработчиком. Но меня это заставило задуматься: а чем же являются деньги для разработчиков?

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

Но все же деньги важны. Люди часто меняют работу из-за того, что на новом месте предложили больше денег.При выборе нового места любой программист, когда набирается опыта, обращает внимание на зарплату.

И отсюда первый пункт. Деньги — это показатель роста. На мой взгляд, этот пункт больше психологический. К сожалению (или к счастью) нельзя точно определить границу между опытом и зарплатой, которую ты получаешь. Многое зависит от навыка «продажи себя» работодателю, компании и проекта. Однако, если ты видишь, что зарплата растет, то понимаешь, что становишься лучше.

Второй пункт: деньги — это показатель ответственности. С ростом зарплаты чаще всего растет и зона ответственности. Сначала ты junior-разработчик и не отвечаешь за проект. Через некоторое время получаешь опыт, больше отвечаешь за проект, а также видишь прибавку к зарплате. Ответственность также мотиватор работы. Однако помните: чаще работодатель сам не проявляет инициативу повышения ЗП. Проявляйте инициативу сами: спросите, что вам нужно делать, чтобы получать больше. Не шантажируйте и не давите на работодателя. Порой после подобного вопроса, начальство вспоминает, что вы ответственный и важный сотрудник, и вас нужно мотивировать большей суммой, чем вам платят сейчас. Больше информации о повышении ЗП стоит почитать тут.

В третьих, деньги — это ресурс. Тут все просто. Чем больше денег, тем больше тебе доступно. На мой взгляд, зарплата разработчика позволяет закрыть все базовые потребности: еда, жилье, одежда, здоровье. Когда ты не задумываешься об этих вещах, то появляется возможность развиваться и расти в какой-то другой сфере, больше узнавать мир и становиться лучше. Это возможно благодаря деньгами.

Если у вас совсем нет опыта, то не стоит гнаться за зарплатой. Вам нужно найти место, где сможете найти наставника и набраться опыта. Деньги придут чуть-чуть позже, будьте терпеливее.

А как вы считаете, чем является зарплата для разработчика?
Делитесь мнением в комментариях.
источник
2019 January 14
Android Live 🤖
​​1-1
#разработка #опрос #комментарии 

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

Вторая причина — это отсутствие роста. Человек упирается в потолок на текущем месте, нет задач-вызовов и сложных проектов. От этого становится скучно и он уходит.

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

Помочь предотвратить последнюю причину может практика 1-1.

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

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

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

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

Оставляйте свое мнение об этой технике в комментариях. 
А есть ли у вас в компании 1-1? 
источник
2019 January 22
Android Live 🤖
Android Quiz
#статьи #опрос

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

На глаза попалась небольшая статья-опрос, где предлагается ответить на 13 вопросов. Все вопросы связаны с Android и Kotlin. Интересный квиз, и я спешу поделиться им с вами. Займет это буквально 5 минут времени. Но уверен, что вы сможете узнать оттуда что-то новое для себя.

Сколько баллов удалось набрать?
источник
2019 January 23
Android Live 🤖
​​MotionLayout
#разработка

На прошедшем в 2018 году Google IO был представлен MotionLayout. Это новый класс, который помогает разработчикам управлять анимацией жестов. Является наследником ConstraintLayout, при этом переопределяя некоторые из его свойств.

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

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

На самом деле, с нетерпением жду появления инструмента для предпросмотра анимаций, который описывался на докладе Google IO.

Кстати, тут можно найти вводную информацию про layout и доклад на Google IO, а тут репозиторий с примерами.
источник
2019 January 28
Android Live 🤖
Layer-list и drawable
#разработка #статьи

Одним из частых кейсов в верстке является расположение одного TextView и ImageView: списки, боковое меню, заглушки. Думаю, что каждый делал подобные элементы.

Начинающие разработчики дейстуют так: делают LinearLayout, где располагают эти элементы с необходимой gravity. Однако опытные обращают внимание на сообщение от AndroidStudio: лучше сделать TextView и указать ему drawable в нужной позиции. Но как лучше сделать этот drawable?

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

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

Прочитать эксперимент можно тут, а здесь ссылка на приложение.
источник
2019 January 29
Android Live 🤖
Друзья ежегодно устраивают опрос о рынке мобильной разработки в России.

Скоро будет отчет, предлагаю и вам принять участие в опросе.👇
источник
Android Live 🤖
Запускаю ежегодный опрос известности команд мобильной разработки 🔥🔥🔥

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

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

Опрос: http://bit.ly/2RoSPjA
Прошлое исследование: http://bit.ly/2Uld2bO
источник
2019 February 06
Android Live 🤖
Что происходит при запуске Activity?
#разработка #статьи 

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

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

Ссылка на статью тут.
источник
2019 February 11
Android Live 🤖
​​Don't kill my app!
#разработка 

Сегодня в мире насчитывается огромное количество типов устройств на Android. И большинство производителей этих устройств не использует AOSP и допиливают чистый Android под себя. 

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

Но иногда изменения носят отрицательный характер, и хуже всего то, что эти их сложно заметить. Например, чтобы увеличить время работы телефона, производители добавляют некоторые режимы и приложения для экономии заряда. Они могут убивать ненужные, по их мнению, приложения из фона, отключать фоновые функции и т.д. Часто из-за подобных приложений smartphones превращаются в dumbphones, а страдают пользователи: приложения перестают работать так, как планировали разработчики. Ну и разработчки также не рады: сложно оптимизировать свои приложения под все «выходки» вендоров. 

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

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