В этом выпуске материалы про дизайн-системы, быструю доставку фич, подписку, законы UX, трудности локализации, про продвижение в Китае и даже создание магических книг. Подключайтесь!
![](https://habrastorage.org/r/w1560/webt/ox/dp/0m/oxdp0mg9orhp1w3htppf8ckeb44.png)
Когда в начале 2017 года мы впервые задумались о создании собственной системы доставки дизайна в код, об этом уже многие говорили и кто-то даже делал. Однако, об опыте построения кроссплатформенных дизайн-систем и по сей день мало что известно, а понятных и проверенных рецептов, описывающих технологии и способы подобной трансформации процесса имплементации дизайна в уже работающий продукт как не было, так и нет. В этой статье я на реальных примерах покажу, как мы действуем в таких ситуациях и какие принципы помогают нам сделать выбор в пользу того или иного решения задачи. Разбор примеров должен помочь понять наш паттерн мышления: каким образом можно иногда срезать углы, ускорив разработку.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• (+17) Адаптивный дизайн приложения под каждого пользователя
• (+14) Руководство по реализации авто-возобновляемых подписок в iOS-приложениях
• (+7) Три видео для тех, кто пишет под iOS
• (+7) Изучая Dependency Injection
• (+6) Emoji в интерфейсе iOS приложения и требования Apple
• (+3) Архитектурный шаблон «Строитель» во вселенной Swift и iOS/macOS
• (+2) Спокойствие спокойствию рознь
• iOS 13 будет предупреждать об удалении приложений с активной подпиской
•
Сканирование документов с Vision и VisionKit в iOS 13
•
Я позволил моему iOS-проекту превратиться в хаос
•
Как сделать чат-приложение на SwiftUI
•
Просмотр WWDC: разговор с бывшим руководителем Apple по апруву приложений
•
Привет, Combine
•
Почему iOS-разработчики чувствуют себя остановившимися в развитии и что делать
•
Создаем формы на SwiftUI
•
Добавляем Swift Package Dependency в iOS-проект с Xcode 11
•
Как удаление Swift-кода может сделать вас более ценным iOS-разработчиком
•
iOS 13 против Android Q: кто завоюет рынок?
•
Weather: погода и SwiftUI
Android
• (+4) Современный подход к конкурентности в Android: корутины в Kotlin
• Google отказался от планшетов
•
Создаем приложение для блокирования экрана Android
•
Пример Чистой архитектуры с Kotlin Multiplatform
•
Что ожидать от публикации первого приложения
•
Отзыв с одной звездой
•
Поисковый фильтр на Recycler View
•
Android Fragments: общие запросы и ошибки
•
Объяснение Android ConstraintLayout с помощью сложного UI
•
Используем материальные темы в кастомном View
Разработка
• (+19) Как мобильное приложение помогает студенту с проблемами со зрением передвигаться по Москве
• (+9) Восемь именных законов в UX дизайне (часть 2)
• (+9) Упрощаем рисование Enum Flags в Unity
• (+8) Эволюция разработчиков: каких игр нам ждать в будущем
• (+7) 4 трудности при локализации мобильных игр на примере Fishing Clash
• (+6) Безопасные push-уведомления: от теории к практике
• (+2) RectTransformUtility, или как сделать компонент, который анимированно сдвигает элементы UI за экран
• Mobile People Talks #6: WWDC 2019
• AppsCast #8: Flutter, руководство для начинающих
• Podlodka #116: Servant Leadership
• 25 примеров темного дизайна
• Начинаем работу с дизайн-системой
• Maginary. История создания магической книги с цифрами и инсайтами
•
Как начать программировать, когда вам за 30
•
SoundCloud: придумываем новый UX
•
Моя страна хочет отказаться от наличных, так что я сделал дизайн электронного кошелька
•
7 навыков эффективных программистов
•
Интегрируем Firebase Cloud Functions с Google Calendar API
•
Мой опыт создания первой игры на libGDX
•
BookSwap: исследование UX
•
Envoy Mobile: сетевой уровень
•
React Native UI Kitten: красивые компоненты для React Native
Аналитика, маркетинг и монетизация
• (+41) 40 лет адвергейминга — ретроспектива рекламных видеоигр
• (+9) Почему соревноваться лучше, чем зубрить: наш опыт геймификации обучения
• (+6) Чек-лист по ASO: как ничего не упустить
• Продвижение Age of Magic в Китае: кейс Mobvista
• Топовые издатели в App Store заработали на 65% больше
• Top Keywords: самые популярные поисковые запросы App Store и Google Play в разных странах
• Rec Room: виртуальные комнаты
• Стек ASO 2019
• В AppMetrica появились отчеты для отслеживания доходов приложения
• Как длина описания в Google Play влияет на конверсию в установки
• Wargaming открывает новое подразделение Nexus
• Как измерять, контролировать и поддерживать органический рост
•
FYI: шаблоны документов
AI, Устройства, IoT
• (+32) Перспективные AR/VR-стартапы: виртуальные свидания, хирургия и служба поддержки
• (+25) Несем IoT в массы: результаты первого IoT-хакатона от GeekBrains и Ростелекома
• (+21) Нейросети и глубокое обучение: онлайн-учебник, глава 1
• (+17) Интернет вещей по-русски. Baseband-отель LoRaWAN для владельцев RTL-SDR
• (+12) Прототипирование в VR: 5 способов проверить гипотезу
• Facebook выпустил фреймворк для роботов PyRobot
•
Python играет в Counter Strike GO
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/ox/dp/0m/oxdp0mg9orhp1w3htppf8ckeb44.png)
Когда в начале 2017 года мы впервые задумались о создании собственной системы доставки дизайна в код, об этом уже многие говорили и кто-то даже делал. Однако, об опыте построения кроссплатформенных дизайн-систем и по сей день мало что известно, а понятных и проверенных рецептов, описывающих технологии и способы подобной трансформации процесса имплементации дизайна в уже работающий продукт как не было, так и нет. В этой статье я на реальных примерах покажу, как мы действуем в таких ситуациях и какие принципы помогают нам сделать выбор в пользу того или иного решения задачи. Разбор примеров должен помочь понять наш паттерн мышления: каким образом можно иногда срезать углы, ускорив разработку.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• (+17) Адаптивный дизайн приложения под каждого пользователя
• (+14) Руководство по реализации авто-возобновляемых подписок в iOS-приложениях
• (+7) Три видео для тех, кто пишет под iOS
• (+7) Изучая Dependency Injection
• (+6) Emoji в интерфейсе iOS приложения и требования Apple
• (+3) Архитектурный шаблон «Строитель» во вселенной Swift и iOS/macOS
• (+2) Спокойствие спокойствию рознь
• iOS 13 будет предупреждать об удалении приложений с активной подпиской
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• (+4) Современный подход к конкурентности в Android: корутины в Kotlin
• Google отказался от планшетов
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• (+19) Как мобильное приложение помогает студенту с проблемами со зрением передвигаться по Москве
• (+9) Восемь именных законов в UX дизайне (часть 2)
• (+9) Упрощаем рисование Enum Flags в Unity
• (+8) Эволюция разработчиков: каких игр нам ждать в будущем
• (+7) 4 трудности при локализации мобильных игр на примере Fishing Clash
• (+6) Безопасные push-уведомления: от теории к практике
• (+2) RectTransformUtility, или как сделать компонент, который анимированно сдвигает элементы UI за экран
• Mobile People Talks #6: WWDC 2019
• AppsCast #8: Flutter, руководство для начинающих
• Podlodka #116: Servant Leadership
• 25 примеров темного дизайна
• Начинаем работу с дизайн-системой
• Maginary. История создания магической книги с цифрами и инсайтами
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• (+41) 40 лет адвергейминга — ретроспектива рекламных видеоигр
• (+9) Почему соревноваться лучше, чем зубрить: наш опыт геймификации обучения
• (+6) Чек-лист по ASO: как ничего не упустить
• Продвижение Age of Magic в Китае: кейс Mobvista
• Топовые издатели в App Store заработали на 65% больше
• Top Keywords: самые популярные поисковые запросы App Store и Google Play в разных странах
• Rec Room: виртуальные комнаты
• Стек ASO 2019
• В AppMetrica появились отчеты для отслеживания доходов приложения
• Как длина описания в Google Play влияет на конверсию в установки
• Wargaming открывает новое подразделение Nexus
• Как измерять, контролировать и поддерживать органический рост
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• (+32) Перспективные AR/VR-стартапы: виртуальные свидания, хирургия и служба поддержки
• (+25) Несем IoT в массы: результаты первого IoT-хакатона от GeekBrains и Ростелекома
• (+21) Нейросети и глубокое обучение: онлайн-учебник, глава 1
• (+17) Интернет вещей по-русски. Baseband-отель LoRaWAN для владельцев RTL-SDR
• (+12) Прототипирование в VR: 5 способов проверить гипотезу
• Facebook выпустил фреймворк для роботов PyRobot
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.