Android Live 🤖 – Telegram
Android Live 🤖
5.28K subscribers
52 photos
1 video
800 links
Самые свежие новости, новинки и тренды Android от практикующего разработчика.


Автор: @al_gorshkov,
Чат: @android_live_chat
Личный блог: @al_gorshkov_blog

Рекламу не размещаю
Download Telegram
Channel photo updated
Уверен, что читающие меня разработчики стремятся делать максимально плавные интерфейсы, используя последние библиотеки и подходы.
Одним из инструментов, который помогает сделать такие интерфейсы являются анимации.
Хочу соединить наши знания о анимациях в несколько статей. Сегодня первая часть, связанная с RecyclerView.
#статьи #анимации

http://telegra.ph/Ozhivlyaem-Android-prilozhenie-CHast-1-RecyclerView-12-26
В последний год мне попадалось достаточно много интересных новостей, связанных с машинным обучением и искусственным интеллектом:

- Алиса от Яндекса;
- ИИ, который пишет музыку;
- беспилотные автомобили;
- подмена лиц в видео.

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

Хочу порекомендовать целый пласт полезной информации по машинному обучению. Тут и книги, и блоги, и лекции, и #статьи, разбитые по категориям и которые постоянно дополняются. Ну и конечно, всё бесплатно.
Возможно вам теперь не нужно думать о том, что изучить на новогодних праздниках.

https://github.com/terryum/awesome-deep-learning-papers
Сегодня последняя рабочая пятница. И в такой вечер, казалось бы, нужно отдыхать и готовиться к праздникам.
Но для тех кому скучно — попробуйте пройти короткий, но увлекательный тест от организаторов конференции MBLT dev: https://mbltdev.ru/ru/quiz.

Быстро справились?😁
​​Lite-версии приложения.
#разработка

На этой неделе в Тель-Авиве был Droidcoin, где на одном из выступлений, Facebook рассказал о своей будущей Lite-версии приложения.
Они утверждают, что следующий миллиард пользователей придет из развивающихся стран, при этом устройства, с которых пользователи будут заходить в приложения будут очень слабые, но имеющие свежую версию Android. В качестве примера они приводят устройство, произведеннное в 2017 году — InFocus Turbo 5.
Докладчик рекомендовал обращать внимание на размер приложения, размер кэша, хранилища и время запуска и потребление Интернета.
Помимо всего, он рекомендовал использовать библиотеку ReDex, которая после долгих манипуляций так и не применилась к моему приложению. Будем ждать, что недостатки устранят.
Ссылка на конференцию тут.
Даже если ваше приложение не ориентируется на международный рынок, помните, что существуют не только флагманы, на которых все работает быстро и плавно, а также не у всех пользователей безлимитный 4G Интернет.
Друзья, наша рубрика «Интервью с разработчиком» продолжается. Следующий респондент — Евгений Мацюк. Евгений — тимлид Android-команды в Лаборатории Касперского и опытный разработчик.

Хочу вовлечь в процесс опроса и вас, моих подписчиков. Вы можете задать интересующие вас вопросы, и самые интересные обязательно попадут в интервью.
​​Уже через несколько часов мы будем в Новом году. Так принято, что в последний день уходящего года, люди подводят итоги.

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

Хочу пожелать вам успехов в профессиональном плане: интересных проектов, понимающих заказчиков, меньше непредсказуемых багов и крутую команду, где вы будете расти постоянно. Я в вас верю, и все у вас получится!
А в жизни желаю вам побольше здоровья, осознанности и удовлетворенности жизнью. Пусть каждый день будет счастливым! 💥
​​Книги по программированию
#книги #мысли

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

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

Сейчас, когда хожу по книжному магазину, и на глаза попадается книга по Android-программированию, то у меня есть два критерия-минитеста в переводе и проверка на качество и профессионализм этой книги:
1) Activity переведено как Активность.
2) Intent переведено как Намерение.

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

Интересно, а как вы изучаете языки программирования? Согласны ли вы со мной, что изучать лучше по документации или Интернету, чем по книгам? Если хотите высказаться или обсудить, то пишите.
​​Нативная или кроссплатформенная разработка?
#разработка #мысли #вопрос

Представьте: вы работаете в команде, где создаются мобильные приложения. Поступает задача — создать новый экран на iOS и Android. Начинается работа:
- сделать дизайн;
- согласовать дизайн и внести коррективы;
- отдать в разработку программисту iOS и Android;
- отдать в тестирование две платформы;
- исправить баги;
- зарелизить.

Иногда бывают ситуации, что релиз нужно сделать одновременно.

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

