Здравствуйте!
Разрабатываю мобильные приложения для Android. Через меня проходит большое количество новостей из мира технологий, которым хочется делиться и высказывать мнение.
Канал будет интересен тем, кто работает в области IT и мобильных технологий, а также интересуется ей.
Подписывайся, будет интересно.
Разрабатываю мобильные приложения для Android. Через меня проходит большое количество новостей из мира технологий, которым хочется делиться и высказывать мнение.
Канал будет интересен тем, кто работает в области IT и мобильных технологий, а также интересуется ей.
Подписывайся, будет интересно.
Как найти работу новичку?
#собеседование
Что нужно для работодателя? Важен ли диплом? Где найти работу? Что спрашивают на собеседовании? Попробую ответить на эти и другие вопросы.
Подобные вопросы часто возникают у человека после окончания вуза или если он решает сменить деятельность на сферу разработки ПО. Хочу поделиться опытом и мнением.
http://telegra.ph/Kak-najti-rabotu-novichku-11-16
#собеседование
Что нужно для работодателя? Важен ли диплом? Где найти работу? Что спрашивают на собеседовании? Попробую ответить на эти и другие вопросы.
Подобные вопросы часто возникают у человека после окончания вуза или если он решает сменить деятельность на сферу разработки ПО. Хочу поделиться опытом и мнением.
http://telegra.ph/Kak-najti-rabotu-novichku-11-16
Telegraph
Как найти работу новичку?
Работодателю важен один момент: нанимаемый сотрудник решает поставленные задачи быстро и профессионально. Понятно, что вопросы качества и скорости невозможно отнести к человеку без опыта. Следовательно, для понимания профессиональной пригодности, необходим…
Каждую неделю я буду публиковать топ статей, которые меня заинтересовали. Начну эту традицию с сегодняшней подборки:
#статьи #medium
1) Создание анимации кнопки "лайк", похожей на Instagram, используя StateListAnimators. -(5 минут)
В большинстве приложений, эта кнопка просто меняет состояние. Статья поможет вам выделиться на фоне этих приложений и добавит чуть больше анимаций в проект.
https://android.jlelse.eu/using-statelistanimators-to-create-instagram-like-animation-db2676c9391
2) Красивые анимации, созданные при помощи ConstraintLayout. - (6 минут)
Статья расскажет о использовании TransitionManager для достаточно красивых и простых анимаций
https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3
3) Стресс-тестирование своего приложения. - (6 минут)
Говорится о том, что необходимо проверять при тестировании приложения. Хороший чек-лист, рекомендую делать его как минимум перед каждым релизом
https://medium.com/default-to-open/stress-testing-android-apps-601311ebf590
#статьи #medium
1) Создание анимации кнопки "лайк", похожей на Instagram, используя StateListAnimators. -(5 минут)
В большинстве приложений, эта кнопка просто меняет состояние. Статья поможет вам выделиться на фоне этих приложений и добавит чуть больше анимаций в проект.
https://android.jlelse.eu/using-statelistanimators-to-create-instagram-like-animation-db2676c9391
2) Красивые анимации, созданные при помощи ConstraintLayout. - (6 минут)
Статья расскажет о использовании TransitionManager для достаточно красивых и простых анимаций
https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3
3) Стресс-тестирование своего приложения. - (6 минут)
Говорится о том, что необходимо проверять при тестировании приложения. Хороший чек-лист, рекомендую делать его как минимум перед каждым релизом
https://medium.com/default-to-open/stress-testing-android-apps-601311ebf590
Что изучать в начале карьеры Android-разработчика? Делюсь полезными библитеками, с которых стоит начать карьеру.
#статьи #библиотеки #разработка
http://telegra.ph/CHto-izuchat-v-nachale-karery-Android-razrabotchika-11-27
#статьи #библиотеки #разработка
http://telegra.ph/CHto-izuchat-v-nachale-karery-Android-razrabotchika-11-27
Telegraph
Что изучать в начале карьеры Android-разработчика
В начале разработки под Android, у многих возникает вопрос: что нужно изучать, с каких шагов начать путь разработчика. Из моего опыта, могу дать несколько советов, которые помогут в написании кода и работы в команде. 1. Используйте библиотеки. У новичков…
Хочу рассказать о полезной вещи как паттерны. Паттерн — это шаблон, который помогает правильно организовать код и который известен другим разработчикам, что не вносит неопределенности при работе в команде. Паттерны, как и архитектура, организуют код, делают его понятным. Только важно помнить, что все хорошо в меру и не стоит применять их «для галочки».
Первый, и самый простой #паттерн — это паттерн Builder. Наиболее известный пример — StringBuilder. Реже используются FloatBuffer, IntBuffer. Идея состоит в том, что для создания какого-то объекта, имеющего много свойств не создается отдельный конструктор, а вместо этого делается цепочка из методов, каждый из который возвращает объект с примененным в этом методе свойством.
Пример: представьте себе программу, которая создает для вас игроков для стратегии. Каждый игрок имеет определенные свойства: пол, вес, возраст, цвет волос, национальность. Вместо описания всех этих свойств сразу, мы можем задавать параметры шаг за шагом, до тех пор, пока не создадим персонажа. По такой же схеме работает и Builder.
Первый, и самый простой #паттерн — это паттерн Builder. Наиболее известный пример — StringBuilder. Реже используются FloatBuffer, IntBuffer. Идея состоит в том, что для создания какого-то объекта, имеющего много свойств не создается отдельный конструктор, а вместо этого делается цепочка из методов, каждый из который возвращает объект с примененным в этом методе свойством.
Пример: представьте себе программу, которая создает для вас игроков для стратегии. Каждый игрок имеет определенные свойства: пол, вес, возраст, цвет волос, национальность. Вместо описания всех этих свойств сразу, мы можем задавать параметры шаг за шагом, до тех пор, пока не создадим персонажа. По такой же схеме работает и Builder.
Топ статей с Medium по Android-разработке за неделю.
#статьи #medium
1) Описание многопоточности в RxJava 2. — (12 минут)
Эта библиотека для многих, (в том числе и для меня) незаменимым инструментом для работы с сервером, API, доступом к БД. Автор очень подробно описывает операторы для многопоточности в RxJava, разницу между thread pool, которые в ней используются.
https://blog.gojekengineering.com/multi-threading-like-a-boss-in-android-with-rxjava-2-b8b7cf6eb5e2
2) Knowledge boost for junior Android developers. — (6 + 6 минут)
Список компонентов, инструментов, приемов и библиотек, который полезно знать и учитывать всем разработчикам. Некоторые моменты статьи спорные и требуют изучения. Но хорошо, когда прочитанная статья заставляет изучить какую-то тему. Читайте, устраняйте свои пробелы.
https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-i-b3250fe4b622
https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-ii-e62ae5154160
3) Побитовые операторы. — (3 минуты)
Хорошо, с графиками и наглядно автор описывает применение побитовых операторов в разработке. Рекомендую изучить, особенно если ваши знания по этой теме давно не обновлялись.
https://android.jlelse.eu/java-when-to-use-n-8-0xff-and-when-to-use-byte-n-8-2efd82ae7dd7
#статьи #medium
1) Описание многопоточности в RxJava 2. — (12 минут)
Эта библиотека для многих, (в том числе и для меня) незаменимым инструментом для работы с сервером, API, доступом к БД. Автор очень подробно описывает операторы для многопоточности в RxJava, разницу между thread pool, которые в ней используются.
https://blog.gojekengineering.com/multi-threading-like-a-boss-in-android-with-rxjava-2-b8b7cf6eb5e2
2) Knowledge boost for junior Android developers. — (6 + 6 минут)
Список компонентов, инструментов, приемов и библиотек, который полезно знать и учитывать всем разработчикам. Некоторые моменты статьи спорные и требуют изучения. Но хорошо, когда прочитанная статья заставляет изучить какую-то тему. Читайте, устраняйте свои пробелы.
https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-i-b3250fe4b622
https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-ii-e62ae5154160
3) Побитовые операторы. — (3 минуты)
Хорошо, с графиками и наглядно автор описывает применение побитовых операторов в разработке. Рекомендую изучить, особенно если ваши знания по этой теме давно не обновлялись.
https://android.jlelse.eu/java-when-to-use-n-8-0xff-and-when-to-use-byte-n-8-2efd82ae7dd7
Уже несколько раз за время своей практики разработчика, встречаю один неприятный момент — RTL-языки (right-to-left, те языки, который пишутся справа-налево). Если пишите приложение для большого количества пользователей из разных стран - попробуйте поменять язык телефона на фарси и посмотрите, не появились ли аномалии в верстке.
Из опыта скажу, какие баги встречал:
1) LinearLayout. Один из самых распространенных элементов для верстки по умолчанию работает не очень хорошо с фарси. Если не выставлять нужные gravity у него верно, то получите кашу в своем. У RelativeLayout тоже есть проблемы, но опять же смотрите на gravity, layout_toLeftOf и подобные. С новомодным ConstraintLayout в этом плане проблем меньше,
2) Строки. Одной из задач, которую я делал — был показ счета команд. Выяснилось, что приходящие строки приходили верно, но по причине того, что строка была из цифр, латинских букв и фарси — она начала отображаться неверно, что было критично.
3) Календарь. Форматтер в фарси присылал день на один меньше, чем на самом деле. Проблема решилась тем, чтобы выводить дату в английской локали.
Иными словами — обязательно смотрите, как выглядит ваше приложение в RTL-локалях.
Из опыта скажу, какие баги встречал:
1) LinearLayout. Один из самых распространенных элементов для верстки по умолчанию работает не очень хорошо с фарси. Если не выставлять нужные gravity у него верно, то получите кашу в своем. У RelativeLayout тоже есть проблемы, но опять же смотрите на gravity, layout_toLeftOf и подобные. С новомодным ConstraintLayout в этом плане проблем меньше,
2) Строки. Одной из задач, которую я делал — был показ счета команд. Выяснилось, что приходящие строки приходили верно, но по причине того, что строка была из цифр, латинских букв и фарси — она начала отображаться неверно, что было критично.
3) Календарь. Форматтер в фарси присылал день на один меньше, чем на самом деле. Проблема решилась тем, чтобы выводить дату в английской локали.
Иными словами — обязательно смотрите, как выглядит ваше приложение в RTL-локалях.
Частым форматом для обмена между сервером и клиентом является JSON. Обычно, разработчики пользуются библиотеками для парсинга, например Gson. Для того, чтобы использовать её, необходимо сгенерировать POJO-файл с указанием необходимых полей для сереализации.
Для их генерации можно использовать сайты-генераторы (http://www.jsonschema2pojo.org/), которые на выходе дают текст этого файла. Данный сайт достаточно неплохое решение, но не так давно я обнаружил средство, которое ускоряет создание подобных файлов.
Это средство — RoboPOJOGenerator. Оно представляет из себя #плагин для Android Studio, которые позволяет в несколько кликов получить POJO-файл, включенный в проект и полностью готовый для использования. Это избавляет от необходимости ручного создания файлов. Также, генератор полностью совместим с Kotlin, поддерживает несколько популярных библиотек для парсинга.
Оптимизация подобных процессов ускоряет рабочий процесс и избавляет от рутинных действий.
Для их генерации можно использовать сайты-генераторы (http://www.jsonschema2pojo.org/), которые на выходе дают текст этого файла. Данный сайт достаточно неплохое решение, но не так давно я обнаружил средство, которое ускоряет создание подобных файлов.
Это средство — RoboPOJOGenerator. Оно представляет из себя #плагин для Android Studio, которые позволяет в несколько кликов получить POJO-файл, включенный в проект и полностью готовый для использования. Это избавляет от необходимости ручного создания файлов. Также, генератор полностью совместим с Kotlin, поддерживает несколько популярных библиотек для парсинга.
Оптимизация подобных процессов ускоряет рабочий процесс и избавляет от рутинных действий.
Хотел бы рассказать о нескольких удобных приёмах взаимодействия с приложением после поворота экрана. Чаще всего начинающие разработчики пользуются встроенными средствами — методы onSaveInstanceState и onRestoreInstanceState. При этом приходится писать достаточно много шаблонного кода. Описанные #библиотеки позволят уменьшить написание подобного кода и улучшить его читаемость.
1) Moxy. Отлично применима для MVP-паттерна, сохраняет состояние View в выделенную область — ViewState. Сохраняет свое состояние после пересоздания Activity и заметно облегчает работу.
2) Icepick. Позволяет сохранить состояние полей. Достаточно одной аннотации и поле не удалится после поворотов экрана.
1) Moxy. Отлично применима для MVP-паттерна, сохраняет состояние View в выделенную область — ViewState. Сохраняет свое состояние после пересоздания Activity и заметно облегчает работу.
2) Icepick. Позволяет сохранить состояние полей. Достаточно одной аннотации и поле не удалится после поворотов экрана.
В конце каждого года, Google и Apple публикуют рейтинг лучших приложений из официальных магазинов. Интересно наблюдать за теми трендами, которые присутствуют у пользователей смартфонов.
Любопытно, что несмотря на все попытки запретить Telegram, он стал одним из наиболее скачиваемых приложений и трендов года.
Google Play: https://play.google.com/store/apps/editorial_collection/promotion_topic_3002d08_apps_TP_bestof2017
Apple Store: https://developer.apple.com/app-store/best-of-2017/trends-of-the-year/
Любопытно, что несмотря на все попытки запретить Telegram, он стал одним из наиболее скачиваемых приложений и трендов года.
Google Play: https://play.google.com/store/apps/editorial_collection/promotion_topic_3002d08_apps_TP_bestof2017
Apple Store: https://developer.apple.com/app-store/best-of-2017/trends-of-the-year/
Как оценить разработку проекта?
#планирование #книги
При работе важно правильно планировать ресурсы и скорость разработки. От этого зависит как репутация, так и качество продукта.
В идеальном мире разработка проекта протекает примерно так:
• есть детализированное ТЗ, где четко описаны требования к проекту;
• тимлид четко понимает все особенности проекта;
• тимлид уверен в том, насколько хорошо сотрудники квалифицированы;
• сотрудники не заболевают, не пропускают рабочик дни, всегда одинаково работают, с постоянной скоростью.
Уверен, что многим известна другая тенденция. Заказчики часто просят «сделать небольшую правку», которая не входит в ТЗ. У разработчиков появляются баги, которые необходимо править. При этом проект может быть не полностью понятен и в начале разработки есть неопределенность. Тут и возникает необходимость правильного планирования.
Для того, чтобы понять, как правильно планировать разработку и ежедневные дела, рекомендую к прочтению книгу Максима Дорофеева «Джедайские техники». Автор долгое время работал в сфере IT, и его советы очень хорошо подходят разработчикам. По ссылке вы увидете рекомендации автора по планированию спринтов, используя Agile методологию. Уверен, что описываемые вещи очень помогут менеджерам, тимлидам, фрилансерам в верной оценке проекта.
http://mnogosdelal.ru/slidecasts/project-estimation/
#планирование #книги
При работе важно правильно планировать ресурсы и скорость разработки. От этого зависит как репутация, так и качество продукта.
В идеальном мире разработка проекта протекает примерно так:
• есть детализированное ТЗ, где четко описаны требования к проекту;
• тимлид четко понимает все особенности проекта;
• тимлид уверен в том, насколько хорошо сотрудники квалифицированы;
• сотрудники не заболевают, не пропускают рабочик дни, всегда одинаково работают, с постоянной скоростью.
Уверен, что многим известна другая тенденция. Заказчики часто просят «сделать небольшую правку», которая не входит в ТЗ. У разработчиков появляются баги, которые необходимо править. При этом проект может быть не полностью понятен и в начале разработки есть неопределенность. Тут и возникает необходимость правильного планирования.
Для того, чтобы понять, как правильно планировать разработку и ежедневные дела, рекомендую к прочтению книгу Максима Дорофеева «Джедайские техники». Автор долгое время работал в сфере IT, и его советы очень хорошо подходят разработчикам. По ссылке вы увидете рекомендации автора по планированию спринтов, используя Agile методологию. Уверен, что описываемые вещи очень помогут менеджерам, тимлидам, фрилансерам в верной оценке проекта.
http://mnogosdelal.ru/slidecasts/project-estimation/
«Пластилиновая» архитектура
#статьи #архитектура
Прочитал статью, в которой автор рассуждал о качестве кода, и как его получить в команде. В ней он упомянул понятие «пластилиновой» архитектуры.
«Пластилиновая» архитектура — структура приложения, в которой каждая новая фича куском приклеивается к текущему функционалу по принципу «лишь бы работало». Взамен получаем:
• сложно поддающийся тестированию продукт;
• всплывающие баги в уже готовом функционале;
• тяжелое внедрение новых фич;
• постоянный стресс команды и срыв сроков разработки.
Уверен, что при создании проекта очень важно проектирование. Опытным разработчикам нужно доносить до новичков правильные подходы к программированию, благодаря чему код проекта будет чистым и понятным.
#статьи #архитектура
Прочитал статью, в которой автор рассуждал о качестве кода, и как его получить в команде. В ней он упомянул понятие «пластилиновой» архитектуры.
«Пластилиновая» архитектура — структура приложения, в которой каждая новая фича куском приклеивается к текущему функционалу по принципу «лишь бы работало». Взамен получаем:
• сложно поддающийся тестированию продукт;
• всплывающие баги в уже готовом функционале;
• тяжелое внедрение новых фич;
• постоянный стресс команды и срыв сроков разработки.
Уверен, что при создании проекта очень важно проектирование. Опытным разработчикам нужно доносить до новичков правильные подходы к программированию, благодаря чему код проекта будет чистым и понятным.
Библиотека Rx сильно упрощает разработку приложений.
Появилась задача: нужно сделать одновременно два запроса, и выбрать тот, который вернётся первым. При этом каждый из запросов теоретически может возвратить невалидные значения или вообще не ответить.
Через Rx получилось красивое решение в несколько строк — через оператор
Уже не представляю создание приложений для Android без Rx в связке с lambda. Очень не хочется возвращаться к тому «callback hell», что был раньше.
Появилась задача: нужно сделать одновременно два запроса, и выбрать тот, который вернётся первым. При этом каждый из запросов теоретически может возвратить невалидные значения или вообще не ответить.
Через Rx получилось красивое решение в несколько строк — через оператор
Observable.amb() идет запрос к источникам, обработка же ошибок идет через onErrorResumeNext.Уже не представляю создание приложений для Android без Rx в связке с lambda. Очень не хочется возвращаться к тому «callback hell», что был раньше.
Использование сплэш-скринов в приложении
#разработка
Уверен, что любой пользователь сталкивался со сплэш-скрином в приложении. В основном, это логотип приложения, который появляется на пару секунд. Иногда отображается progressbar, сигнализирующий о загрузке приложения.
Бесспорно, наилучший вариант, когда этого экрана нет. При открытии приложения, нужно давать доступ к контенту настолько быстро, насколько это возможно. На практике такая возможность есть не всегда: например, нужно загрузить статические данные с сервера, без которых работа приложения невозможна.
Для стартового экрана часто используют
Для решения проблемы используйте
Итог: старайтесь избавиться от стартового экрана, но если это невозможно, то добавляйте его правильно.
#разработка
Уверен, что любой пользователь сталкивался со сплэш-скрином в приложении. В основном, это логотип приложения, который появляется на пару секунд. Иногда отображается progressbar, сигнализирующий о загрузке приложения.
Бесспорно, наилучший вариант, когда этого экрана нет. При открытии приложения, нужно давать доступ к контенту настолько быстро, насколько это возможно. На практике такая возможность есть не всегда: например, нужно загрузить статические данные с сервера, без которых работа приложения невозможна.
Для стартового экрана часто используют
Activity, на которой просто добавлена ImageView с логотипом. При этом появляется неприятный баг, который влияет на скорость показа контента: белый экран. Проверьте список приложений на своём телефоне — даже приложения с большим количеством пользователей забывают об оптимизации старта.Для решения проблемы используйте
layer-list, который состоит из фона и изображения. В итоге получаем опрятный и быстрый стартовый экран. Подробнее о правильном создании экрана можно прочитать по ссылке.Итог: старайтесь избавиться от стартового экрана, но если это невозможно, то добавляйте его правильно.
В последнее время мне очень нравится жанр интервью. Особенно интересны профессиональные интервью, в которых люди делятся опытом работы в каких-то больших проектах.
Из подобных разговоров можно взять полезные инструменты, а также избежать ошибки, которые допускались этим человеком. Ведь лучше учиться на ошибках других людей, чем на своих.
Не так давно слушал подкаст с командой Android-разработки приложения Badoo. Уверен, что каждый хоть немного, но слышал об этом приложении. Огромное количество пользователей, куча локалей и большая команда. Интересно было услышать то, как организуется работа с Git.
Интересен ли вам подобный формат? Хотелось бы видеть на канале интервью с опытными разработчиками, рассказывающими о своём опыте?
Из подобных разговоров можно взять полезные инструменты, а также избежать ошибки, которые допускались этим человеком. Ведь лучше учиться на ошибках других людей, чем на своих.
Не так давно слушал подкаст с командой Android-разработки приложения Badoo. Уверен, что каждый хоть немного, но слышал об этом приложении. Огромное количество пользователей, куча локалей и большая команда. Интересно было услышать то, как организуется работа с Git.
Интересен ли вам подобный формат? Хотелось бы видеть на канале интервью с опытными разработчиками, рассказывающими о своём опыте?
Топ статей из Medium
#статьи #medium
1) Определение скорости Интернета в приложении. — (5 минут)
Часто в приложении есть необходимость определить, есть ли подключение к Интернет или нет. Автор рассказывает о определении скорости Интернета, причем описывает несколько способов. Можно использовать для статистики и логирования.
https://android.jlelse.eu/designing-android-apps-to-handle-slow-network-speed-dedc04119aac
2) Описание ViewModels и LiveData. — (8 минут)
Недавно Google представила собственный взгляд на архитектуру приложений. Автор описывает о некоторых частях из компонентов архитектуры.
https://medium.com/google-developers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54
#статьи #medium
1) Определение скорости Интернета в приложении. — (5 минут)
Часто в приложении есть необходимость определить, есть ли подключение к Интернет или нет. Автор рассказывает о определении скорости Интернета, причем описывает несколько способов. Можно использовать для статистики и логирования.
https://android.jlelse.eu/designing-android-apps-to-handle-slow-network-speed-dedc04119aac
2) Описание ViewModels и LiveData. — (8 минут)
Недавно Google представила собственный взгляд на архитектуру приложений. Автор описывает о некоторых частях из компонентов архитектуры.
https://medium.com/google-developers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54
Знаете ли вы, что сейчас около 0,68% всех и около 8% топовых приложений, опубликованных в Google Play, используют Kotlin? Это такие приложения, как: Сбербанк, Twitter, Pinterest, Netflix.
Учитывая небольшой возраст этого языка и большое количество приложений в Google Play — это достаточно весомая цифра. Только некоторые преимущества:
• полная совместимость с Java;
• уход от NullPointerExceptions;
• интеграция в Android Studio;
• официальная поддержка Google;
• меньше кода;
Уверен, настанет день, когда все приложения будут написаны на Kotlin. И не вижу причин не писать новые приложения на нем.
Учитывая небольшой возраст этого языка и большое количество приложений в Google Play — это достаточно весомая цифра. Только некоторые преимущества:
• полная совместимость с Java;
• уход от NullPointerExceptions;
• интеграция в Android Studio;
• официальная поддержка Google;
• меньше кода;
Уверен, настанет день, когда все приложения будут написаны на Kotlin. И не вижу причин не писать новые приложения на нем.