Pull to refresh
2
0
Send message

Материалы с нижегородского Android-митапа. MotionLayout, Kotlin Coroutines, CI/CD инфраструктура и дизайн-системы

Reading time3 min
Views4.3K

Всем привет! В прошлую субботу, 29 февраля, прошёл наш первый митап для Android-разработчиков в Нижнем Новгороде. Спикеры выступали с докладами о создании красивых анимаций с помощью MotionLayout, Kotlin Coroutines, CI/CD инфраструктуре для Android и дизайн-системе Авито.


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


Total votes 11: ↑11 and ↓0+11
Comments0

Инкрементальный annotation proccesing для ускорения gradle-сборок

Reading time10 min
Views7.7K

image


Начиная с версий Gradle 4.7 и Kotlin 1.3.30 появилась возможность получить ускорение инкрементальной сборки проектов за счет корректной работы инкрементальной обработки аннотаций. В статье разбираемся, как в теории работает модель инкрементальной компиляции в Gradle, что нужно сделать, чтобы раскрыть весь ее потенциал (не лишаясь при этом кодогенерации), и какой прирост к скорости инкрементальных сборок может дать активация инкрементальной обработки аннотаций на практике.

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Как рассказать об основных компонентах Android за 15 минут

Reading time17 min
Views22K

Введение


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


Когда я попробовал сделать это первый раз, был неприятно удивлен собой. Мое "простое и понятное" объяснение превратилось в занудство, в рамках которого четко прослеживалась отчаянная попытка объять необъятное и рассказать в двух словах обо всем понемногу. Нужно ли говорить, что такой рассказ скорее не заинтересует, а напугает Вашего собеседника, попутно уменьшив желание сделать что-то свое, даже если раньше в планах был небольшой калькулятор.


Не секрет, что в Интернете размещено огромное количество статей на эту тему, но в моем случае повествование будет немного отличаться: здесь будет только наглядная практика, без определений и прочих деталей. То есть смотрим — видим — комментируем происходящее. Смотрится, на мой взгляд, все достаточно просто и наглядно, куски кода получились тоже небольшие и очень простые, готовые к быстрому использованию в собственном проекте. Мне кажется, такой подход дает достаточно широкую обзорную картину классических инструментов Android, и при написании первого приложения вместо вопросов "что мне использовать" будут более конкретные вопросы "как именно мне использовать компонент Х". А уже все подробности об этом человек сможет узнать сам — если захочет.

Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments1

Архитектор ПО: зачем он нужен и в чём его проклятие

Reading time4 min
Views20K
Гость нового выпуска подкаста «Сушите вёсла» — архитектор программного обеспечения Егор Тафланиди. Обсуждаем, что это за метафизическая роль такая, какие сложности есть в работе и при чём тут тёмные силы.

image

Артём Кулаков и Рома Чорыев — разработчики Redmadrobot. Они записывают ламповые подкасты, где вместе с гостями обсуждают разные стороны создания ИТ-продуктов. Ниже ссылка на новый выпуск и ответы на несколько насущных вопросов.

Total votes 15: ↑14 and ↓1+13
Comments3

Управление жестами: Обработка визуальных перекрытий. Часть 2

Reading time8 min
Views3.1K
В преддверии старта продвинутого курса по Android-разработке продолжаем делиться с вами серией полезных переводов.





Вы читаете вторую статью из серии об управлении жестами. Первую часть вы можете найти здесь.

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

В этой статье я буду ссылаться на такую вещь, как «UI системы». Именно так называется любой из интерфейсов системы, расположенный на экране, будь то панель навигации или строка состояния. Также в него входит панель уведомлений.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Разбор конкурса-квиза по Android со стенда hh.ru на Mobius 2019 Moscow

Reading time5 min
Views1.6K

7-8 декабря отгремела конференция для мобильных разработчиков Mobius 2019 Moscow. Доклады прочитаны, гости накормлены, призы разыграны, и вот перед вами разбор самых интересных вопросов из трех quiz’ов со стенда hh.ru.


Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments0

Android. Surface

Reading time12 min
Views11K

Дисклеймер


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


Почему в заголовке вынесен класс Surface? В android множество классов имеют в своем названии слово Surface (Surface, SurfaceHolder, SurfaceTexture, SurfaceView, GLSurfaceView) они не связаны общей иерархией тем не менее объединены низкоуровневой логикой работы с вывод изображений. Мне показалось разумным использовать его в названии чтобы подчеркнуть попытку раскрытия работы именно с этой частью SDK.

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments1