Мое знакомство с кроссплатформенной разработкой произошло пару лет назад, когда планировался достаточно большой проект. Посмотрели в сторону Xamarin, который позволял создавать приложения для Android, iOS и Windows Phone. Почитав документацию и начав разработку, выяснилось, что продолжать создание этого проекта невозможно: появляются краши, которые непонятно как исправить из-за небольшого сообщества разработчиков; многие вещи по-прежнему нужно писать на три платформы в отдельности, экономия по времени небольшая.

Не так давно я увидел Flutter. Это SDK от Google, который позволяет создавать одновременно приложения на Android и iOS. В основе лежит язык Dart. Пока этот проект в alpha-режиме, поэтому страшно использовать его для коммерческих и больших проектов. Хотя уже сейчас есть несколько опубликованных проектов в Google Play и Apple Store.

Мое отношение к кроссплатформенной разработке сейчас такое же, как на картинке: если требуется создать что-то сложное и постоянно дорабатываемое, то без нативной разработки не обойтись. Сейчас нативная разработка позволяет сделать все, учитывая особенности операционной системы. Если же нужно создать что-то простое, типа «вывести список с сайта», то стоит смотреть в сторону кроссплатформенности для удешевления разработки.

А что вы думаете по поводу нативной и кроссплатформенной разработки? Будет ли в будущем нативная разработка или ее вытеснит кроссплатформенная? Делитесь своим опытом и мыслями, которое позже опубликую тут.
Видели альтернативный Telegram для Android?

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

Прям вдохновился внедрять больше красивых, плавных анимаций в свои проекты. Как вам клиент?
​​Выступления для программистов

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

- выступайте только тогда, когда хотите выложиться полностью, когда четко понимаете, о чем говорите;
- хороший доклад — это стендап, научно-популярное шоу, кино и Колизей (вопросы могут быть крайне неожиданными, и на них надо быть готовым ответить);
- не дублируйте то, что написано на слайде. При этом, на слайде должно быть написано мало. Хороший пример — манга и комиксы. Узнал про редактора Ольминского;
- стимулируйте фидбек, который можете получить до выступления и после;
- всегда перепроверяйте и перестрахуйте все моменты, связанные с техникой. То, что может сломаться, и даже не может, обязательно сломается в самый важный момент, за минуту до выступления!

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

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

«Как раз недавно изучал тему кроссплатформы. Смотрел на React Native. Он позволяет с помощью одного кода создавать нативный UI под разные платформы (в отличие от PhoneGap, Ionic и т.д., которые создают UI через html). React Native используется в Facebook, Instagram, AirBnB, Skype. У них есть блоги где расписано, как его используют, но по сути у всех это несколько экранов в основном приложении. Кроме того, есть Kotlin Native, но пока он позволяет шарить между платформами только бизнес-логику, о UI речь не идет. Выводы примерно такие же — если нужно быстро сделать небольшой проект, то да. Если что-то посерьезнее — лучше native пока ничего нет.»
​​Топ статей из Medium
#статьи #medium

1) Безопасность Android-приложения. — (10 минут)
Автор делится своими мыслями о безопасности приложения. Написано очень подробно, плюс к этому основан на собственном опыте разработки. Куча советов о том, как проверить безопасность своего приложения и как лучше его защитить.
https://medium.com/@yonatanvlevin/bang-bang-you-have-been-hacked-df82db3f2001

2) Как настроить структуру gradle? — (4 минуты)
Статья о том, как лучше организовать структуру gradle файлов.
https://medium.com/mobiwise-blog/let-me-tell-you-how-you-should-build-your-gradle-structure-f13e368e00a4

3) Дизайн адаптивных иконок. — (6 минут)
Рассказ о том, как создавать и применять адаптивные иконки приложений. Почерпнул для себя несколько полезных ресурсов, где можно быстро потестировать свои иконки.
https://medium.com/google-design/designing-adaptive-icons-515af294c783
60 fps повсюду
#библиотека

Каждый разработчик хочет, чтобы интерфейс его приложения выглядел максимально плавным.
Одним из показателей плавности интерфейса является показатель 60 fps.

Почему именно столько кадров хорошо, можно посмотреть тут. Как же понять, что в приложении действительно 60 fps, и нет сильных просадок?

Для меня отличным решением стала библиотека Tiny Dancer. Очень простая в установке библиотека, добавляет на экран числовую и цветовую метрику, которая показывает текущий fps. Кроме того удобна в тестировании и ее можно отключать в runtime, если в подсчете нет нужды.
​​Material Cue
#разработка #приложение

Уверен, каждый из Android-разработчиков знаком с Material Design. Для того, чтобы понять, следует экран отступам и размерам, которые прописаны в Material, есть отличное приложение — Material Cue.

Оно представляет из себя сетку, которая накладывается поверх экрана, благодаря чему вы легко можете проверить, правильно ли расположены у вас элементы. Есть около 10 различных сеток, мне особенно поравилась та, что отвечает за пропорции изображения.

