DroDev | Мобильная разработка: мысли вслух
461 subscribers
104 photos
229 links
Обсуждаю и рассказываю как сделать жизнь разработчика в команде интересной, легкой и продуктивной.

По всем вопросам @dilix90
Download Telegram
Обычно на протяжении недели приходит порядочное количество вакансий, большинство из которых типовые простыни об одном и том же.

Чем-то понравилась вакансия от QLean. Ищут синьора андроид, который будет ответственен за приложения с нуля. Про деньги не пишут, но, судя по описанию, либо должны хорошо платить, либо никого не найдут 😜 https://qlean.notion.site/Senior-Android-Developer-451c5e12f5d744f1a48ff6e13167a0f9
👍1
Только сейчас распробовал беспроводную отладку приложений, которая идет нативно с Android 11+.

Один раз "спарив" приложение со студией в знакомой сети будет работать само по себе при включении опции.

По ощущению деплоится чуть дольше, но отсутствие проводов - кайф. Особенно если разрабатываете на маке, на котором стандартный USB только через переходник.
👍1
Бесплатный митап Sber Mobile Meetup — 7 декабря, 17:00, онлайн

Сбер при поддержке JUG Ru Group проведет онлайн-митап для мобильных разработчиков. В программе — три доклада от специалистов, которые работают над сервисами Сбера:

– Андрей Попов — «Современный подход к анимациям в UICollectionView». Доклад об анимациях, применимых к коллекциям с помощью современных API в iOS SDK.
– Дмитрий Исаев — «Clean MMVM c Combine, SwiftUI в продакшене». Узнайте, как команда Сбера применила этот стек к большому объему бизнес-логики, вдохновившись Clean Code от дядюшки Боба Мартина.
– Андрей Данилов — «Как (не) ускорить сборку Android-проекта». Андрей расскажет, как не наступить на грабли при ускорении сборки: исправить порядок репозиториев зависимостей и найти альтернативы для неэффективных инструментов.

А еще вы сможете задать спикерам вопросы после докладов и пообщаться с коллегами в Spatial chat.

Участие бесплатное, нужно только зарегистрироваться. Ждем вас!
👍1
Бесплатный онлайн-митап для мобильных разработчиков от Luxoft и JUG Ru Group

16 декабря, 18:00 (Мск, GMT+3)

Программа митапа:
📌 Дмитрий Мовчан — «Гайд по выживанию в мире UI тестов»
Дмитрий поможет понять, какой тип UI-тестирования вам нужен, поговорит про типичные проблемы и пройдется по инструментам, которые помогут с ними справиться.

📌 Михаил Зотьев — «Как проходит развитие библиотеки Elementary»
Elementary — библиотека, позволяющая писать приложения на Flutter в стиле паттерна MVVM. Из доклада Михаила вы узнаете про основные концепты, преимущества и недостатки библиотеки.

📌 Евгений Сатуров — «Стелем мягкую соломку на жесткий Flutter»
Евгений поделится с сообществом базой лучших практик разработки Flutter-проектов. В основе его доклада — опыт, накопленный командой Surf почти за 3 года работы с Flutter.

А также вас ждут дискуссии после каждого доклада и розыгрыши брендированного мерча за лучший вопрос.

Участие бесплатное, нужно только зарегистрироваться!
👍2
Интересный момент. #Room после 2.4.0-alpha03 (может и чуть позже) требует, чтобы compileSdkVersion был не ниже 31.

Если вам нужен 30, то обновляться выше 2.4.0-alpha03 надо осторожно.

#Код
👍1🔥1
Я раньше лично с некоторыми ребятами из команды работал, т.ч. им можно доверять!

Удалённый Android-разработчик в компанию hi-Mobile.

Кто нам нужен:
Android-разработчик, который дополнит нашу команду и будет помогать нам развивать приложение по доставке продуктов на дом.
Обязательно сделаем так, чтобы вы могли комфортно интегрироваться в проект — подскажем, расскажем, поможем!
Нам не принципиально откуда вы, потому как можно работать удалённо. Процессы прозрачные, бюрократии нет.

Soft Skills для нас выше, чем Hard Skills!

О нас:
Мы маленькая, но прогрессивная команда мобильной разработки. Мы крепко дружим и делаем свою работу также хорошо, как и дружим. У нас за плечами (и в релизе) большие проекты, которые приносят людям пользу каждый день. У нас нет бюрократии и синдрома менеджера. Мы доверяем друг-другу и всегда помогаем.

Проекты, на которых мы выросли и в которых принимали значимое участие и запускали с нуля:
1. Моя Москва (госуслуги Москвы) — https://www.mos.ru/mobile/
2. ЦИАН (поиск недвижимости) — https://promo.cian.ru/apps
3. Гурманика (доставка еды) — https://gurmanika.ru
4. Smart (доставка продуктов) — https://smart.swnn.ru
5. Точка банк (проект для участия в тендерах) — https://play.google.com/store/apps/details?id=com.tochka.bank.tenders

Предстоящие основные задачи:
- Развитие нового функционала и поддержка существующего на Kotlin;
- Взаимодействие с дизайнерами и QA;
- Проведение code-review;

Обязательные требования:
- Опыт в разработке Android от 1 лет;
- Владение Java/Kotlin и Android SDK;
- Уверенные знания в RxJava;
- Знание шаблонов проектирования MVP, MVVM набор компонентов Android Jetpack, умение их применять;
- Опыт работы с DI-фреймворками;
- Опыт написания клиент-серверных приложений(retrofit, okhttp);
- Работа с VCS, gitflow;
- Понимание принципов Material Design;