Android, Google и свободные лицензии на контент. Кто виноват и что делать

Reading time25 min
Views12K

История ещё одного бана.


Всем привет! Слышали ли вы когда-то про баны приложений и разработчиков в Google Play? Вот вам ещё одна такая история. Плюс попытка собрать в одном месте похожие случаи и предложить какой-то план действий по предотвращению произвола Google в этой области. Ибо нехорошо, когда тебя банят за легальное использование свободного материала. А мне лично нравится идея лицензий на контент типа CC BY-SA, которые разрешают любое оного использование, включая коммерческое. В частности, в том числе из-за такой лицензии, мы, разработчики, имеем такие прекрасные сайты как StackOverflow, где я даже модератором избран. К сожалению, такие компании как Google не уважают идеи, лежащие в основе таких лицензий. Вот вам моя история.

Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments51

Управление жестами: От края до края. Часть 1

Reading time6 min
Views5.9K
Всем привет. Специально для студентов продвинутого курса по Android-разработке подготовили перевод интересной статьи.




Это первая статья их серии «Управление Жестами». Другие статьи вы можете найти по ссылке.

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


Демонстрация новых жестов в Android Q

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

На большинстве устройств пользователи могут выбрать режим навигации на свой вкус. Существующий трехкнопочный режим навигации (состоящий из кнопок back, home, recents) тем не менее остается. Эта мера является необходимой для всех устройств версии Q и выше.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments2

Введение в контекстно-ориентированное программирование на Kotlin

Reading time9 min
Views11K
Это перевод статьи An introduction to context-oriented programming in Kotlin

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

Несколько слов о разрешении функций


Как хорошо известно, существует три основных парадигмы программирования (примечание Педанта: есть и другие парадигмы):

  • Процедурное программирование
  • Объектно-ориентированное программирование
  • Функциональное программирование
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments12

Как работает Flutter

Reading time18 min
Views59K


Как Flutter работает на самом деле?


Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..


Сложность: Новичок


Вступление


В прошлом году (прим: в 2018), когда я начал свое путешествие в сказочный мир Flutter, в Интернете было очень мало информации по сравнению с тем, что есть сегодня. Сейчас, несмотря на то, что уже написано много материалов, лишь небольшая их часть рассказывает о том, как на самом деле работает Flutter.


Что же такое Widgets (виджеты), Elements (элементы), BuildContext? Почему Flutter быстрый? Почему иногда он работает не так, как ожидается? Что такое деревья и зачем они нужны?


В 95% случаев при написании приложения вы будете иметь дело только с виджетами, чтобы что-то отображать на экране или взаимодействовать с ним. Но неужели вы никогда не задумывались, как вся эта магия работает внутри? Как система узнает, когда обновить экран и какие части должны быть обновлены?


Содержание:


Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments6

Аналитика и монетизация мобильных приложений для начинающего разработчика

Reading time6 min
Views9.3K


На GeekBrains в начале осени был запущен факультатив «Аналитика и монетизация мобильных приложений». Новое направление, действующее в рамках факультетов Android и iOS-разработки, стало востребованным — монетизация мобильных приложений становится все более актуальной. Появляется больше хороших приложений, полку разработчиков тоже прибывает. Соответственно, многие хотят зарабатывать на своих приложениях, но не всегда знают, как именно это сделать. Поговорим сегодня о том, с чего лучше начать.

Разобраться в вопросе помогает Анастасия Подорожная, специалист по мобильной разработке Appreal Group, которая является партнером курса GeekBrains и автором факультатива.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments4

Принцип открытости-закрытости

Reading time14 min
Views48K

Привет, Хабр! Перед вами перевод статьи Роберта Мартина Open-Closed Principle, которую он опубликовал в январе 1996 года. Статья, мягко говоря, не самая свежая. Но в рунете статьи дяди Боба про SOLID пересказывают только в урезанном виде, поэтому я подумал, что полный перевод лишним не будет.



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


  • Ни одну программу нельзя «закрыть» на 100%.
  • Объектно-ориентированное программирование (ООП) оперирует не физическими объектами реального мира, а понятиями — например, понятием «упорядочивание».
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments20

