DiscoverAndroid story
Android story

Android story

Author: Vova and Vova

Subscribed: 7Played: 39
Share

Description

Двое андроидщиков, двое Вов и иногда два разных мнения. Каждый подкаст мы обсуждаем новые статьи и просто новинки в мире андроида и программирования. Делимся мнениями, опытом и иногда пытаемся несмешно шутить.
36 Episodes
Reverse
Мы продолжаем общаться о плохих практиках. В этот раз прошлись и по архитектуре, и по тестам, и по организации работы.00:01:14 -  MVVM\MVP Архитектура приложения, которое мы потом переписали  на Clean Architecture.00:26:31 - Эта штука в бете, но нам подойдёт.00:32:49 - Документация для лохов.00:38:16 - Мы "планируем" начать писать тесты и у нас нет времени на CI.00:46:42 - Наши тесты ничего не тестируют зато coverage больше 100%.00:52:13 - У нас архитектура по гуглу и medium. Делаем так как “правильно".Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Мы уже обсуждали как не нужно писать код на Kotlin. В этот раз мы решили сделать следующий шаг и поговорить о том, как архитектуру лучше не делать, потому что это тоже часто в разделе "наболело".01:05 - У всего должен быть интерфейс и мы делаем "на будущее".14:51 - Слоёв должно быть много, чтобы торт получился хорошим.  Presenter -> UseCase -> Repository -> DataSource -> Retrofit.29:44 - Слишком много и слишком мало мапперов.45:53 - UseCase не UseCase.49:19 - Существует только presenter, repository, usecase, mapper и на этом всё.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Приёмы объектно-ориентированного проектирования. Паттерны проектирования. Добро или зло. Польза или вред. В этом выпуске мы обсудили насколько до сих пор актуальны шаблоны описаны в этой известной книге, которую когда-то люди рекомендовали, наверное, каждому.  Правда, этот подкаст получился с большим количество переплетающихся подтем, поэтому timestamps достаточно примерные получились.01:54 - Что такое design pattern, шаблоны программирования. И нужны ли они сейчас?05:26 - Почему GoF Design Patterns могут навредить. + Общие проблемы туториалов для начинающих.18:44 - Конкретные patterns. Устарелые и те, что до сих полезны.  Visitor. 27:25 - Путаница с Factory Method и Abstract Factory.29:31 - Adapter и Proxy.33:14 - Обсуждаем общие проблемы объяснений patterns в доступных источниках.38:34 - Command.45:22 - Observer, Builder.46:27 - State, Strategy.48:50 - Надо ли спрашивать о GoF Pattern на собесах?53:00 - Оффтоп о старых мака и старый макосях.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
После многих обсуждений о том "как хорошо писать код" мы наконец-то дошли до "как его лучше не писать" и подобрали для вас наши нелюбимые шаблоны написания под Kotlin.00:00:41 - Extensions там где надо и не надо. А также override операторов.00:20:28 - Засорение global namespace функциями.00:27:05 - isInitialized у lateinit var.00:31:18 - infix функции настолько красивые, что их можно использовать везде?00:34:13 - import as.00:37:41 - Игнорируем стандартные методы. А также  обычный for vs stream (filter/map/etc).00:44:55 - var list = mutableList<Int>() :( 00:48:25 - Несколько блоков init на один класс.00:51:24 - Почему твоя функция такая тощая? Скорми ей ещё 20 аргументов.00:54:28 - Перемешиваем в кучу named и positional аргументы в функциях.00:58:00 - inline, noinline, crossinline.01:00:38 - data class и sealed class можно использовать неправильно.01:08:13 - Даже если платят за символы, то писать от лямбд .invoke() не надо.01:10:00 - companion object грустно без visibility modifiers.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Любой программист в своей жизни наверняка хоть раз, но задавался вопросом о том, как он может вырасти как специалист. Часто такое желание связано с возможным карьерным ростом, а иногда и с просто желанием развиваться. Мы, конечно же, не исключение и тоже не раз об этом вопросе размышляли. В этот раз мы решили наши мысли записать и поделиться с вами! 00:45 - Умение думать\понимать как и почему что-то работает.08:54 - Умение решать задачи, проблемы.21:37 - Знание технологии, фреймворков.32:53 - Алгоритмы\Структуры данных. Знание computer science.40:41 - Понимать зачем мы нужны компании.46:15 - Быть активным участником коммьюнити.52:28 - Обсуждаем пост от founder Dou и Djinni.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Мы продолжаем обсуждать пути попасть в IT для новых людей и в этот раз обсуждаем такие вещи, как стажировка\практика и как найти свою первую работу.01:10 - Стажировка\практика - что это и с чем едят.04:30 - Как попасть на первую работу\стажировку.11:08 - Что от вас ждут на стажировке.13:57 - Как остаться на работе после стажировки и стоит ли это делать.19:58 - Что делать после окончания стажировки.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Многие начинают новый год с обещаний научиться чему-то новому. В этом выпуске мы решили в честь этого обсудить разные методы обучения. В основном мы говорим о том, как научится программировать, но многие наши изречения актуальны и для других сфер.02:41 - Обучение в 2021м году. Что меняется?15:26 - Курсы (платные и бесплатные) и bootcamps. Как выбрать правильные?35:08 - Университеты. Плюсы и минусы в 2021.46:23 - Самообучение. Как им заниматься и какие ресурсы мы рекомендуем, чтобы начать изучать программирование.Эпизод о собеседованиях - ссылка.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Всех с новым годом! И в целом о чём этот выпуск очевидно с названия ;)Что было?01:19 - В этом году мы начали подкаст!03:50 - Android 11 и виджеты.06:59 - Flutter потерял в хайпе, а Kotlin Multiplatform наоборот набрала.11:06 - Мультимодульность стала нашим всем.14:55 - Отключаем Jetifier.17:28 - Kotlin 1.4 вышел.22:02 - ConstraintLayout 2.0.24:05 - Dagger2 и RxJava2 продолжают умирать.Что будет?25:55 - Подкаст в 2021м.26:54 - Android 12.27:57 - Jetpack Compose должен выйти (и возможно его переименуют).31:04 - Маленькая надежда на стабильность Kotlin Multiplatform.31:50 - Dagger2 и RxJava продолжат умирать.31:58 - AR/VR.35:22 - Наши цели на 2021й год.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Мы уже неоднократно затрагивали тему DI в андроид разработке, но решили, что нам не хватает всё же полноценного отдельного выпуска посвящённой это теме. Поэтому здесь мы поговорим об общих концепциях, а также затронем разные детали имплементации этого подхода.00:20 - Что такое Dependency Injection и зачем она нужна.07:45 - DI vs Service Locator.11:04 - Пишем DI сами! Без каких либо вспомогательный библиотек.22:58 - Dagger238:08 - Koin + Kodein.49:13 - Мультимодульность и DI.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Котлин Мультиплатформа - новая технология, на которую уже многие разработчики начали надеятся, как на решение многих проблем. Насколько она хороша, в каком сейчас состоянии и какие проблемы уже существуют - узнаете в этом выпуске.00:00:50 - Что такое Kotlin Multiplatform и как её можно применять.00:24:50 - Кто уже использует Kotlin Multiplatform.00:28:10 - Platform specific implementation чего-то.00:31:22 - Multiplaform библиотеки: Ktor и SQLDelight.00:44:33 - Проблемы с dependencies.00:47:27 - Concurrency.00:57:25 - Compose.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
AS-26: Motion Layout