Здорово, что приложение полностью бесплатное и очень легкое. Рекомендую для использования.
​​Где лучше работать?
#мысли #вопрос 

Не так давно обсуждали с коллегами вопрос работы. Где лучше работать: в большой или в маленькой компании?

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

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

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

В маленькой компании или стартапе, человек ощущает себя свободнее.
В самом начале карьеры, я работал в небольшой компании, где было 4 Android-разработчика. Сначала я верстал небольшие view, потом правил не критичные баги. Со временем, под контролем лида я получал значимые задачи, а вскоре было полное доверие. Мне кажется, что в огромной компании я бы не получил подобного роста, причем настолько быстро.

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

А как вы считаете, где лучше работать программисту? Рассказывайте интересные или странные случаи ограничений, бюрократии или менеджерской работы, с которыми вы сталкивались, интересно узнать. Потом почитаем вместе тут.
Друзья, представляю вам следующее #интервью из нашей рубрики. Сегодня у нас на интервью Евгений Мацюк — тимлид Android-разработки в «Лаборатории Касперского».

Пообщались про архитектуру, поговорили про новые архитектурные компоненты от Google, о кроссплатформенной разработке и многом другом.
http://telegra.ph/Intervyu-s-razrabotchikom-Evgenij-Macyuk-Laboratoriya-Kasperskogo-01-10
​​Безопасность библиотек
#статьи

Вчера читал историю, в которой автор рассказал, как он легко воровал персональные данные пользователей. 

Он создал библиотеку, которая имела полезный функционал, но при этом отправляла данные с форм на сайте: пароли, номера карт, имена пользователей. При этом, зловред имел две особенности:
1) Не отправлял никаких данных между 7 утра и 7 вечера. Это значительно уменьшало шанс того, что отправку данных заметят. 
2) Если сайт запушен на локальном IP или домене, который содержал dev, test, qa, то не предпринималось никаких действий.

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

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

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

А. Ну и совет: проверяйте звездочки на GitHub!
В одном из чатов по Android обсуждался вопрос про тесты для разработчиков. Порекомедовали интересный ресурс.

Залип на этом ресурсе, здорово проверяет теорию. Кроме Android, есть много тестов по другим языкам программирования. Прошли больше 3 уровней с первого раза?
​​Кайдзен. Стратегия от японцев
#разработка #планирование

В прошлом веке, после Второй мировой войны, в Японии возникла философия кайдзен. Её смысл в том, что любое дело, которым ты занимаешься, нужно постоянно совершенствовать. Благодаря этому подходу, много японских компаний восстановились и стали лидерами в своей сфере. Философия подходит не только для производства, но и для жизни.

Основа состоит из 5 элементов, иначе 5S:
1) Seiri — аккуратность, сортировка. Нужно, чтобы на вашем рабочем месте остались только те вещи, которые используете. Важно убрать и очистить его от всякого хлама.
Мне кажется, что при разработке проекта и рефакторинге важно удалять ненужный код, а не комментировать его, надеясь, что он пригодится. В таком случае лучше взять из репозитория.

2) Seiton — порядок. Те вещи, которые остались, важно располагать на своем месте. Нужно, чтобы было удобно.
В разработке, важно правильно струкрурировать проект, не складировать все в одном месте и дробить функционал по классам и пакетам.

3) Seiso — чистота, уборка. Нужно всегда держать рабочее место в чистоте, выделять время на уборку, а не ждать конкретного захламления.
В кодинге выделяйте время на рефакторинг, очищайте проект от deprecated методов, обновляйте библиотеки.

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

5) Shitsuke — дисциплина, поддержка. Если описанные принципы уже есть в вашей жизни, то важно их поддерживать. Важно постоянное совершенствование.
Для программиста, важно постоянное развитие и обучение.

Эти принципы достаточно очевидны и логичны. Важно помнить, что чистота рабочего места, кода или рабочего стола на компьютере помогают наслаждаться работой.
Посмотрел доклад Максима Лапшина про опыт создания собственного продукта программистом. До своего бизнеса, он был веб-разработчиком.
Интересно было узнать о проблемах, которые возникли у автора.

• не нашлось подходящего решения для биллинга — советует писать все, что связано с приемом платежей самостоятельно.
• нужно ориентироваться на международный рынок — даже если там будет не столько же клиентов, сколько в России, это всё равно увеличит продажи
• продажа продукта по подписке — это хорошо — покупателю дешевле, а продавцу можно не продавать заново тем, кто покупал раньше, не рассказывать о правилах пользования этим продуктом. Экономия.
• партнерство может быть опасным — нужно подходить к этому осторожно, прописывать все детали выхода другого партнера из бизнеса.

Ну и куча других инсайтов. А, ну и ещё мысль: «Софт делает что-то, а продукт — решает проблему человека»