ActivityLifecycleCallbacks — слепое пятно в публичном API

Reading time9 min
Views10K


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

Однажды я решил почитать документацию к различным классам Android framework. Пробежался по основным классам: View, Activity, Fragment, Application, — и меня очень заинтересовал метод Application.registerActivityLifecycleCallbacks() и интерфейс ActivityLifecycleCallbacks. Из примеров его использования в интернете не нашлось ничего лучше, чем логирование жизненного цикла Activity. Тогда я начал сам экспериментировать с ним, и теперь мы в Яндекс.Деньгах активно используем его при решении целого спектра задач, связанных с воздействием на объекты Activity снаружи.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments9

Эволюция CI в команде мобильной разработки

Reading time15 min
Views13K
Сегодня большинство программных продуктов разрабатываются в командах. Условия успеха командной разработки можно представить в виде простой схемы.



Написав код, вы должны убедиться, что он:

  1. Работает.
  2. Ничего не ломает, в том числе код, который написали ваши коллеги.

Если оба условия выполняются, то вы на пути к успеху. Чтобы легко проверять эти условия и не сворачивать с выгодного пути, придумали Continuous Integration.

CI — это рабочий процесс, при котором вы как можно чаще интегрируете свой код в общий код продукта. И не просто интегрируете, а еще и постоянно проверяете, что все работает. Так как проверять нужно много и часто, стоит задуматься об автоматизации. Можно все проверять на ручной тяге, но не стоит, и вот почему.
Total votes 45: ↑45 and ↓0+45
Comments3

Делаем рейтинг городов России по качеству дорог

Reading time9 min
Views20K


В очередной раз проезжая на машине по родному городу и объезжая очередную яму я подумал: а везде ли в нашей стране такие «хорошие» дороги и решил — надо объективно оценить ситуацию с качеством дорог в нашей стране.
Читать дальше →
Total votes 87: ↑87 and ↓0+87
Comments56

Видео с Android Kolesa Mobile: о модульной разработке, backend driven UI и continuous integration

Reading time2 min
Views3.4K
Привет, Хабр! Публикуем видеозапись с третьего Android Kolesa Mobile – встречи для мобильных разработчиков.

В роли спикеров выступили наши коллеги и представители компаний Avito.ru, Chocolife и Noble Applications. Под катом — фото, слайды и записи докладов. Приятного просмотра!


Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

Continuous integration в Яндексе. Часть 2

Reading time11 min
Views12K

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


Сегодня мы расскажем читателям Хабра про устройство системы непрерывной интеграции.


image


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

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments3

Видео докладов с MOSDROID #13 Aluminium

Reading time1 min
Views3.2K


В субботу 10-го ноября на площадке FunCorp прошёл MOSDROID #13 Aluminium. На митапе было 5 докладов от спикеров из Яндекс.Такси, Lamoda, FunCorp, Joom и Сбертеха, видео которых уже доступны к просмотру.

«Эволюция планировщиков задач», Алексей Макаров, FunCorp



Total votes 19: ↑19 and ↓0+19
Comments1

Continuous integration в Яндексе

Reading time10 min
Views36K

Поддержка огромной кодовой базы с одновременным обеспечением высокой производительности большого числа разработчиков — это серьезный вызов. В течение последних 5 лет в Яндексе идет разработка особой системы непрерывной интеграции. В данной статье мы расскажем про масштаб кодовой базы Яндекса, про перенос разработки в единый репозиторий с trunk-based подходом к разработке, про то, какие задачи должна решать система непрерывной интеграции для эффективной работы в таких условиях.



Много лет назад в Яндексе никаких особенных правил в разработке сервисов не было: каждый отдел мог использовать любые языки, любые технологии, любые системы деплоя. И как показала практика, такая свобода не всегда помогала двигаться вперед быстрее. В то время для решения одних и тех же задач часто существовало несколько собственных или open-source разработок. С ростом компании такая экосистема работала всё хуже. При этом мы хотели остаться одним большим Яндексом, а не разделиться на множество независимых компаний, потому что это дает массу преимуществ: много людей делают одни похожие задачи, результаты их труда можно использовать повторно. Начиная от разнообразных структур данных, типа распределённых хеш-таблиц и lock-free очередей, и заканчивая множеством разного специализированного кода, который мы написали за 20 лет.

Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments100
1
23 ...

Information

Rating
Does not participate
Registered
Activity