AS-26: Motion Layout

2020-12-0650:37

Этот выпуск целиком и полностью посвящён MotionLayout. Многие люди начинали "на него молиться" ещё задолго до релиза, другие же до сих пор обходят стороной. Есть ли за что его боготворить и на какие проблемы можно натолкнуться - узнаете в этом подкасте!00:18 - Зачем нужны анимации?02:50 - Зачем MotionLayout?11:40 - Базовые факты о MotionLayout.13:50 - ConstraintSet в MotionLayout.17:57 - Transitions. OnClick, OnTouch.29:53 - KeyPositions, KeyAttributes, KeyCycles.40:00 - Баги.44:30 - Оффтоп о BetterTouchTool.47:34 - Интеграция motion layout с другими вью, которые отвечают за анимацию.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
ConstraintLayout 2.0 доступен уже достаточно давно и мы решили наверстать упущенное и обсудить его тоже. Кроме этого чтобы обсуждать что-то новое, то нужно хорошо понимать и старое - поэтому также в обсуждение попали и все старые возможности обычного ConstraintLayout. MotionLayout, к сожалению, в этот выпуск не попал в виду того, что обсуждение итак получилось достаточно большое. Ждите в следующих подкастах ;)00:00:35 - История появления ConstraintLayout и зачем он нужен. А также разговор о том, как вообще работает построение UI в Android.00:11:36 - Базовые constraints. Margins. Visibility и Constraints. Bias.00:17:54 - Circular position constraints. Size constraints и ratio.00:25:00 - Group и chains.00:30:22 - Barrier и Guidline. Optimizers.00:37:02 - ConstraintSet.00:38:59 - Flow и Virtual Layout.00:51:47 - Layer.00:53:49 - Оффтоп о Jetpack Compose и использование его для Desktop UI.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Мы заглянули под капот APK и решили поговорить о том, что мы там нашли. Также под обсуждение попал и сам процесс собирания build,00:23 - Быстрый ввод в то, что такое APK файл.04:21 - JVM. Зачем и как?  Bytecode.08:20 - Dalvik и ART, а также dex файлы.16:42 - Что происходит с ресурсами и манифестом.24:18 - D8 и R8.28:32 - Mutlidex и apk signing.30:47 - Оффтоп о впечатлениях от Playstation 5.Дополнительно ссылка на статью об этом, которую мы использовали - ссылка.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Мы попытались пройтись по большинству исторических моментов, что привели нас к такой жизни в 2020 году, где приходиться выбирать между MVVM и MVP. Обсудили популярные библиотеки, которые помогают в улучшенном виде реализовать эти архитектуры presentation layer в контексте андроида и даже попытались провести сами небольшое сравнение этих подходов.01:15 - Немного истории о появлении MVP vs MVVM и даже MVC в мире программирование и отдельно история развития паттернов в Android.13:31 - MVP и библиотека Moxy (как она работает, стратегии, кодген).24:04 - Ещё немного истории о MVVM и разнице с PM (Presentation Model). 26:01 - MVVM в Android: ViewModel и LiveData и немного о RxJava. А также небольшой оффтоп, где нас бомбит с того, насколько ужасно написаны примеры кода с LiveData у Google.40:31 - Databinding и полноценный MVVM.44:44 - MVP vs MVVM - сравнение в контексте android.55:52 -  Оффтоп о Playstation 5.Комментарии и пожелания можно оставлять в нашем телеграмм чате. 
Реактивное программирование стало де-факто решением многих проблем, особенно архитектурных, во многих сферах программирования. В этом выпуске мы немного обсудили историю его начала, а также как должны работать множество из его основных компонентов. В качестве основного примера мы выбрали RxJava, как самую популярную библиотеку в Android мире для реализации реактивщины. В связи с этим также поговорили и об актуальности данной библиотеки в наше время.00:48 - Functional Reactive Programming, а также немного истории и биографии Rich Hickey.08:47 - Pub/Sub (Publisher - Subscriber отношения).10:29 - Что такое Stream и как его можно изменять операторами?13:42 - Начало обсуждения RxJava и проблем, которые она решает (и её заставляют решать), а также что такое Observable, Single, Completable и Flowable.31:18 - Subjects и Processors.33:05 - ReactiveX API и его плюсы.34:45 - Решение проблем с threading с помощью RxJava: Schedulers и как они работают.41:53 - Как тестировать RxJava.48:04 - Есть ли смысл RxJava в 2020м году и нужно ли переходить на корутины.49:20 - Небольшой оффтоп о влиянии 15 собеседований в день на психику.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Кодогенерация встречается во многих популярных в андроид сообществе библиотеках. Но при этом достаточно мало людей пользуются этой технологией. В этом выпуске мы решили обсудить всё что связано с кодгеном и его применением (способы применения, минусы, библиотеки), а также поделиться нашим опытом в его использовании.00:25 - Что такое CodeGen.04:20 - Известные библиотеки, которые используют CodeGen. И немного оффтопа о DI и его истории.14:42 - Как работает CodeGen?24:19 - Минусы CodeGen и сравнение с Reflection.32:00 - Как мы используем CodeGen в своих проектах.39:44 - Annotation processor, KAPT и KSP.45:00 - JavaPoet и KotlinPoet. Что это и чем они классные и плохие.52:37 - Тестирование CodeGen.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
Собеседование - страшная, но иногда и увлекательная часть поиска новой работы. Нам уже неоднократно приходилось побывать "по обе стороны баррикад" и накопилось много мыслей о процессе в целом. В этом выпуске Android Story мы обсуждаем как мы видим идеальные собеседования, из каких этапов они могут состоять и что бы нам хотелось улучшить как можно быстрее.00:01:21 - Алгоритмы и структуры данных, а также насколько важны точные знания разных констант и особенностей языка.00:15:45 - Почему в FAANG компания так важны алгоритмы и структуры, а также есть ли смысл в задачках на логику на собеседованиях. 00:24:00 - System design на собеседованиях. Нужен ли и как его проводить?00:36:24 - Behavioural Q&A. Проблема глупых вопрос. Обсуждения того, кто у нас проводит behavioural часть и как обычно это происходит, а также насколько сильно эта часть должна влиять на исход собеседований. 00:46:36 - Technical Q&A или стандартные вопросы о языках, технологиях и библиотеках. Проблемы этих вопросов и как их правильно подобрать. Что мы считаем за важным спрашивать об Android, Java\Kotlin и стандартных технологиях.01:05:37 - Android Feature Implementation часть. Или по другому сессия лайв кодинга на собеседовании.01:06:55 - Тестовое задание. Почему у нас его так сильно ненавидят и возможно ли сделать его максимально "приятным" для людей, которые пытаются устроиться на работу.01:12:16 - Code review от кандидата как один из этапов собеседования.Дополнительная статья из которой мы брали типы собеседований - What To Expect For Your Virtual Android InterviewКомментарии и пожелания можно оставлять в нашем телеграмм чате.
В релиз ушёл kotlinx.serialization и его теперь можно спокойно подключать в ваш проект. Зачем он нужен, что в нём классного и как он выглядит на фоне gson и moshi мы обсудили в этом выпуске.Кроме этого мы решили обсудить извечную проблему "написать самому или подключить библиотеку". Когда лучше обойти новые библиотеки стороной, а когда вполне нормальная идея не делать миллионное решение проблемы, когда она уже давно решена? И много других вопросов и ответов уже здесь! 00:00:18 - kotlinx.serialization в релизе.00:25:12 - Начало обсуждения статьи Избегайте внедрения внешних библиотек в свой проект.00:27:53 - Влияние dependencies на размер приложения.00:35:07 - Сложность поддержки кода в связке с dependencies.00:38:57 - Время на изучение библиотеки.00:50:00 - Скорость сборки и её зависимость от библиотек.00:50:55 - Что если в библиотеке баги?00:53:27 - Уязвимости, которые привносят dependencies.00:55:10 - Поддержка библиотеки.00:57:17 - Присутствия библиотеки во всех слоях: нужно ли это ограничивать? 00:58:37 - Обращаем внимание на ограничения библиотеки.00:59:39 - Что если gradle файл с зависимостями становится слишком большим? 01:00:00 - Чек-лист вопросов перед внедрением библиотеки.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
JetBrains опубликовали планы по релизу новых версий Kotlin и рассказали что у них в приоритетах на ближайшее время. Всё, начиная от поддержки возможностей новых JVM до багфиксинга и нового синтаксиса - мы обсудили.Также бонусом мы попали на статью о Kotlin DSL, которая нам не понравилась, но зато дала возможность обсудить зачем вообще нужен DSL и как делать неправильно, а также действительно ли нужно переходить с Groovy на Kotlin для gradle.00:00:30 - Kotlin Roadmap00:40:56 - Kotlin DSL: Gradle scripts in Android made easyКомментарии и пожелания можно оставлять в нашем телеграмм чате.
Лаборатория Касперского опубликовала новую статью на Хабре под названием "Еще раз про многомодульность Android-приложений", которая нам очень понравилась и дала возможность очень детально обсудить множеств тем. Мы поделились нашим опытом перевода монолитных приложений в мультимодульные. Рассказали о проблемах, с которых сталкивались, а также сравнили наши решения с теми, что предложил автор статьи. Не обошлось, конечно же, и без небольшой критики, а также оффтопа, которого набралось на отдельную маленькую тему - scala и функциональное программирование в Котлин с jetpack compose.Ссылка на статью - "Еще раз про многомодульность Android-приложений"00:01:14 - Начало обсуждения статьи.00:02:54 - Причины использовать многомодульность.00:14:04 - Оффтоп о Scala и функциональном программировании в андроиде с jetpack compose.00:22:25 - Где хранить и как подключать модули.00:23:23 - Типы модулей (апп, фиче, кор, инжектор).00:30:22 - Более детально об injector модуле, как делать Components и как сделали мы.00:59:24 - Как делать dependency injection в мультимодульном проекте. Один подход на весь проект или каждый модуль абсолютно независим в выборе?01:05:24 - Навигация.01:09:53 - Resources (цвета, темы, strings, styles), когда у вас несколько модулей01:14:35 - JNI, а также дополнительно о том, где хранить и нужно ли хранить уже скомпилированные модули.01:17:51 - Ещё немного о функциональном программировании и Retrofit.01:24:25 - Базы данных и проблемы при мультимодульном подходе.Комментарии и пожелания можно оставлять в нашем телеграмм чате.
loading
Comments 
Download from Google Play
Download from App Store