RxJava from-to
#разработка #статьи
В последнее время часто сталкивался с задачей перехода из различных классов Rx в другие. Приходилось каждый раз вводить в поисковик запросы типа «Observable to Completable» или «Observable to Single».
В своих поисках нашел таблицу, которая в разы упрощает поиск необходимого оператора. Спешу поделиться ей с вами.
Кстати, это часть презентации Джейка Уортона о RxJava 2, когда она еще не была в релизе. Необычно просмотреть слайды о ней, когда уже применял ее на практике
#разработка #статьи
В последнее время часто сталкивался с задачей перехода из различных классов Rx в другие. Приходилось каждый раз вводить в поисковик запросы типа «Observable to Completable» или «Observable to Single».
В своих поисках нашел таблицу, которая в разы упрощает поиск необходимого оператора. Спешу поделиться ей с вами.
Кстати, это часть презентации Джейка Уортона о RxJava 2, когда она еще не была в релизе. Необычно просмотреть слайды о ней, когда уже применял ее на практике
Kotlin под капотом
#статьи #разработка
Сегодня попалась статья о просмотре декомпилированного в Java байткода Kotlin. Прочитал с начала до конца.
Думаю, что она будет интересна большинству разработчиков, как новичкам, так и опытным.
Порой чтение байткода помогает понимать, как какие-то части языка влияют на производительность и что из себя представляет какой-либо элемент языка.
#статьи #разработка
Сегодня попалась статья о просмотре декомпилированного в Java байткода Kotlin. Прочитал с начала до конца.
Думаю, что она будет интересна большинству разработчиков, как новичкам, так и опытным.
Порой чтение байткода помогает понимать, как какие-то части языка влияют на производительность и что из себя представляет какой-либо элемент языка.
Playing APK Golf
#статьи #разработка
Вы когда-нибудь задавались вопросом, насколько можно сжать размер APK?
Попалась статья, где автор задался целью максимально уменьшить размер apk «Hello World». Первоначально размер файла был 1.5mb. После определенных действий размер стал 1757 байт. Не слабая оптимизация, верно?
К сожалению, сжать apk файл обычного приложения не так просто, да и врядли получится сжать его в 3-5 раз. Но убрать пару лишних мегабайт реально. Вот несколько советов, которые помогут в этом.
1) Удалите неискользуемые ресурсы. Сделать это достаточно просто. Стоит запустить в Android Studio
2) Проанализируйте итоговый apk. Для этого надо воспользоваться командой
3) Переведите png в webp.
4) Удалите неиспользуемые языки. Я уже упоминал этот пункт. В этом посте. Лично я был удивлен, как много могут весить строковые ресурсы.
5) Примените App Bundle. Также это уменьшит размер файла приложения для пользователя. Упоминал об этом тут.
6) Удалите неиспользуемые библиотеки. Обязательно стоит время от времени анализировать текущий список зависимостей в проекте. Некоторые разработчики ради одного класса тянут целую зависимость. Еще часто после рефакторинга библиотека вообще не используется в проекте, но при этом остается в зависимостях. Также много «веса» добавляют нативные библиотеки. Анализируйте и их.
Может быть, вы знаете еще способы уменьшения размеров apk? Буду рад почитать их в комментариях.
#статьи #разработка
Вы когда-нибудь задавались вопросом, насколько можно сжать размер APK?
Попалась статья, где автор задался целью максимально уменьшить размер apk «Hello World». Первоначально размер файла был 1.5mb. После определенных действий размер стал 1757 байт. Не слабая оптимизация, верно?
К сожалению, сжать apk файл обычного приложения не так просто, да и врядли получится сжать его в 3-5 раз. Но убрать пару лишних мегабайт реально. Вот несколько советов, которые помогут в этом.
1) Удалите неискользуемые ресурсы. Сделать это достаточно просто. Стоит запустить в Android Studio
Refactor -> Remove unused resources. После этого обязательно проверьте, что не удалилось чего-то лишнего. Хотя бы запустите приложение и проверьте, что оно запускается.2) Проанализируйте итоговый apk. Для этого надо воспользоваться командой
Build -> Analyze APK. Посмотрите, какая категория имеет наибольший размер. Чаще всего этой категорией будет — ресурсы. 3) Переведите png в webp.
4) Удалите неиспользуемые языки. Я уже упоминал этот пункт. В этом посте. Лично я был удивлен, как много могут весить строковые ресурсы.
5) Примените App Bundle. Также это уменьшит размер файла приложения для пользователя. Упоминал об этом тут.
6) Удалите неиспользуемые библиотеки. Обязательно стоит время от времени анализировать текущий список зависимостей в проекте. Некоторые разработчики ради одного класса тянут целую зависимость. Еще часто после рефакторинга библиотека вообще не используется в проекте, но при этом остается в зависимостях. Также много «веса» добавляют нативные библиотеки. Анализируйте и их.
Может быть, вы знаете еще способы уменьшения размеров apk? Буду рад почитать их в комментариях.
Миграция на Kotlin
#статьи #разработка #опрос
Сегодня уже огромное количество проектов, которые написаны на Kotlin. Уже не раз упоминал на канале о том, что новый проект стоит начинать только на Kotlin.
Однако как быть с текущими проектами? На деле решиться перейти на Kotlin не просто. Ведь для бизнеса чаще без разницы, как вы пишите проект: на каком языке, какая архитектура, какие подходы вы используете. Основная задача — создание «фич» вовремя.
Но что можно сказать о разработчиках? Уверен, что большинство желает пробовать новые технологии, языки программирования, библиотеки. Однако очень дорого испытывать это на рабочем приложении. Ведь если что-то пойдет не так, то исправить это будет не просто из-за недостатка опыта в конкретной сфере.
Так бывает и с переходом на Kotlin. Одной из негативных мыслей, которая может появиться, является недостаточное знание языка. Не всегда просто писать те вещи, которые ты долгое время писал на Java, а теперь должен чуть по-другому писать на Kotlin.
Наткнулся на полезную статью, где автор описывает этапы перехода на Kotlin. Он рассматривает некоторые типичные шаблоны в Android-разработке и описывает их переход на Kotlin. Мне кажется, что подобная статья полезна всем, кто переписывает свой проект на Kotlin.
А на каком языке программирования вы пишете бОльшую часть времени?
#статьи #разработка #опрос
Сегодня уже огромное количество проектов, которые написаны на Kotlin. Уже не раз упоминал на канале о том, что новый проект стоит начинать только на Kotlin.
Однако как быть с текущими проектами? На деле решиться перейти на Kotlin не просто. Ведь для бизнеса чаще без разницы, как вы пишите проект: на каком языке, какая архитектура, какие подходы вы используете. Основная задача — создание «фич» вовремя.
Но что можно сказать о разработчиках? Уверен, что большинство желает пробовать новые технологии, языки программирования, библиотеки. Однако очень дорого испытывать это на рабочем приложении. Ведь если что-то пойдет не так, то исправить это будет не просто из-за недостатка опыта в конкретной сфере.
Так бывает и с переходом на Kotlin. Одной из негативных мыслей, которая может появиться, является недостаточное знание языка. Не всегда просто писать те вещи, которые ты долгое время писал на Java, а теперь должен чуть по-другому писать на Kotlin.
Наткнулся на полезную статью, где автор описывает этапы перехода на Kotlin. Он рассматривает некоторые типичные шаблоны в Android-разработке и описывает их переход на Kotlin. Мне кажется, что подобная статья полезна всем, кто переписывает свой проект на Kotlin.
А на каком языке программирования вы пишете бОльшую часть времени?
Droidcon NYC 2018
#разработка #статьи #конференции
Я часто на канале описываю различные конференции, связанные с мобильной разработкой. Считаю, что если ты взял с конференции хотя бы одну идею и применил ее, то это уже была полезная конференция. Ну а в личном посещении главным плюсом является общение с коллегами из других компаний. Ведь доклады посмотреть можно и онлайн чуть позже, но задать свои вопросы, возможно, уже не получится.
Сегодня хочу поделиться с вами плейлистом с конференции droidcon, которая проходила в Нью-Йорке. Кстати, не так часто организаторы конференции выкладывают доклады в публичный доступ, особенно так быстро. Глаза разбегаются от огромного количества полезного материала. Вот некоторые из тем: Flutter, MotionLayout, разное применение Kotlin, архитектура, безопасность.
Для себя отметил Flutter. Возможно, наконец-то дойдут руки до того, чтобы попробовать написать на нем простое приложение. Ну и вы выбирайте и изучайте понравившуюся тему.
#разработка #статьи #конференции
Я часто на канале описываю различные конференции, связанные с мобильной разработкой. Считаю, что если ты взял с конференции хотя бы одну идею и применил ее, то это уже была полезная конференция. Ну а в личном посещении главным плюсом является общение с коллегами из других компаний. Ведь доклады посмотреть можно и онлайн чуть позже, но задать свои вопросы, возможно, уже не получится.
Сегодня хочу поделиться с вами плейлистом с конференции droidcon, которая проходила в Нью-Йорке. Кстати, не так часто организаторы конференции выкладывают доклады в публичный доступ, особенно так быстро. Глаза разбегаются от огромного количества полезного материала. Вот некоторые из тем: Flutter, MotionLayout, разное применение Kotlin, архитектура, безопасность.
Для себя отметил Flutter. Возможно, наконец-то дойдут руки до того, чтобы попробовать написать на нем простое приложение. Ну и вы выбирайте и изучайте понравившуюся тему.
AI для решения проблем с кожей
#статьи #мысли
Недавно прочитал статью о достаточно необычном применении искусственного интеллекта. В ней говорится о нескольких приложениях для борьбы с проблемами кожи на лице.
На старте необходимо ответить на несколько вопросов, связанных со с проблемами кожи, как кожа реагирует на средства для ухода, что употребляет пользователь из еды.
Но помимо этого, пользователь должен загрузить селфи. Приложение проанализирует полученную фотографию при помощи искусственного интеллекта и предложит комплекс мер для ухода. Также представляется возможность делать снимки время от времени и следить за своим прогрессом.
Успех подобных приложений в том, что они решают проблему конкретного пользователя. Существует огромное количество ресурсов, связанных с медициной, где любой пользователь может узнать нужную информацию. Однако, персонализация — это то, что отличило это приложение. Здорово, что сегодня AI помогает делать сервисы более полезными при помощи персонализации.
#статьи #мысли
Недавно прочитал статью о достаточно необычном применении искусственного интеллекта. В ней говорится о нескольких приложениях для борьбы с проблемами кожи на лице.
На старте необходимо ответить на несколько вопросов, связанных со с проблемами кожи, как кожа реагирует на средства для ухода, что употребляет пользователь из еды.
Но помимо этого, пользователь должен загрузить селфи. Приложение проанализирует полученную фотографию при помощи искусственного интеллекта и предложит комплекс мер для ухода. Также представляется возможность делать снимки время от времени и следить за своим прогрессом.
Успех подобных приложений в том, что они решают проблему конкретного пользователя. Существует огромное количество ресурсов, связанных с медициной, где любой пользователь может узнать нужную информацию. Однако, персонализация — это то, что отличило это приложение. Здорово, что сегодня AI помогает делать сервисы более полезными при помощи персонализации.
Conference call между эмуляторами
#разработка
Большинство разработчиков знает о возможности звонка в эмуляторе Android. Сделать это просто: нажмите на меню эмулятора -> Phone -> Call Device.
Для чего это нужно? Например, если вы хотите протестировать поведение своего приложения при входящем вызове. Конечно, подобная функция не создает настоящий звонок. Тем не менее помогает отсеять большинство багов, связанных с паузой приложения и его корректным поведением при входящем звонке.
Однако о еще одной интересной фиче эмуляторов узнал совсем недавно. Можно звонить с одного эмулятора на другой. Для этого необходимо набрать в качестве телефона идентификатор эмулятора, который написан в заголовке окна эмулятора: имя-эмулятора:адрес. Получаем входящий вызов, который можно скомбинировать в conference-call, если позвоним еще и при помощи меню.
Подобная фича здорово помогает, если ваше приложение напрямую связано со звонками.
#разработка
Большинство разработчиков знает о возможности звонка в эмуляторе Android. Сделать это просто: нажмите на меню эмулятора -> Phone -> Call Device.
Для чего это нужно? Например, если вы хотите протестировать поведение своего приложения при входящем вызове. Конечно, подобная функция не создает настоящий звонок. Тем не менее помогает отсеять большинство багов, связанных с паузой приложения и его корректным поведением при входящем звонке.
Однако о еще одной интересной фиче эмуляторов узнал совсем недавно. Можно звонить с одного эмулятора на другой. Для этого необходимо набрать в качестве телефона идентификатор эмулятора, который написан в заголовке окна эмулятора: имя-эмулятора:адрес. Получаем входящий вызов, который можно скомбинировать в conference-call, если позвоним еще и при помощи меню.
Подобная фича здорово помогает, если ваше приложение напрямую связано со звонками.
Android P: Priority Buckets
#разработка #статьи
В последней версии Android P был анонсирован Priority Buckets: обновление для управления расходом батарей, где система может приоритезировать ресурсы, основываясь на том, как часто и как давно использовалось приложение.
Выглядит интересно и правильно. Например, если имеется приложение, которое пользователь запускает редко, то при попытке выполнить фоновую операцию приоритет в ресурсах отдается текущему приложению и его операциям.
Поэтому, теперь приложение попадает в одну из групп:
• active — приложение, которое сейчас запущено пользователем. Интересно то, что если приложение не имеет launcher activity, то оно никогда не попадет в эту группу.
• working set — приложение, которое не запущено, но используется часто в течении дня. Например, наши любимые соц.сети.
• frequent — приложение, которое не запущено, но используется иногда в течении недели. Возможно, приложение для тренировок или такси.
• rare — приложение, которое редко используется на устройстве. Например, специальное приложение, которое вы использовали только в отпуске.
• never — приложение, которое никогда не запускалось.
Для разработчиков, есть некоторые факторы, которые стоит учитывать, особенно, когда дело касается работы в фоне. В статье приведена таблица ограничений, которые накладываются на приложения, находящиеся в определенных Buckets. Поэтому, если вашему приложению важна работа в фоне, то обязательно проверьте, как оно ведет себя на последнем Android.
#разработка #статьи
В последней версии Android P был анонсирован Priority Buckets: обновление для управления расходом батарей, где система может приоритезировать ресурсы, основываясь на том, как часто и как давно использовалось приложение.
Выглядит интересно и правильно. Например, если имеется приложение, которое пользователь запускает редко, то при попытке выполнить фоновую операцию приоритет в ресурсах отдается текущему приложению и его операциям.
Поэтому, теперь приложение попадает в одну из групп:
• active — приложение, которое сейчас запущено пользователем. Интересно то, что если приложение не имеет launcher activity, то оно никогда не попадет в эту группу.
• working set — приложение, которое не запущено, но используется часто в течении дня. Например, наши любимые соц.сети.
• frequent — приложение, которое не запущено, но используется иногда в течении недели. Возможно, приложение для тренировок или такси.
• rare — приложение, которое редко используется на устройстве. Например, специальное приложение, которое вы использовали только в отпуске.
• never — приложение, которое никогда не запускалось.
Для разработчиков, есть некоторые факторы, которые стоит учитывать, особенно, когда дело касается работы в фоне. В статье приведена таблица ограничений, которые накладываются на приложения, находящиеся в определенных Buckets. Поэтому, если вашему приложению важна работа в фоне, то обязательно проверьте, как оно ведет себя на последнем Android.
Друзья, на данном канале я никогда раньше не публиковал вакансий, но сегодня хочу попросить у вас помощи в поиске… серверного разработчика к нам в команду. Наша команда растет, задач становится больше, поэтому крайне необходим мотивированный и опытный разработчик.
Уверен, что среди вас есть много крутых спецов в серверной части. Возможно, среди них есть люди, которые хотели бы:
• работать удаленно. У нас нет привязки ни к месту, ни ко времени работы;
• работать в международной команде. На данный момент наша команда из США, Индии и России;
• каждый день прокачивать свой английский. Кроме постоянного общения с командой, можно воспользоваться курсами английского, которые оплачивает компания.
Требования:
• уверенные знания NodeJS, Express и MongoDB;
• знания React;
• опыт развертки серверов в Google Cloud (App Engine и Compute Engine);
• знание разговорного английского языка.
Если нужны подробности, то пишите мне. Расскажу все о бонусах, о ЗП и о компании.
Уверен, что среди вас есть много крутых спецов в серверной части. Возможно, среди них есть люди, которые хотели бы:
• работать удаленно. У нас нет привязки ни к месту, ни ко времени работы;
• работать в международной команде. На данный момент наша команда из США, Индии и России;
• каждый день прокачивать свой английский. Кроме постоянного общения с командой, можно воспользоваться курсами английского, которые оплачивает компания.
Требования:
• уверенные знания NodeJS, Express и MongoDB;
• знания React;
• опыт развертки серверов в Google Cloud (App Engine и Compute Engine);
• знание разговорного английского языка.
Если нужны подробности, то пишите мне. Расскажу все о бонусах, о ЗП и о компании.
Производительность ConstraintLayout
#разработка #статьи
Попалась любопытная статья о производительности ConstraintLayout. Думаю, что многие используют его в своих проектах и привыкли думать о том, что он является самым быстрым.
Автор протестировал его с другими в зависимости от располагаемых объектов.
Выяснилось, что при расположении элементов один под другим, что типично для LinearLayout, с большим отрывом выигрывает как раз LinearLayout.
При расположении View в центре наилучший результат показал FrameLayout. Был удивлен, что LinearLayout показал почти такой же результат. ConstraintLayout проиграл с большим отрывом.
Как ни странно, при создании сложных View, ConstraintLayout показывал себя как наиболее медленный.
Уверен, что в простых случаях лучше не использовать ConstraintLayout. Если достаточно LinearLayout или FrameLayout — это будет быстрее. Однако, если ваш layout сильно усложнится, то в итоге все равно придется переделать на ConstraintLayout.
Я сам уже долгое время использую ConstraintLayout для создания View, значительно снизив использование других layout. Также не замечал снижения производительности при его использовании, поэтому некоторые результаты тестов показались странными.
#разработка #статьи
Попалась любопытная статья о производительности ConstraintLayout. Думаю, что многие используют его в своих проектах и привыкли думать о том, что он является самым быстрым.
Автор протестировал его с другими в зависимости от располагаемых объектов.
Выяснилось, что при расположении элементов один под другим, что типично для LinearLayout, с большим отрывом выигрывает как раз LinearLayout.
При расположении View в центре наилучший результат показал FrameLayout. Был удивлен, что LinearLayout показал почти такой же результат. ConstraintLayout проиграл с большим отрывом.
Как ни странно, при создании сложных View, ConstraintLayout показывал себя как наиболее медленный.
Уверен, что в простых случаях лучше не использовать ConstraintLayout. Если достаточно LinearLayout или FrameLayout — это будет быстрее. Однако, если ваш layout сильно усложнится, то в итоге все равно придется переделать на ConstraintLayout.
Я сам уже долгое время использую ConstraintLayout для создания View, значительно снизив использование других layout. Также не замечал снижения производительности при его использовании, поэтому некоторые результаты тестов показались странными.
👍1
Android launchMode
#разработка
На прошлой неделе в своей работе столкнулся с проблемой разворота приложения из активных. Ответ крылся в достаточно простой вещи: неправильно настроенным launchMode для второй Activity.
Это важная вещь, и думаю, что все разработчики должны знать, как она работает. Многие используют singleTask, чтобы предотвратить создание дубликатов, но забывают про остальные модификаторы.
В понимании работы launchMode мне помогла статья с иллюстрациями работы каждого из типа: singleTop, singleTask, singleInstance, standard. Можно добавить в закладки и обращаться к ней в момент изменения launchMode.
#разработка
На прошлой неделе в своей работе столкнулся с проблемой разворота приложения из активных. Ответ крылся в достаточно простой вещи: неправильно настроенным launchMode для второй Activity.
Это важная вещь, и думаю, что все разработчики должны знать, как она работает. Многие используют singleTask, чтобы предотвратить создание дубликатов, но забывают про остальные модификаторы.
В понимании работы launchMode мне помогла статья с иллюстрациями работы каждого из типа: singleTop, singleTask, singleInstance, standard. Можно добавить в закладки и обращаться к ней в момент изменения launchMode.
👍1
Иногда я делюсь с вами анонсами конференций и митапов, и сейчас хотел бы сказать про предстоящую встречу Android-разработчиков.
7 декабря, 18:00 — Android-митап :: e-Legion, Revolut, JetBrains
Место: конференц-холл дата-центра Selectel, ул.Цветочная, 19
Спикеры:
— Николай Иготти, JetBrains: Kotlin/Native: технология и средства разработки;
— Роман Яцына, Revolut: Архитектура приложения, основанная на списках и RecyclerView. Реактивный поток данных от сети и БД до RecyclerView;
— Никита Цыганов, e-Legion: Как мы создавали виджет для одного из самых крупных мобильных операторов России: Firebase Job Dispatcher & Channels Coroutine.
Формат: доклады, вопросы и подарки, дискуссия за пиццей 🙌
Вход свободный, регистрируйся сегодня, количество мест ограничено: https://elegion.timepad.ru/event/864117/
7 декабря, 18:00 — Android-митап :: e-Legion, Revolut, JetBrains
Место: конференц-холл дата-центра Selectel, ул.Цветочная, 19
Спикеры:
— Николай Иготти, JetBrains: Kotlin/Native: технология и средства разработки;
— Роман Яцына, Revolut: Архитектура приложения, основанная на списках и RecyclerView. Реактивный поток данных от сети и БД до RecyclerView;
— Никита Цыганов, e-Legion: Как мы создавали виджет для одного из самых крупных мобильных операторов России: Firebase Job Dispatcher & Channels Coroutine.
Формат: доклады, вопросы и подарки, дискуссия за пиццей 🙌
Вход свободный, регистрируйся сегодня, количество мест ограничено: https://elegion.timepad.ru/event/864117/
👍1
Про удаленную работу
#мысли #вопрос #опрос
Недавно общался с коллегой по поводу плюсов и минусов работы в офисе или на удаленке. Пришли мы, как обычно, к выводу, что везде есть достоинства и недостатки.
Уже давно я касался темы выбора первой работы. Но уже после получения опыта есть возможность перехода на удаленную работу.
Еще меня удивляет то, что до сих пор, несмотря на актуальность и удобство удаленной работы, у многих людей есть определенные стереотипы и мнение о ней, несмотря на то, что люди никогда не работали удаленно.
У меня есть, хоть и не большой, но опыт, работы удаленно. И сейчас я понимаю, какие для меня главные достоинства и недостатки этого варианта.
И я бы хотел спросить у вас: интересно ли вам было бы услышать ответы на ваши вопросы от меня, касаемо удаленной работы?
#мысли #вопрос #опрос
Недавно общался с коллегой по поводу плюсов и минусов работы в офисе или на удаленке. Пришли мы, как обычно, к выводу, что везде есть достоинства и недостатки.
Уже давно я касался темы выбора первой работы. Но уже после получения опыта есть возможность перехода на удаленную работу.
Еще меня удивляет то, что до сих пор, несмотря на актуальность и удобство удаленной работы, у многих людей есть определенные стереотипы и мнение о ней, несмотря на то, что люди никогда не работали удаленно.
У меня есть, хоть и не большой, но опыт, работы удаленно. И сейчас я понимаю, какие для меня главные достоинства и недостатки этого варианта.
И я бы хотел спросить у вас: интересно ли вам было бы услышать ответы на ваши вопросы от меня, касаемо удаленной работы?
👍1
Про удаленную работу
#ответы #опрос
Вы задали больше 20 вопросов. Ответов было много, поэтому это потянуло не на отдельный пост, а на целую статью. Ссылка на нее тут.
Надеюсь, что мои ответы помогут вам. Если еще остались вопросы или хотите уточнить ответ на свой вопрос, то пишите, обязательно отвечу.
Обсудить тему удаленной работы можно в комментариях.
Нравится ли формат ответов-вопросов?
#ответы #опрос
Вы задали больше 20 вопросов. Ответов было много, поэтому это потянуло не на отдельный пост, а на целую статью. Ссылка на нее тут.
Надеюсь, что мои ответы помогут вам. Если еще остались вопросы или хотите уточнить ответ на свой вопрос, то пишите, обязательно отвечу.
Обсудить тему удаленной работы можно в комментариях.
Нравится ли формат ответов-вопросов?
Telegraph
Вопросы про удаленную работу
Пришло достаточно много вопросов. Приятно, что тема удаленной работы интересна. Надеюсь, что мои ответы помогут закрыть некоторые пробелы о ней. Для начала, хотелось бы сказать, что есть несколько типов удаленной работы. 1) Фриланс — суть заключается в том…
👍1
Отладка в Android Studio
#разработка #начинающим
Недавно обратились с просьбой рассказать о небольшой статье, которая описывает базовые возможности отладки Android Studio.
Опрос на канале показал, что большинство участников считает себя junior-разработчиками, поэтому статья будет полезна в большей степени им.
В статье узнаете:
• что такое отладка;
• как остановить и запустить отладку;
• что такое точки остановки;
• приостановка, остановка и заглушка точек остановки;
• информация о навигации по коду во время отладки.
Также теперь буду помечать подобные советы и статьи специальным хэштегом для удобного поиска.
#разработка #начинающим
Недавно обратились с просьбой рассказать о небольшой статье, которая описывает базовые возможности отладки Android Studio.
Опрос на канале показал, что большинство участников считает себя junior-разработчиками, поэтому статья будет полезна в большей степени им.
В статье узнаете:
• что такое отладка;
• как остановить и запустить отладку;
• что такое точки остановки;
• приостановка, остановка и заглушка точек остановки;
• информация о навигации по коду во время отладки.
Также теперь буду помечать подобные советы и статьи специальным хэштегом для удобного поиска.
👍1
Решил сделать на канале небольшой #конкурс, связанный с разработкой.
В этот четверг, 20 декабря в 18:00, будет пост с задачей. Для участия в конкурсе необходимо решить задачу в течении 24 часов с момента размещения поста. Она небольшая, писать огромное приложение не нужно.
Так как канал посвящен Android разработке, то решение можно отправить на Kotlin или на Java. Это две категории, которые оцениваются отдельно.
Партнер конкурса — канал @yegor256news. С каналом автора и блогом я познакомился во время одной из конференций. Блог будет полезен всем разработчикам. Автор делится огромным количеством статей о чистом написании кода, о культуре разработки, о тестировании.
Приз — книга Егора Бугаенко «Elegant Objects». Уверен, что о правильном написании кода стоит читать каждому разработчику, вне зависимости от уровня и языка программирования. Книга будет полезна всем. Соответственно, будет разыграно две книги: для лучшего решения на Java и на Kotlin.
Поэтому, следите за каналом и не упустите возможность выиграть полезную вещь.
В этот четверг, 20 декабря в 18:00, будет пост с задачей. Для участия в конкурсе необходимо решить задачу в течении 24 часов с момента размещения поста. Она небольшая, писать огромное приложение не нужно.
Так как канал посвящен Android разработке, то решение можно отправить на Kotlin или на Java. Это две категории, которые оцениваются отдельно.
Партнер конкурса — канал @yegor256news. С каналом автора и блогом я познакомился во время одной из конференций. Блог будет полезен всем разработчикам. Автор делится огромным количеством статей о чистом написании кода, о культуре разработки, о тестировании.
Приз — книга Егора Бугаенко «Elegant Objects». Уверен, что о правильном написании кода стоит читать каждому разработчику, вне зависимости от уровня и языка программирования. Книга будет полезна всем. Соответственно, будет разыграно две книги: для лучшего решения на Java и на Kotlin.
Поэтому, следите за каналом и не упустите возможность выиграть полезную вещь.
👍1
Фриланс из палатки
#разработка #статьи
Сегодня попалась интересная статья о разработчике, который решил попробовать сменить офисную работу на фриланс. Вроде достаточно распространенная практика среди программистов, однако автор решил вместо простой удаленной работы отправиться в путешествие на велосипеде по Европе, а в пути работать.
Его день начинался около 5-6 часов утра, на работу он делал 2-3 перерыва в день по 2-3 часа каждый. Остальное время — передвижение на велосипеде, наслаждение природой и отдых.
Интересна сама подготовка: необходимо было обеспечить непрерывный источник электричества и интернет.
Мне кажется, что в таком стиле мне было бы тяжело работать. Находясь в красивом месте, на природе, меньше всего хочется думать о работе, сложнее сосредоточиться, чем на рабочем месте. Однако статья показывает, что сегодня для работы нужен только компьютер и Интернет. Удивительно.
Ссылка на статью тут.
А вы бы смогли так работать?
#разработка #статьи
Сегодня попалась интересная статья о разработчике, который решил попробовать сменить офисную работу на фриланс. Вроде достаточно распространенная практика среди программистов, однако автор решил вместо простой удаленной работы отправиться в путешествие на велосипеде по Европе, а в пути работать.
Его день начинался около 5-6 часов утра, на работу он делал 2-3 перерыва в день по 2-3 часа каждый. Остальное время — передвижение на велосипеде, наслаждение природой и отдых.
Интересна сама подготовка: необходимо было обеспечить непрерывный источник электричества и интернет.
Мне кажется, что в таком стиле мне было бы тяжело работать. Находясь в красивом месте, на природе, меньше всего хочется думать о работе, сложнее сосредоточиться, чем на рабочем месте. Однако статья показывает, что сегодня для работы нужен только компьютер и Интернет. Удивительно.
Ссылка на статью тут.
А вы бы смогли так работать?
👍1
Задача про Рождественскую распродажу
#конкурс
Для участия в конкурсе, необходимо решить следующую задачу:
Вы хотите купить несколько игр на свой телефон, чтобы поиграть в предстоящие новогодние праздники.
Обычно все игры продаются по одной и той же цене в 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.
Отправить решение нужно сюда. Всем удачи!
#конкурс
Для участия в конкурсе, необходимо решить следующую задачу:
Вы хотите купить несколько игр на свой телефон, чтобы поиграть в предстоящие новогодние праздники.
Обычно все игры продаются по одной и той же цене в 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.
Отправить решение нужно сюда. Всем удачи!
👍1
Благодарю всех за участие в конкурсе! В скором времени будут объявлены результаты.
👍1
Android ColorFilter Mode
#разработка
На прошлой неделе столкнулся с задачей динамического создания кнопок разных цветов из кастомного drawable.
Задача достаточно простая: нужно было создать кнопку, а дальше сделать
Однако, в моем случае, у каждой кнопки была обводка. То есть, в drawable задана
ColorFilter используется для нескольких целей. Например, им можно поменять Canvas, если вы создаете с нуля свою View. Или же для изменения цвета и рендеринга ImageView и Drawable, что используется в большинстве случаев.
Также эта возможность позволяет уменьшить количество используемых в приложении иконок. Например, вам нужно использовать одну и ту же иконку, но разных цветов. Теперь можно заменить цвет в иконке при помощи фильтра, а не добавлять в приложение отдельную иконку.
Подробнее о том, как работают фильтры можно найти в этой статье. В моем случае помог Mode
#разработка
На прошлой неделе столкнулся с задачей динамического создания кнопок разных цветов из кастомного drawable.
Задача достаточно простая: нужно было создать кнопку, а дальше сделать
setBackgroundResource() и выбрать необходимый файл. Дальше задать необходимый цвет при помощи метода setColorFilter. Однако, в моем случае, у каждой кнопки была обводка. То есть, в drawable задана
<stroke>, а после применения фильтра она пропадала. Пришлось задаться вопросом и подробнее изучить тему Mode для ColorFilter. ColorFilter используется для нескольких целей. Например, им можно поменять Canvas, если вы создаете с нуля свою View. Или же для изменения цвета и рендеринга ImageView и Drawable, что используется в большинстве случаев.
Также эта возможность позволяет уменьшить количество используемых в приложении иконок. Например, вам нужно использовать одну и ту же иконку, но разных цветов. Теперь можно заменить цвет в иконке при помощи фильтра, а не добавлять в приложение отдельную иконку.
Подробнее о том, как работают фильтры можно найти в этой статье. В моем случае помог Mode
MULTIPLY, который не затронул обводку у кнопки.👍1