В этом выпуске нашего дайджеста — бинарная совместимость, разбор SwiftUI, ошибки пиксель-арта, традиционный уже ад инди-разработчика, Flutter с нуля до прода, бесплатные книги и SDK для роботов. Добро пожаловать!
![](https://habrastorage.org/webt/mj/ac/av/mjacavymtejk7spndusgoxvwr9m.png)
Любая библиотека должна по возможности соблюдать бинарную совместимость. Если разные версии библиотеки в зависимостях несовместимы, то результатом будут краши в рантайме. С такой проблемой мы можем столкнуться, например, при добавлении поддержки Reaktive в MVICore. Поговорим о eSIM (полное название embeddedSIM — то есть, встроенная SIM) — впаянных в гаджет (в отличие от привычных съёмных «симок») SIM-картах. Разберём, чем они лучше обычных SIM-карт и почему крупные мобильные операторы противодействуют внедрению новой технологии.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• (+17) SwiftUI по полочкам
• Apple сообщает о рекордных результатах за первый квартал
• Фишки Swift: двойное нажатие Apple Pencil
• Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение
•
Как создать карточку с видео на SwiftUI
•
Интервал между символами в UILabel
•
Реализация сервис-ориентированной архитектуры в Swift 5
•
Пост мортем: сбой App Store 24.01.2020
•
iOS 13: невоспетые герои 2019 года
•
Маски и оверлеи в SwiftUI
•
Превью ссылок в стиле Twitter для iOS-приложений на SwiftUI
•
Лучшие практики безопасности для iOS-приложений
•
5 расширений Swift, которые упростят вам жизнь
•
13 быстрых клавиш Xcode для повышения вашей продуктивности
•
Buildkite и Fastlane — iOS-разработчики станут лучше спать
•
Реализация экрана поиска с использованием MVVM и RxSwift
•
Instructions: руководства для пользователей на Swift
Android
• (+23) Расширения в Kotlin. Опасный атавизм или полезный инструмент?
• (+22) Как научить телефон видеть красоту
•
Видео Google Play | Playtime 2019
• Фишки Kotlin: самое часто встречающееся значение
• Android Broadcast #5: Как стать крутым разработчиком
•
История нашего большого переписывания Android-приложения
•
Динамические экраны с использованием server-driven UI в Android
•
Создание реактивного и гетерогенного адаптера в Kotlin
•
Как реализовать темную тему на Android
•
Корутины в Kotlin Coroutines: от простого к продвинутому
•
Организация Kotlin-кода
•
Безопасность Android-приложений: лучшие практики
•
Android: как исправить серьезную проблему в LiveData
•
Введение в анимацию с Jetpack Compose
•
Android-NFC: работа с NFC на Android
Разработка
• (+26) Пиксель-арт для начинающих: исправляем типичные ошибки
• (+20) Как левел-дизайнеры используют приёмы теории архитектуры для создания игровых уровней
• (+20) Вывод внутриигровых сообщений с помощью Particle System
• (+15) Ад инди-разработчика или как довести свой проект до релиза и не застрелиться в процессе
• (+10) Весенняя стажировка для мобильных разработчиков в Redmadrobot
• (+10) Особенности установления соединения между участниками сетевой игры типа «равный к равному»
• (+7) Игра, управляемая лицом, в масках Инстаграм, или двойной клик глазами
• (+5) React Native: новая веха в мобильной разработке Shopify
• (+2) 7 этапов эволюции тестирования в компании
• Как я изучал Flutter или meows.app с 0 до прода
• Podlodka #148: Корни инженерной культуры Восточной Европы
• Flutter Dev Podcast #12: Flutter Europe и пет-проекты
• Яндекс открыл набор на летнюю стажировку
• Бесплатная книга “Создание шутера от первого лица на Unity”
• Coderslang: приложение для изучения программирования
• Один день из жизни UX менеджера
• Почему не нужно копировать UX паттерны крупных успешных компаний
• UX-тренды банкинга 2020 года: искусственный интеллект, голосовые помощники и гиперперсонализация
• Как сделать идеальное мобильное приложение для интернет-магазина
•
Создание инфраструктуры персонального поиска для ваших знаний и кода
•
9 действий для лучшего обмена знаниями между командами разработчиков
•
Истории в Spotify
•
Почти 10 уроков разработки игр, которые я усвоил в своем инди-приключении
•
Мобильный UI: 13 основных паттернов дизайна приложений, о которые нужно знать
•
Как должно было быть создано приложение SoundCloud для iOS — исследование UX
•
Понимание анимации загрузки — ее типы и применения
•
Nebula: сетевой фреймворк от Slack
Аналитика, маркетинг и монетизация
• Google ввел ограничения на атрибуцию в App Campaigns на iOS
• Расходы европейских пользователей на приложения выросли на 19%, Россия на 4 месте
• Мессенджер для продавцов Attentive привлек еще $70 млн.
• Играть по-взрослому: кейс Kunlun и Bidease
• В 1-800-Flowers сделали AR-букеты
• Ahoi: дейтинг с видео
• Как в Fishing Clash справились со скамом в Facebook
• SuperAwesome привлек еще $17 млн на детские технологии
• Busuu покупает Verbling
• Reroll – блокнот для характеристик D&D героев. Наш опыт запуска на Kickstarter и сбора $20К за 8 часов
• Как увеличить конверсию в установки при помощи экспериментов в сторах
•
CCPA – что это значит для вашего приложения
•
Монетизации игр на развивающихся рынках с помощью поведенческой науки
AI, Устройства, IoT
• (+32) Адаптивная фоновая подсветка для телевизора на Raspberry Pi – аналог Ambilight
• (+19) Туториал по uplift моделированию. Часть 1
• (+17) Нейросети в производстве зубных протезов
• (+14) Хьюстон! У нас проблемы? От «умного» улья к роболетку и «кластеру» на ардуино
• (+4) Как защитить IIoT-решения, используемые в социальной инфраструктуре. И от чего?
• (+2) DDoS от кофеварки
• Бесплатная книга «Искусственный интеллект в играх 3»
• Google запустил MediaPipe в веб
• Как я переехал в США и запустил IoT-платформу с полумиллионом пользователей
•
Чему учиться разработчику встраиваемых систем
•
Boston Dynamics выложила SDK для робота Spot
< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/mj/ac/av/mjacavymtejk7spndusgoxvwr9m.png)
Любая библиотека должна по возможности соблюдать бинарную совместимость. Если разные версии библиотеки в зависимостях несовместимы, то результатом будут краши в рантайме. С такой проблемой мы можем столкнуться, например, при добавлении поддержки Reaktive в MVICore. Поговорим о eSIM (полное название embeddedSIM — то есть, встроенная SIM) — впаянных в гаджет (в отличие от привычных съёмных «симок») SIM-картах. Разберём, чем они лучше обычных SIM-карт и почему крупные мобильные операторы противодействуют внедрению новой технологии.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• (+17) SwiftUI по полочкам
• Apple сообщает о рекордных результатах за первый квартал
• Фишки Swift: двойное нажатие Apple Pencil
• Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение
•
![](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/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)
• (+23) Расширения в Kotlin. Опасный атавизм или полезный инструмент?
• (+22) Как научить телефон видеть красоту
•
![](https://habrastorage.org/getpro/habr/post_images/976/d3e/38a/976d3e38a34b003f86f91795524af9f8.gif)
• Фишки Kotlin: самое часто встречающееся значение
• Android Broadcast #5: Как стать крутым разработчиком
•
![](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/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• (+26) Пиксель-арт для начинающих: исправляем типичные ошибки
• (+20) Как левел-дизайнеры используют приёмы теории архитектуры для создания игровых уровней
• (+20) Вывод внутриигровых сообщений с помощью Particle System
• (+15) Ад инди-разработчика или как довести свой проект до релиза и не застрелиться в процессе
• (+10) Весенняя стажировка для мобильных разработчиков в Redmadrobot
• (+10) Особенности установления соединения между участниками сетевой игры типа «равный к равному»
• (+7) Игра, управляемая лицом, в масках Инстаграм, или двойной клик глазами
• (+5) React Native: новая веха в мобильной разработке Shopify
• (+2) 7 этапов эволюции тестирования в компании
• Как я изучал Flutter или meows.app с 0 до прода
• Podlodka #148: Корни инженерной культуры Восточной Европы
• Flutter Dev Podcast #12: Flutter Europe и пет-проекты
• Яндекс открыл набор на летнюю стажировку
• Бесплатная книга “Создание шутера от первого лица на Unity”
• Coderslang: приложение для изучения программирования
• Один день из жизни UX менеджера
• Почему не нужно копировать UX паттерны крупных успешных компаний
• UX-тренды банкинга 2020 года: искусственный интеллект, голосовые помощники и гиперперсонализация
• Как сделать идеальное мобильное приложение для интернет-магазина
•
![](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/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Google ввел ограничения на атрибуцию в App Campaigns на iOS
• Расходы европейских пользователей на приложения выросли на 19%, Россия на 4 месте
• Мессенджер для продавцов Attentive привлек еще $70 млн.
• Играть по-взрослому: кейс Kunlun и Bidease
• В 1-800-Flowers сделали AR-букеты
• Ahoi: дейтинг с видео
• Как в Fishing Clash справились со скамом в Facebook
• SuperAwesome привлек еще $17 млн на детские технологии
• Busuu покупает Verbling
• Reroll – блокнот для характеристик D&D героев. Наш опыт запуска на Kickstarter и сбора $20К за 8 часов
• Как увеличить конверсию в установки при помощи экспериментов в сторах
•
![](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/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• (+32) Адаптивная фоновая подсветка для телевизора на Raspberry Pi – аналог Ambilight
• (+19) Туториал по uplift моделированию. Часть 1
• (+17) Нейросети в производстве зубных протезов
• (+14) Хьюстон! У нас проблемы? От «умного» улья к роболетку и «кластеру» на ардуино
• (+4) Как защитить IIoT-решения, используемые в социальной инфраструктуре. И от чего?
• (+2) DDoS от кофеварки
• Бесплатная книга «Искусственный интеллект в играх 3»
• Google запустил MediaPipe в веб
• Как я переехал в США и запустил IoT-платформу с полумиллионом пользователей
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
zivgta
Что за бред? Зачем добавлять в статью ссылку на «Бесплатная книга «Искусственный интеллект в играх 3»», где уже сказано и название книги и то, что она бесплатная, но после вести на какой-то непонятный сайт, на котором «невероятно полезная статья с оглавлением книги» и ссылкой на наконец-то таки саму книгу, дичь. Можно было и сразу ссылку вставить.