График работы:
5/2, с 11 до 19 по Мск. Если у вас другой временной режим/временная зона, можем обсудить.

Условия:
150-170 тыс руб в месяц (на руки/на карту). Оплата 2 раза в месяц (аванс, зарплата). Отпуска и больничные оплачиваются. Минимум бюрократии.

Контакт для связи:
@Vlad_US
👍9
Google photo показал мне в подборке фото, сделанное 14 лет назад. Весь прикол его я понял только сейчас 😜
😁9
Прямо давно ничего не писал, пора исправлять.

И Кстати, через 25 минут начинается keynote Google I/O 2023:

https://io.google/2023/program/396cd2d5-9fe1-4725-a3dc-c01bb2e2f38a/
👍2
Весь Google I/O был пронизан тематикой AI.

Гениальную шутку встретил в инетах на эту тему
«I/O is deprecated, it's now Google A/I»

То, что напрямую касается Android прогера - в новой AS Hedgehod (Canary) поселился Studio Bot - ИИ помощник. Правда US only пока что.
🔥2
Google мощно продвигает Jetpack Compose как правильный способ делать UI.

Компоуз классный, но (особенно по началу) может вызывать неочевидные просадки в производительности приложения.

О том как правильно дебажить Compose рассказывали вчера на Google I/O:

https://www.youtube.com/watch?v=Kp-aiSU8qCU
2🤮1
Делал тут недавно один side проектик небольшой и там нужна была постраничная загрузка страниц.

Paging3 библиотека по идее делает что надо, но по факту придется завязываться на нее на всех слоях - от data до UI.

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

Итого возник вопрос - в проекте используете Paging(1/2/3) либу, или пишите сами ручками?
Пользуетесь Paging3 для постраничной загрузки?
Anonymous Poll
36%
Да, экономит время
34%
Нет, пишу всё сам
30%
Нет таких задач
🤮1
Игрался с плагином в AS, который показывает статистику по строкам кодам, файлам и т.д. в проекте.

В небольшом side проекте статистика показала, что суммарно строк кода в тестах больше, чем в файлах, которые тесты покрывают 🙂

Не покрытыми остались только Compose UI классы, но по факту их тоже стоит покрыть. Просто в Unit тестировании компоуза пока не разбирался - есть над чем работать.
👍3🤮3
В рамках google I/O был доклад как делать data layer:
https://io.google/2023/program/373ef4ca-1e69-4af4-ac21-f51b967c4742/

Не до конца согласен с разделением на Repository и DataSource.
DataSource по факту является таким же репозиторием. .
Предлагают реализовать DefaultTaskRepository, реализующий интерфейс TaskRepository.
При этом реализация внутри зависит от конкретных реализаций DataSource (локального хранилища и сети).

Я бы спрятал оба DataSource также за TaskRepository и DefaultTaskRepository использовал как прокси репозиторий.
В таком случае можно использовать любой TaskRepository и не менять логику основного репозитория. Например, если захочется переехать на другую БД или сделать in-memory зачем-то.
🤔3👎1
Впечатлило как #Compose из коробки поддерживает темную тему.

По факту для этого делать ничего и не надо. Вновь созданный проект использует Material из коробки и все базовые элементы уже приспособлены к смене темы 🔥
🔥2
Когда лучше закидывать пост в канал? (Можно выбрать несколько)
Anonymous Poll
32%
Утром
19%
Днем
25%
Вечером
19%
Будни
13%
Выходные
40%
Мне все равно
🥱3🤮1
А Key Promoter (плагин для AS) непхол, когда выполняешь какой-то экшн, подсказывает что для него есть хоткей.
2
Rainbow Brackets.
Классный плагин для AS, который подсвечивает скобки разным цветом.

Может звучать странно, но на самом деле визуально сильно помогает.
🔥6👍1🤮1
Смотрел примеры по навигации и поддержки разных форм-факторов на Compose.

Офф. пример JetNews:
https://github.com/android/compose-samples/tree/main/JetNews

Они используют NavComponent для верхнеуровневой навигации. Дальше, на home screen во viewModel держат текущий uIState:

data class HasPosts(
val postsFeed: PostsFeed,
val selectedPost: Post,
val isArticleOpen: Boolean,



В зависимости от размера экрана строят нужный compose.

По сути и лента и detailed page существуют в рамках одного «экрана» и на уровне UI решается как через Composable строить представление.

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

Или есть варианты интереснее?
👍2
Не самое очевидное применение Github Copilot.

В проекте есть дата классы на уровне общения с сервером. Надо было создать Sample Json из класса (в некоторых тестах, где то уже лежат разные части такого примера jsona).

Зашел в Data class, написал final val DemoResponseJsonDemo = и Copilot сам написал пример Jsona.

В следующем data классе достаточно было написать только final, чтобы Copilot понял что хочу пример Jsona.
👍11
Начал проходить собесы и в связи с фокусом на remote активно стал назначать созвоны.

Не могу не поделиться удобнейшей и бесплатной (в базе) тулзой Calendly.

Можно быстро выбрать удобные тебе слоты, скинуть ссылку и всё - профит. Человек сможет выбрать удобное для него время в его тайм зоне.
🔥7🤔21