Как удачно пройти собеседование на позицию Android developer
#статьи
В предыдущем посте я рекомендовал вам интересный канал, связанный с вопросами для подготовки к собеседованию.
А сегодня я предлагаю вам для просмотра полезную статью, в которой можно найти не только распространенные вопросы для проведения интервью, но и советы, как лучше запоминать эту информацию, как подготовиться, сколько времени нужно на подготовку.
Изучив представленные вопросы, поймал себя на мысли, что многие из них также задавали и мне на собеседованиях.
Ссылка на эту замечательную шпаргалку тут.
#статьи
В предыдущем посте я рекомендовал вам интересный канал, связанный с вопросами для подготовки к собеседованию.
А сегодня я предлагаю вам для просмотра полезную статью, в которой можно найти не только распространенные вопросы для проведения интервью, но и советы, как лучше запоминать эту информацию, как подготовиться, сколько времени нужно на подготовку.
Изучив представленные вопросы, поймал себя на мысли, что многие из них также задавали и мне на собеседованиях.
Ссылка на эту замечательную шпаргалку тут.
👍1
Статический анализ кода
#разработка #комментарии
Одной из последних задач, которую я решал на текущем проекте, была добавление статического анализа кода. Перед началом работы казалось, что задача тривиальная и не вызовет каких-то сложностей. Но для того, чтобы посмотреть все обилие существующих решений, попробовать их и понять, какое из них работает потребовалось большое количество времени.
• SpotBugs — достаточно распространенное решение, которое позволяет строить отчеты по текущей базе кода. Решение, которое не заработало у меня на проекте из-за наличия flavor.
• Infer — решение для статического анализа от Facebook, основано также на отчетах. Кроме того, позволяет строить отчеты для вновь добавленного кода. Не смог оценить решение из-за странных несовместимостей с последней версией JDK. Но выглядит интересно.
• Gnag — представляет из себя комбайн нескольких решений: checkstyle, pmd, findbugs, ktlint, detekt. Шикарное решение, которое работает сейчас на нашем проекте. Отдельной крутой фичей является анализ пулреквеста и добавление комментариев в нем, что позволяет встроить Gnag в CI.
• SonarQube — представляет из себя утилиту для детального отчета на сервере, показа текущего статуса приложения и количества критичных багов. Очень удачное решение, однако стартовая версия имеет ряд ограничений: анализ только master-ветки, отсутствие интеграции в CI, отсутствие интеграции с GitHub. Но получать отчет и анализировать его вы сможете и в ней.
После поиска, я пришел к выводу, что есть очень мало бесплатных и хорошо работающих решений. Некоторые из них работают плохо, другие невозможно подключить к проекту из-за непонятных несовместимостей с текущими библиотеками. И я уже не говорю про встраивание их в процесс CI. Остаются только платные решения, благо цена на них не слишком высока для коммерческих проектов, а для open-source чаще всего и вовсе отсутствует.
А что вы используете на своих проектах?
#разработка #комментарии
Одной из последних задач, которую я решал на текущем проекте, была добавление статического анализа кода. Перед началом работы казалось, что задача тривиальная и не вызовет каких-то сложностей. Но для того, чтобы посмотреть все обилие существующих решений, попробовать их и понять, какое из них работает потребовалось большое количество времени.
• SpotBugs — достаточно распространенное решение, которое позволяет строить отчеты по текущей базе кода. Решение, которое не заработало у меня на проекте из-за наличия flavor.
• Infer — решение для статического анализа от Facebook, основано также на отчетах. Кроме того, позволяет строить отчеты для вновь добавленного кода. Не смог оценить решение из-за странных несовместимостей с последней версией JDK. Но выглядит интересно.
• Gnag — представляет из себя комбайн нескольких решений: checkstyle, pmd, findbugs, ktlint, detekt. Шикарное решение, которое работает сейчас на нашем проекте. Отдельной крутой фичей является анализ пулреквеста и добавление комментариев в нем, что позволяет встроить Gnag в CI.
• SonarQube — представляет из себя утилиту для детального отчета на сервере, показа текущего статуса приложения и количества критичных багов. Очень удачное решение, однако стартовая версия имеет ряд ограничений: анализ только master-ветки, отсутствие интеграции в CI, отсутствие интеграции с GitHub. Но получать отчет и анализировать его вы сможете и в ней.
После поиска, я пришел к выводу, что есть очень мало бесплатных и хорошо работающих решений. Некоторые из них работают плохо, другие невозможно подключить к проекту из-за непонятных несовместимостей с текущими библиотеками. И я уже не говорю про встраивание их в процесс CI. Остаются только платные решения, благо цена на них не слишком высока для коммерческих проектов, а для open-source чаще всего и вовсе отсутствует.
А что вы используете на своих проектах?
👍1
AppsConf 2019. Список докладов
#конференции
Совсем скоро будет проходить конференция AppsConf 2019 в Санкт-Петербурге. Сегодня можно полностью посмотреть список докладов и выбрать для себя потенциально интересные. Для себя уже отметил несколько:
Например, в докладе «История одного pet-проекта» интересно будет послушать про то, как вывести свой проект на пассивный доход и какие качества нужны человеку, который хочет делать свой проект. Возможно, это будет хорошей мотивацией наконец начать писать собственное приложение.
В докладе «Хакатон или пишем приложение за ночь» любопытно послушать про хакатоны и их пользу мобильным разработчикам. Никогда не участвовал в них, поэтому будет полезно понять, нужно ли мне это.
Доклад «Android Insets - разбираемся со страхами и готовимся к Android Q» поможет побороть проблемы прозрачного статусбара и появления клавиатуры. Сам активно использую Insets в проектах, рекомендую изучить эту тему.
В докладе «New Android Project - The Most Important Decisions» любопытно послушать про то, как начинать новый проект и какими практиками пользоваться. Конечно, это тема очень субъективная и любой разработчик берет в новый проект уже зарекомендовавшие себя библиотеки и подходы, но, возможно, получится узнать что-то новое.
Следующий доклад поведает особенности работы в распределенной команде. Мне всегда интересны подобные доклады, так как сам работаю удаленно, и подобные практики можно применить в своей команде.
Докладов очень много, каждый сможет найти для себя интересное!
#конференции
Совсем скоро будет проходить конференция AppsConf 2019 в Санкт-Петербурге. Сегодня можно полностью посмотреть список докладов и выбрать для себя потенциально интересные. Для себя уже отметил несколько:
Например, в докладе «История одного pet-проекта» интересно будет послушать про то, как вывести свой проект на пассивный доход и какие качества нужны человеку, который хочет делать свой проект. Возможно, это будет хорошей мотивацией наконец начать писать собственное приложение.
В докладе «Хакатон или пишем приложение за ночь» любопытно послушать про хакатоны и их пользу мобильным разработчикам. Никогда не участвовал в них, поэтому будет полезно понять, нужно ли мне это.
Доклад «Android Insets - разбираемся со страхами и готовимся к Android Q» поможет побороть проблемы прозрачного статусбара и появления клавиатуры. Сам активно использую Insets в проектах, рекомендую изучить эту тему.
В докладе «New Android Project - The Most Important Decisions» любопытно послушать про то, как начинать новый проект и какими практиками пользоваться. Конечно, это тема очень субъективная и любой разработчик берет в новый проект уже зарекомендовавшие себя библиотеки и подходы, но, возможно, получится узнать что-то новое.
Следующий доклад поведает особенности работы в распределенной команде. Мне всегда интересны подобные доклады, так как сам работаю удаленно, и подобные практики можно применить в своей команде.
Докладов очень много, каждый сможет найти для себя интересное!
👍2
Android Chatroom With Firebase
#разработка #статьи
Сегодня попалась статья о создании своего небольшого приложения-чата, используя в качестве backend составляющей Firebase.
Все из нас так или иначе пользуются сервисами от Firebase. Но мало кто пользуется ими на всю мощь. Если разобраться и посмотреть на то обилие сервисов, которое предоставляет Firebase, то можно увидеть, что клиент-серверное взаимодействие можно выстроить и без наличия сервера. Например, тут есть и авторизация, и база данных, и облачное хранилище, ну и всем известные пуш-уведомления.
Ссылка на статью, где можно посмотреть использование всех этих инструментов тут.
#разработка #статьи
Сегодня попалась статья о создании своего небольшого приложения-чата, используя в качестве backend составляющей Firebase.
Все из нас так или иначе пользуются сервисами от Firebase. Но мало кто пользуется ими на всю мощь. Если разобраться и посмотреть на то обилие сервисов, которое предоставляет Firebase, то можно увидеть, что клиент-серверное взаимодействие можно выстроить и без наличия сервера. Например, тут есть и авторизация, и база данных, и облачное хранилище, ну и всем известные пуш-уведомления.
Ссылка на статью, где можно посмотреть использование всех этих инструментов тут.
👍1
Быть успешным и быть занятым — не одно и то же
#разработка #совет #комментарии
В современном мире, есть негласное понимание того, что постоянно занятые люди — это успешные люди. Я сам замечал то, что при разговоре с друзьями, которые отвечают тебе, что они постоянно заняты работой, ты относишься к этому с пониманием и уважением. Быть трудоголиком — это значит идти правильной дорогой.
Правда, не так давно я узнал о технике, которая называется "Неделя обдумывания". Это достаточно распространенный прием среди руководителей крупных компаний.
Например, его использовал Билл Гейтс в те периоды, когда он был главой Microsoft. Он использовал его не только для себя, но и для менеджеров компании. Это были двухнедельные паузы, которые не входили в состав отпуска, и цель которых была — ничего не делать. Интересно, что в подобные периоды нельзя было общаться с семьей и друзьями. Гейтс считал, что подобная практика позволяла найти идеи, которые служили успехом для Microsoft.
Но чтобы попробовать подобную практику, не обязательно отстранять от себя семью и друзей на полмесяца. Существует более легкая форма данной практики.
В какой-либо выходной, субботу или воскресенье, попробуйте не пользоваться своим смартфоном и компьютером.
Звучит это легче, чем сделать. Ведь уже "на автомате" мы тянемся к смартфону с самого утра, чтобы проверить уведомления и социальные сети и ложимся спать со смартфоном в руках. Для меня, как и для многих, смартфон также является кошельком, которым мы платим в магазинах и кафе.
Говорят, что даже благодаря одному дню такой практики, мозг может расслабиться и следующая рабочая неделя начнется куда более продуктивнее.
Пробовали ли вы такую практику? Делитесь своим опытом в комментариях
#разработка #совет #комментарии
В современном мире, есть негласное понимание того, что постоянно занятые люди — это успешные люди. Я сам замечал то, что при разговоре с друзьями, которые отвечают тебе, что они постоянно заняты работой, ты относишься к этому с пониманием и уважением. Быть трудоголиком — это значит идти правильной дорогой.
Правда, не так давно я узнал о технике, которая называется "Неделя обдумывания". Это достаточно распространенный прием среди руководителей крупных компаний.
Например, его использовал Билл Гейтс в те периоды, когда он был главой Microsoft. Он использовал его не только для себя, но и для менеджеров компании. Это были двухнедельные паузы, которые не входили в состав отпуска, и цель которых была — ничего не делать. Интересно, что в подобные периоды нельзя было общаться с семьей и друзьями. Гейтс считал, что подобная практика позволяла найти идеи, которые служили успехом для Microsoft.
Но чтобы попробовать подобную практику, не обязательно отстранять от себя семью и друзей на полмесяца. Существует более легкая форма данной практики.
В какой-либо выходной, субботу или воскресенье, попробуйте не пользоваться своим смартфоном и компьютером.
Звучит это легче, чем сделать. Ведь уже "на автомате" мы тянемся к смартфону с самого утра, чтобы проверить уведомления и социальные сети и ложимся спать со смартфоном в руках. Для меня, как и для многих, смартфон также является кошельком, которым мы платим в магазинах и кафе.
Говорят, что даже благодаря одному дню такой практики, мозг может расслабиться и следующая рабочая неделя начнется куда более продуктивнее.
Пробовали ли вы такую практику? Делитесь своим опытом в комментариях
👍1
Kaspresso
#разработка #статьи
Существует довольно много команд, которые при создании приложения, игнорируют написание UI-тестов.
Одни считают, что это не нужно, так как приложение развивается слишком быстро и поддержка тестов отнимает слишком много времени. Другие думают, что проще нанять больше тестировщиков в команду, и это будет эффективнее, чем написание UI-тестов. Третьи считают, что написание подобных тестов – это неудобно.
И в самом деле, написание UI-тестов на Android – не сама легкая задача, тем более если использовать только Espresso для этого. Ведь даже самый простой код заставляет потратить некоторое время для того, чтобы понять, что там происходит. При использовании фреимворка Kakao ситуация становится гораздо лучше, однако также имеет ряд недостатков.
И вот ребята с команды Касперского решили улучшить ситуацию в написании этого вида тестов, и создали фреимворк Kaspresso.
Вот только некоторые из фич: возможность обращения к adb-командам, работа с Android напрямую (отключение сети, эмуляция звонков, обрабока runtime-разрешений), создание скриншотов, простая конфигурация каждого из сценариев.
Больше информации о фреимворке можно найти тут. А все вопросы, которые возникнут во время пользования библиотеки, можете задать в чатике.
#разработка #статьи
Существует довольно много команд, которые при создании приложения, игнорируют написание UI-тестов.
Одни считают, что это не нужно, так как приложение развивается слишком быстро и поддержка тестов отнимает слишком много времени. Другие думают, что проще нанять больше тестировщиков в команду, и это будет эффективнее, чем написание UI-тестов. Третьи считают, что написание подобных тестов – это неудобно.
И в самом деле, написание UI-тестов на Android – не сама легкая задача, тем более если использовать только Espresso для этого. Ведь даже самый простой код заставляет потратить некоторое время для того, чтобы понять, что там происходит. При использовании фреимворка Kakao ситуация становится гораздо лучше, однако также имеет ряд недостатков.
И вот ребята с команды Касперского решили улучшить ситуацию в написании этого вида тестов, и создали фреимворк Kaspresso.
Вот только некоторые из фич: возможность обращения к adb-командам, работа с Android напрямую (отключение сети, эмуляция звонков, обрабока runtime-разрешений), создание скриншотов, простая конфигурация каждого из сценариев.
Больше информации о фреимворке можно найти тут. А все вопросы, которые возникнут во время пользования библиотеки, можете задать в чатике.
Шаблоны проектирования
#статьи #новичкам
Одним из важных инструментов в работе любого программиста являются паттерны проектирования. Эти шаблоны описывают типичные способы решения часто встречающихся проблем при разработке программ.
Но часто замечаю, что мы, как разработчики, знаем их недостаточно хорошо. Думаю, что проблема в том, что и без их знания также можно программировать. При этом, код может быть достаточно высокого уровня. Однако, зная паттерны вы получите еще один инструмент в свою копилку.
Второй причиной изучения шаблонов является сокращение времени на решение проблем. Ведь можно просто взять готовое решение из паттерна, которое будет проще объяснить коллеге, который также может прочитать описание того шаблона, который вы использовали. Важно помнить и другую крайность: после изучения паттернов, разработчик стремиться применить все эти знания там, где можно было обойтись кодом проще.
Ну и последняя причина для использования — это собеседования. Подобные вопросы часто всплывают при приеме на новое место работы, их знания увеличат ваши шансы на получение нового места.
Для себя я выделил два источника для изучения паттернов: сайт Refactoring Guru, а также вот эта статья. Ресурсы будут одинаково полезны как новичкам, так и более опытным коллегам.
#статьи #новичкам
Одним из важных инструментов в работе любого программиста являются паттерны проектирования. Эти шаблоны описывают типичные способы решения часто встречающихся проблем при разработке программ.
Но часто замечаю, что мы, как разработчики, знаем их недостаточно хорошо. Думаю, что проблема в том, что и без их знания также можно программировать. При этом, код может быть достаточно высокого уровня. Однако, зная паттерны вы получите еще один инструмент в свою копилку.
Второй причиной изучения шаблонов является сокращение времени на решение проблем. Ведь можно просто взять готовое решение из паттерна, которое будет проще объяснить коллеге, который также может прочитать описание того шаблона, который вы использовали. Важно помнить и другую крайность: после изучения паттернов, разработчик стремиться применить все эти знания там, где можно было обойтись кодом проще.
Ну и последняя причина для использования — это собеседования. Подобные вопросы часто всплывают при приеме на новое место работы, их знания увеличат ваши шансы на получение нового места.
Для себя я выделил два источника для изучения паттернов: сайт Refactoring Guru, а также вот эта статья. Ресурсы будут одинаково полезны как новичкам, так и более опытным коллегам.
Jetpack Compose
#разработка
На прошедшем Google IO мы увидели одну достаточно интересную вещь, которая, по мнению Google, поможет разработчикам поддерживать и создавать интерфейсы в Android-приложениях — Jetpack Compose.
Compose — это инструментарий реактивного пользовательского интерфейса, полностью разработанный на Kotlin и он похож, например, на фреимворк, который есть в Flutter.
Jetpack Compose дает возможность использовать набор компонентов, которые можно легко комбинировать между собой. Важно понимать, что эти компоненты — не обертки над существующими View, а абсолютно новые функции, которые рисуют на Canvas и все они являются простыми виджетами со своим набором правил.
Как только появился Jetpack Compose, то для того, чтобы попробовать его, нужно было самостоятельно компилировать свою собственную версию Android Studio. Но с 10 октября Google анонсировал первую дев-версию Jetpack Compose, которую можно подключить к проекту как обычную зависимость.
Важно: не используйте этот инструмент для ваших прод-проектов, так как инструмент находится в начальной стадии разработки. Но это отличная возможность попробовать его, дать фидбек о тех недостатках которые вы заметили и повлиять на разработку такого крутого инструмента.
В этой статье найдете описание тех зависимостей, которые есть у Jetpack Compose, а тут — побольше информации о некоторых виджетах и примеры кода для старта.
Как вам новый инструмент от Google?
#разработка
На прошедшем Google IO мы увидели одну достаточно интересную вещь, которая, по мнению Google, поможет разработчикам поддерживать и создавать интерфейсы в Android-приложениях — Jetpack Compose.
Compose — это инструментарий реактивного пользовательского интерфейса, полностью разработанный на Kotlin и он похож, например, на фреимворк, который есть в Flutter.
Jetpack Compose дает возможность использовать набор компонентов, которые можно легко комбинировать между собой. Важно понимать, что эти компоненты — не обертки над существующими View, а абсолютно новые функции, которые рисуют на Canvas и все они являются простыми виджетами со своим набором правил.
Как только появился Jetpack Compose, то для того, чтобы попробовать его, нужно было самостоятельно компилировать свою собственную версию Android Studio. Но с 10 октября Google анонсировал первую дев-версию Jetpack Compose, которую можно подключить к проекту как обычную зависимость.
Важно: не используйте этот инструмент для ваших прод-проектов, так как инструмент находится в начальной стадии разработки. Но это отличная возможность попробовать его, дать фидбек о тех недостатках которые вы заметили и повлиять на разработку такого крутого инструмента.
В этой статье найдете описание тех зависимостей, которые есть у Jetpack Compose, а тут — побольше информации о некоторых виджетах и примеры кода для старта.
Как вам новый инструмент от Google?
AppsConf 2019. Утвержденные доклады
#конференции
Уже на следующей неделе в Санкт-Петербурге пройдет конференция для мобильных разработчиков — AppsConf. Полное расписание и список утвержденных докладов. А вот и список докладов, которые я обязательно посещу.
Например, доклад Евгения Идзиковского «Повышение своей эффективности. Гайд» расскажет о том, как получить прирост в своей производительности, как быть эффективным и как бороться с прокрастинацией. На первый взгляд, достаточно «заезженная» тема, но тем не менее интересно получить ответы на все эти вопросы от человека, которые имеет опыт.
Доклад «Из разработчика в стартаперы» расскажет о пути, который нужно было пройти автору, чтобы начать свой стартап. Послушать о подводных камнях подобных проектов всегда интересно.
В докладе «Keep it scrollin’: боремся с RecyclerView за каждый кадр» можно послушать про достаточно старый и распространенный компонент в любом Android-приложении — RecyclerView. Надеюсь узнать некоторые дополнительные приемы, которые можно применить для сложных списков.
Доклад «Animations in 2k19» расскажет о подходах к выбору построения анимаций, а также о таких современных и нужных компонентах, как MotionLayout и CoordinatorLayout.
Ну и для новичков во Flutter будет полезным доклад «Flutter. Опыт в продакшн-разработке». Будет много всего о том, как ведет себя Flutter в проде, как устроен CI/CD при работе с ним, ну и ответ на всех волнующий вопрос: возможно ли сейчас применять Flutter в проде?
Докладов очень много, каждый, как и я, сможет найти для себя интересное!
#конференции
Уже на следующей неделе в Санкт-Петербурге пройдет конференция для мобильных разработчиков — AppsConf. Полное расписание и список утвержденных докладов. А вот и список докладов, которые я обязательно посещу.
Например, доклад Евгения Идзиковского «Повышение своей эффективности. Гайд» расскажет о том, как получить прирост в своей производительности, как быть эффективным и как бороться с прокрастинацией. На первый взгляд, достаточно «заезженная» тема, но тем не менее интересно получить ответы на все эти вопросы от человека, которые имеет опыт.
Доклад «Из разработчика в стартаперы» расскажет о пути, который нужно было пройти автору, чтобы начать свой стартап. Послушать о подводных камнях подобных проектов всегда интересно.
В докладе «Keep it scrollin’: боремся с RecyclerView за каждый кадр» можно послушать про достаточно старый и распространенный компонент в любом Android-приложении — RecyclerView. Надеюсь узнать некоторые дополнительные приемы, которые можно применить для сложных списков.
Доклад «Animations in 2k19» расскажет о подходах к выбору построения анимаций, а также о таких современных и нужных компонентах, как MotionLayout и CoordinatorLayout.
Ну и для новичков во Flutter будет полезным доклад «Flutter. Опыт в продакшн-разработке». Будет много всего о том, как ведет себя Flutter в проде, как устроен CI/CD при работе с ним, ну и ответ на всех волнующий вопрос: возможно ли сейчас применять Flutter в проде?
Докладов очень много, каждый, как и я, сможет найти для себя интересное!
Одна из моих любимых рубрик на канале — это #интервью с разработчиком.
Сегодня у нас свежее интервью с командой Surf. Оно получилось достаточно объемным, но очень интересным, так как ребята, Евгений Сатуров и Максим Туев, ответили подробно на много вопросов.
Прочитать интервью вы можете тут.
Сегодня у нас свежее интервью с командой Surf. Оно получилось достаточно объемным, но очень интересным, так как ребята, Евгений Сатуров и Максим Туев, ответили подробно на много вопросов.
Прочитать интервью вы можете тут.
Teletype
Интервью с разработчиками. Студия Surf
Сегодня хочу представить вам не одного разработчика, а сразу нескольких.
Еще немного Jetpack Compose
#разработка
На прошлой неделе, я рассказывал о новом компоненте от Google — Jetpack Compose. Хотелось бы немного дополнить пост.
Я писал о том, что для работы теперь необходимо просто добавить компонент как обычную зависимость. Но для полноценной работы этого компонента все еще нужно иметь кастомную Android Studio и компиляторный плагин. По словам разработчиков, тот момент, что все заработало на обычной Android Studio — это случайность🤷♂️.
Уже совсем скоро состоится DevSummit, на котором будет немного больше подробностей о том, как все будет работать и больше новостей об этом компоненте.
Хотите еще больше информации о Jetpack Compose, то читайте ее в этой статье. Также, там можно ознакомиться с комментариями разработчика этого компонента, если вам интересны шаги развития этого инструмента.
И спасибо подписчику, указал мне на эту неточность в посте!
#разработка
На прошлой неделе, я рассказывал о новом компоненте от Google — Jetpack Compose. Хотелось бы немного дополнить пост.
Я писал о том, что для работы теперь необходимо просто добавить компонент как обычную зависимость. Но для полноценной работы этого компонента все еще нужно иметь кастомную Android Studio и компиляторный плагин. По словам разработчиков, тот момент, что все заработало на обычной Android Studio — это случайность🤷♂️.
Уже совсем скоро состоится DevSummit, на котором будет немного больше подробностей о том, как все будет работать и больше новостей об этом компоненте.
Хотите еще больше информации о Jetpack Compose, то читайте ее в этой статье. Также, там можно ознакомиться с комментариями разработчика этого компонента, если вам интересны шаги развития этого инструмента.
И спасибо подписчику, указал мне на эту неточность в посте!
ViewModels и LiveData: паттерны и антипаттерны
#разработка #статьи
В своем последнем проекте активно использую компоненты из Jetpack. К ним относятся ViewModels и LiveData.
ViewModel это класс, который создан для хранения и управления данными, связанными с пользовательским интерфейсом, учитывая жизненный цикл. Вместе с LiveData можно легко, не боясь утечек памяти, подписываться на изменения ViewModel.
При работе с ним возникают вопросы, связанные с его правильным использованием. На некоторые из них, нашел ответы в этой статье, которая рассматривает основные вопросы, связанные с ее применением.
Например, мне было интересно прочитать про правильное взаимодействие ViewModel с репозиториями, как избежать огромных ViewModel, а также как связаны состояния Activity и ViewModel.
#разработка #статьи
В своем последнем проекте активно использую компоненты из Jetpack. К ним относятся ViewModels и LiveData.
ViewModel это класс, который создан для хранения и управления данными, связанными с пользовательским интерфейсом, учитывая жизненный цикл. Вместе с LiveData можно легко, не боясь утечек памяти, подписываться на изменения ViewModel.
При работе с ним возникают вопросы, связанные с его правильным использованием. На некоторые из них, нашел ответы в этой статье, которая рассматривает основные вопросы, связанные с ее применением.
Например, мне было интересно прочитать про правильное взаимодействие ViewModel с репозиториями, как избежать огромных ViewModel, а также как связаны состояния Activity и ViewModel.
Самый короткий код с Dagger 2
#разработка #опрос #статьи
Когда впервые видишь Dagger, то ловишь себя на мысли, что не понимаешь, как это все работает. Видишь «волшебную» аннотацию Inject, которая без создания объекта отдает тебе его.
Конечно, при большем изучении этой библиотеки все становится яснее. И сейчас очень много статей, примеров и докладов, которые расскажут, наверное, о всех аспектах и фичах.
Но есть один пример, который призван показать «здесь и сейчас» как работает Dagger. Он не призван показать все, а только самую суть. Некий «hello world!»
Подробнее о примере, а также ссылку на GitHub, можно найти тут.
Как вам пример?
#разработка #опрос #статьи
Когда впервые видишь Dagger, то ловишь себя на мысли, что не понимаешь, как это все работает. Видишь «волшебную» аннотацию Inject, которая без создания объекта отдает тебе его.
Конечно, при большем изучении этой библиотеки все становится яснее. И сейчас очень много статей, примеров и докладов, которые расскажут, наверное, о всех аспектах и фичах.
Но есть один пример, который призван показать «здесь и сейчас» как работает Dagger. Он не призван показать все, а только самую суть. Некий «hello world!»
main(args: Array<String>) {
println(MainClass().info.text)
}
class MainClass {
@Inject lateinit var info : Info
init {
DaggerMagicBox.create().poke(this)
}
}
class Info @Inject constructor() {
val text = "Hello Dagger 2"
}
@Component interface MagicBox {
fun poke(mainClass: MainClass)
}
Подробнее о примере, а также ссылку на GitHub, можно найти тут.
Как вам пример?
Binds vs Provides в Dagger 2
#разработка
Какая разница между Binds и Provides в Dagger 2? Это один из самых частых вопросов на собеседованиях, связанных с Dagger 2. И мне бы хотелось попробовать дать вам более-менее полное объяснение, которое я нашел и использую при ответе.
Первое отличие заключается в том, каким образом каждая из них «предоставляет» зависимости.
Provides может содержать в своем методе больше, чем один параметр, и возвращает реализацию того элемента, который нам нужен.
Binds же может принимать только один параметр, причем этот параметр — реализация того класса, который нам нужен, а возвращаемым параметром является интерфейс данного класса.
Кроме того, можно добавить, что с Provides используется обычный метод, а с Binds — абстрактный.
Вторым отличием является количество генерируемого кода в проекте.
Если посмотреть на то, что генерируется при добавлении этой аннотации, то видно добавление
Подробнее про сравнение этих двух аннотаций можно почитать в этой статье.
Есть ли еще какие-то отличия?
Будет здорово, если вы добавите их в комментариях.
#разработка
Какая разница между Binds и Provides в Dagger 2? Это один из самых частых вопросов на собеседованиях, связанных с Dagger 2. И мне бы хотелось попробовать дать вам более-менее полное объяснение, которое я нашел и использую при ответе.
Первое отличие заключается в том, каким образом каждая из них «предоставляет» зависимости.
Provides может содержать в своем методе больше, чем один параметр, и возвращает реализацию того элемента, который нам нужен.
Binds же может принимать только один параметр, причем этот параметр — реализация того класса, который нам нужен, а возвращаемым параметром является интерфейс данного класса.
Кроме того, можно добавить, что с Provides используется обычный метод, а с Binds — абстрактный.
Вторым отличием является количество генерируемого кода в проекте.
Если посмотреть на то, что генерируется при добавлении этой аннотации, то видно добавление
MyModule_GetInjectClassFactory
, которой нет при использовании Binds, но есть при добавлении Provides.Подробнее про сравнение этих двух аннотаций можно почитать в этой статье.
Есть ли еще какие-то отличия?
Будет здорово, если вы добавите их в комментариях.
Нестыдные вопросы про жизненный цикл
#разработка #статьи
При прохождении собеседований на позиции Android-разработчиков, часто можно столкнуться с вопросами про жизненный цикл Activity, отличия bind-сервисов от Intent-сервисов и Fragment от Activity.
Думаю, что многие из вас знают ответы на эти вопросы. Однако, есть некоторые вопросы с «нюансами», которые могут загнать в ступор даже опытных разработчиков.
Есть такие знания, которые полезны только на собеседованиях, и в реальных проектах мало кто их применяет. Однако эти знания (ответы на вопросы) помогут не только успешно пройти собеседование, но и избежать багов при разработке, что делает их еще более ценными.
Например, популярный вопрос из собеседования: как будет выглядеть жизненный цикл, если запустить вторую Activity из первой?
Вроде простой вопрос, но если добавить к нему «если вторая Activity прозрачная», то ответ может быть не самым логичным.
Ответ на этот и подобные вопросы можно найти в статье.
Делитесь в комментариях, с какими нестандартными вопросами вы сталкивались на собеседованиях?
#разработка #статьи
При прохождении собеседований на позиции Android-разработчиков, часто можно столкнуться с вопросами про жизненный цикл Activity, отличия bind-сервисов от Intent-сервисов и Fragment от Activity.
Думаю, что многие из вас знают ответы на эти вопросы. Однако, есть некоторые вопросы с «нюансами», которые могут загнать в ступор даже опытных разработчиков.
Есть такие знания, которые полезны только на собеседованиях, и в реальных проектах мало кто их применяет. Однако эти знания (ответы на вопросы) помогут не только успешно пройти собеседование, но и избежать багов при разработке, что делает их еще более ценными.
Например, популярный вопрос из собеседования: как будет выглядеть жизненный цикл, если запустить вторую Activity из первой?
Вроде простой вопрос, но если добавить к нему «если вторая Activity прозрачная», то ответ может быть не самым логичным.
Ответ на этот и подобные вопросы можно найти в статье.
Делитесь в комментариях, с какими нестандартными вопросами вы сталкивались на собеседованиях?
No Code репозиторий
Знаете, какие приложения содержат меньше багов и имеют самый защищенный код? Те приложения, которые не имеют кода.
Звучит странно, пока не натыкаешься на репозиторий, в котором нет ни строчки кода и который имеет больше 30К звезд и 3К форков.
Описание выглядит так:
No code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.
Но еще более интересным выглядит обилие pull requests и issues. В общем, если хочется поднять себе настроение, то «изучите» этот репозиторий.
Знаете, какие приложения содержат меньше багов и имеют самый защищенный код? Те приложения, которые не имеют кода.
Звучит странно, пока не натыкаешься на репозиторий, в котором нет ни строчки кода и который имеет больше 30К звезд и 3К форков.
Описание выглядит так:
No code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.
Но еще более интересным выглядит обилие pull requests и issues. В общем, если хочется поднять себе настроение, то «изучите» этот репозиторий.
Асинхронный DiffUtil
#статьи #разработка
Кроме того,
Но по мере того, как размер вашего набора данных увеличивается или логика сравнения становится сложной, для того, чтобы увеличить производительность приложения и избежать «подтормаживаний», вы должны вычислять разницу в background-потоке.
Для этого можно использовать несколько подходов.
Например, если вы пишите свое приложение на Kotlin, то с этой задачей легко справятся Coroutines. Подробнее о том, как это сделать, можно прочитать тут.
Если же вы пишите приложение на Java, или не хотите использовать Coroutines, то одним из вариантов решения этой задачи будет использование Rx. Подробная инструкция тут.
#статьи #разработка
RecyclerView
встречается в большинстве Android-приложений. И правильным подходом для его обновления является использование DiffUtil
, так как при этом мы не обновляем весь список, а только те части, которые изменились.Кроме того,
DiffUtil
позволяет нам создавать анимации RecyclerView
, которые когда-то было практически невозможно или очень сложно сделать с помощью ListView.
Но по мере того, как размер вашего набора данных увеличивается или логика сравнения становится сложной, для того, чтобы увеличить производительность приложения и избежать «подтормаживаний», вы должны вычислять разницу в background-потоке.
Для этого можно использовать несколько подходов.
Например, если вы пишите свое приложение на Kotlin, то с этой задачей легко справятся Coroutines. Подробнее о том, как это сделать, можно прочитать тут.
Если же вы пишите приложение на Java, или не хотите использовать Coroutines, то одним из вариантов решения этой задачи будет использование Rx. Подробная инструкция тут.
Git клиенты
#разработка #опрос
Мне кажется, что следующей по частоте использования программ среди разработчиков после IDE и браузера, является Git клиент.
Хотя я уверен, что есть разработчики, которые привыкли пользоваться консолью для того, чтобы «запушить» свои изменения. В своей же работе, я привык пользовался ей только в случае, когда необходимо сделать то, что не позволяет git клиент или когда хотелось бы вспомнить или выучить новые git-команды.
Сейчас есть достаточно много клиентов. Когда я начинал работать, то пользовался SourceTree, который меня полностью устраивал. Правда, я им пользовался на Windows, и после перехода на MacOS искал, какие-то более интересные альтернативы.
И к своему удивлению нашел крутейший и, к сожалению, не очень популярный клиент, который называется Fork.
Это opensource проект, который пишет семья российских разработчиков в «свободное время», и где все необходимое под рукой, и отлично продумано.
Поддержка Windows, кстати, тоже есть. Рекомендую попробовать, возможно вы тоже в поиске удобного клиента или захотите сменить свой текущий.
Ссылка на проект тут.
А каким git клиентом пользуетесь вы?
#разработка #опрос
Мне кажется, что следующей по частоте использования программ среди разработчиков после IDE и браузера, является Git клиент.
Хотя я уверен, что есть разработчики, которые привыкли пользоваться консолью для того, чтобы «запушить» свои изменения. В своей же работе, я привык пользовался ей только в случае, когда необходимо сделать то, что не позволяет git клиент или когда хотелось бы вспомнить или выучить новые git-команды.
Сейчас есть достаточно много клиентов. Когда я начинал работать, то пользовался SourceTree, который меня полностью устраивал. Правда, я им пользовался на Windows, и после перехода на MacOS искал, какие-то более интересные альтернативы.
И к своему удивлению нашел крутейший и, к сожалению, не очень популярный клиент, который называется Fork.
Это opensource проект, который пишет семья российских разработчиков в «свободное время», и где все необходимое под рукой, и отлично продумано.
Поддержка Windows, кстати, тоже есть. Рекомендую попробовать, возможно вы тоже в поиске удобного клиента или захотите сменить свой текущий.
Ссылка на проект тут.
А каким git клиентом пользуетесь вы?
Google Developers Group (GDG)
#разработка #опрос
На канале вы иногда видите упоминания конференций для мобильных разработчиков и рекомендации митапов.
Мне кажется, что сегодня — это хороший способ получать новые знания и расширять круг знакомств среди своих коллег.
Также, я согласен с мнением, что главная «фишка» и плюс конференций — это общение с людьми и нетворкинг, а доклады и активности от организаторов — приятный бонус. Именно поэтому, я люблю посещать как можно больше мероприятий.
Но если вы живете в регионе, то для вас посещение конференций и митапов может быть проблемой, так как большинство крупных событий происходит в Москве или Санкт-Петербурге. Это решается, если у вас есть подходящее сообщение с этими городами, но все равно вам нужно жертвовать своим временем и деньгами.
И сегодня хочу рассказать вам о сообществах, которые есть во многих городах мира, и если его нет, то вы можете возглавить его сами, в вашем городе!
GDG (Google Developers Group) — некоммерческое IT сообщество, в основе которого лежат технологии Google для разработчиков. Сегодня таких сообществ около 1000 по всему миру, и их число растет. Нам, как разработчикам под Android, GDG-митапы очень интересны, так как на них читается огромное количество докладов про Android и Flutter. Ну и познакомиться с разработчиками своего города — это отдельный бонус. И как еще один плюс — митапы, которые организовываются — бесплатны.
Карта, где вы можете поискать представительство GDG в своем городе тут, а если вы хотите стать организатором сообщества в своем городе, то вам сюда.
Я также стал организатором GDG сообщества в своем городе, поэтому если вы живете в Брянске или рядом — присоединяйтесь к нашему чату и группе в VK. Первый митап уже запланирован!
А вы слышали раньше про сообщество GDG?
#разработка #опрос
На канале вы иногда видите упоминания конференций для мобильных разработчиков и рекомендации митапов.
Мне кажется, что сегодня — это хороший способ получать новые знания и расширять круг знакомств среди своих коллег.
Также, я согласен с мнением, что главная «фишка» и плюс конференций — это общение с людьми и нетворкинг, а доклады и активности от организаторов — приятный бонус. Именно поэтому, я люблю посещать как можно больше мероприятий.
Но если вы живете в регионе, то для вас посещение конференций и митапов может быть проблемой, так как большинство крупных событий происходит в Москве или Санкт-Петербурге. Это решается, если у вас есть подходящее сообщение с этими городами, но все равно вам нужно жертвовать своим временем и деньгами.
И сегодня хочу рассказать вам о сообществах, которые есть во многих городах мира, и если его нет, то вы можете возглавить его сами, в вашем городе!
GDG (Google Developers Group) — некоммерческое IT сообщество, в основе которого лежат технологии Google для разработчиков. Сегодня таких сообществ около 1000 по всему миру, и их число растет. Нам, как разработчикам под Android, GDG-митапы очень интересны, так как на них читается огромное количество докладов про Android и Flutter. Ну и познакомиться с разработчиками своего города — это отдельный бонус. И как еще один плюс — митапы, которые организовываются — бесплатны.
Карта, где вы можете поискать представительство GDG в своем городе тут, а если вы хотите стать организатором сообщества в своем городе, то вам сюда.
Я также стал организатором GDG сообщества в своем городе, поэтому если вы живете в Брянске или рядом — присоединяйтесь к нашему чату и группе в VK. Первый митап уже запланирован!
А вы слышали раньше про сообщество GDG?
Android Coroutine Recipes
#разработка #статьи #опрос
Уверен, что многие используют Kotlin в своих проектах. Сегодня нет веских причин для того, чтобы писать новые проекты на Java. И я рад, что большинство разработчиков считает так же. Но про способ выполнения асинхронных операций — нет такого четкого мнения.
Coroutines использует далеко не каждый проект, во многих до сих пор используется RxJava по нескольким причинам.
Во-первых, из-за легаси кода в проекте. Ведь много проектов переписывалось с Java, и средство для выполнения асинхронных операций используется то же самое.
Во-вторых, страх использования нового инструмента в большом проекте или отсутствие знаний о нем.
А для того, чтобы пополнить ваши знания о coroutines, предлагаю к прочтению две интересные статьи.
В этой статье можно прочитать про то, как наилучшим образом использовать coroutines. Кратко, емко и с примерами кода.
Тут описаны самые частые ошибки при использовании coroutines. Ненужные async/await, suspend со скрытым dispatcher и несколько других. Все также с примерами и по делу.
А что используется у вас в проекте?
#разработка #статьи #опрос
Уверен, что многие используют Kotlin в своих проектах. Сегодня нет веских причин для того, чтобы писать новые проекты на Java. И я рад, что большинство разработчиков считает так же. Но про способ выполнения асинхронных операций — нет такого четкого мнения.
Coroutines использует далеко не каждый проект, во многих до сих пор используется RxJava по нескольким причинам.
Во-первых, из-за легаси кода в проекте. Ведь много проектов переписывалось с Java, и средство для выполнения асинхронных операций используется то же самое.
Во-вторых, страх использования нового инструмента в большом проекте или отсутствие знаний о нем.
А для того, чтобы пополнить ваши знания о coroutines, предлагаю к прочтению две интересные статьи.
В этой статье можно прочитать про то, как наилучшим образом использовать coroutines. Кратко, емко и с примерами кода.
Тут описаны самые частые ошибки при использовании coroutines. Ненужные async/await, suspend со скрытым dispatcher и несколько других. Все также с примерами и по делу.
А что используется у вас в проекте?