В нашем новом дайджесте подготовка к собеседованию и оптимизация для сетевой доступности, тестирование с Robolectric и “подводные камни” Jetpack Compose, плохие MVx архитектуры и даже конец программирования, каким мы его знаем.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/r/w780q1/webt/gx/n_/bx/gxn_bxkst0xaxu2pouvesi6nsvs.jpeg)
iOS
• Хочу в iOS-разработку: к чему готовиться на собеседовании в продуктовую команду
• Оптимизация приложения для сетевой доступности
• Воскрешаем старый проект с помощью ChatGPT
• Проектирование с ограничениями — Live Activity и Dynamic Island
• Модульное тестирование в iOS: все, что надо знать. Часть 1
• Правильная поддержка Apple Silicon: как избежать проблем при апгрейде с Intel (x86_64) на Apple (arm64)
• Ряд Фибоначчи и Мемоизация с примерами на Swift языке
• Combine: часть 2. Вершина айсберга
• Microsoft внедряет поддержку iOS в новой версии Phone Link for iOS
• В iOS появится трекер эмоций
• Обработка сетевых вызовов в Swift с помощью Moya
•
Building Robust iOS User Interfaces with MVVM: A Guide for SwiftUI and UIKit Developers
•
Tuist and XcodeGen
•
Domain-Language-Based Systems in Swift
•
How to Switch Your iOS App Delegate for Improved Testing
•
How to configure Build Scripts in Xcode
•
Create a Horizontal Carousel With ARKit, SceneKit, and SwiftUI
•
Selectable Tags in SwiftUI
•
How to Use UIHostingConfiguration to Integrate SwiftUI Views into UIKit Apps
•
Async/Await and MainActor Strategies
•
Simplify Time Comparisons in Swift with RelativeDateTimeFormatter
•
Combine from A to Z
•
PhotosPicker in SwiftUI
•
Text to speech and speech to text synthesizer using Swift
•
Developer guide on App Clips for iOS
•
Skip typing your login credentials manually with Xcode breakpoints
•
SwiftUI Form Styling
•
Foundation Package Preview Now Available
•
MetricKit: A boon for iOS framework developers to get Crash Logs
•
SwiftLint in Depth
•
My experience building an iOS App with the help of Chat GPT-4
•
OpenAI: работа с OpenAI API в Swift
•
CardinalKit: быстрая разработка приложения для здоровья
Android
• Circuit-фреймворк для Jetpack Compose и тестирование с Robolectric
• Один «подводный камень» в Jetpack Compose и как его можно исправить
• 9 полезных функций расширения Kotlin
• Jenkins + Android
• Вопросы и ответы для собеседования по Kotlin. Часть 3
• 3-дюймовый смартфон: тестируем приложения как PRO
• Объекты данных в Kotlin
•
Discovering Material 3 for Android — ListItem
•
How we built user interaction tracking for Jetpack Compose
•
Kotlin revolutionary announcement
•
Encapsulate your @Composable functions
•
Top 5 Useful Advanced Programming Techniques in Android
•
Problem solving in Compose Text
•
Kotlin Coroutines’ best practices
•
Pragmatic strategies on Jetpack Compose migration
•
Typed Error Handling in Kotlin
•
Domain Driven Android — Building a Model which makes sense
•
Photo Picker Everywhere
•
How To Set A Gradient Background In Jetpack Compose
•
How to use FlowLayout
•
Android Studio Hedgehog Canary 1 now available
•
Building a Customizable Messaging Platform
•
Mastering Side Effects in Jetpack Compose
•
How to leverage functional programming in Kotlin to write better, cleaner code
•
Code Better, Build Faster: Writing Maven Plugins With Kotlin
•
Android MapView with clustering and dynamic images in markers
•
Thumb-Key: клавиатура для больших пальцев для Android
•
Animated Navigation Bar: красивая панель навигации
•
FlorisBoard: открытая клавиатура для Android
Кроссплатформа
•
Save Your Time with CodeGPT Code Generation in Flutter
•
Something Big Is Happening At Flutter Forward
•
Color Schemes – Figma to Flutter Design Implementation
•
Create beautiful user-interface in Flutter apps using ant-design
•
Full-stack Dart with Flutter, Supabase and Dart Edge
•
16 ideas to improve your Flutter skills (advanced roadmap)
Разработка
• Почему MVx архитектуры всегда получаются плохо
• Почему я никогда не стану Senior-разработчиком в Amazon
• Быть или не быть начальником. 3 вопроса, которые я не задал себе, прежде чем пойти на повышение
• Конец программирования, каким мы его знаем
• Selenoid: запускаем Appium UI-тесты на Android. Часть I
• Виджеты: Android против iOS
• Harmony, гармония или что там с безопасностью в HarmonyOS
• Backend Client как универсальный инструмент для UI-автотестов
• Гайды, глоссарии, редполитика. С чего начать?
• Podlodka #316: зачем айтишнику уметь писать?
• Podlodka #317: делегирование
• Replit, программирование с ИИ, стал единорогом
• Яндекс Практикум поможет бизнесу быстро растить IT-кадры
•
“It’s Not You, It’s Me”: Improving the Quality of Deliverables Through an Effective Code Review Process
•
How we managed to modernize the Booking.com app from the inside and out
•
Bringing Dark Mode to our News Apps
•
Aesthetic Usability: How Beauty Influences User Experience
•
Product Teardown — 6 Product lessons from BeReal including user education
Аналитика, маркетинг и монетизация
• Как индюки используют Твиттер для продвижения своих игр: лайфхаки и советы
• Google тестирует новый рекламный слот в поиске Play Store
• Apple раскрыла количество пользователе App Store в Европе
• Clubhouse сократит более 50% сотрудников
• Как с помощью ретаргетинга снизить стоимость повторного вовлечения клиента в мобильное приложение: кейс «Магнит Доставка»
• Snapchat переживает всплеск 1-звездочных отзывов после внедрения My AI
• Epic Games проиграла апелляцию в деле против Apple
• В России появилось первое музыкальное приложение для малого бизнеса Cubic Play
• Reddit поставил рекорд по дневной выручке в App Store
• Приложение Apple Music Classical стало №1 в первый же день, но есть ли реальный спрос?
• Как мы с помощью Mid Journey повысили удержание пользователей в приложении на 43%
•
7 examples of product-led growth in mobile apps
AI, Устройства, IoT
• Это не чат, это GigaChat. Русскоязычная ChatGPT от Сбера
• Разработчик использовал API для предоставления свободного доступа к GPT-4
• Как и зачем Rostic’s внедряет телеметрию бизнес-процессов в ресторанах
• Собака лает — ветер носит, или решил ли Bark синтез речи?
• Тестируем нейросети для генерации изображений
• $7 млн в посевном раунде: AirOps — интеграция LLM для предприятий
• Hugging Face выпускает открытую версию ChatGPT — HuggingChat
• Google Bard поможет вам в написании кода и создании функций для Google Sheets
•
How To Create A Doc ChatBot That Learns Everything For You, In 15 Minutes
•
The Dark Side Of Prompt Engineering
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/gx/n_/bx/gxn_bxkst0xaxu2pouvesi6nsvs.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Хочу в iOS-разработку: к чему готовиться на собеседовании в продуктовую команду
• Оптимизация приложения для сетевой доступности
• Воскрешаем старый проект с помощью ChatGPT
• Проектирование с ограничениями — Live Activity и Dynamic Island
• Модульное тестирование в iOS: все, что надо знать. Часть 1
• Правильная поддержка Apple Silicon: как избежать проблем при апгрейде с Intel (x86_64) на Apple (arm64)
• Ряд Фибоначчи и Мемоизация с примерами на Swift языке
• Combine: часть 2. Вершина айсберга
• Microsoft внедряет поддержку iOS в новой версии Phone Link for iOS
• В iOS появится трекер эмоций
• Обработка сетевых вызовов в Swift с помощью Moya
•
![](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/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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Circuit-фреймворк для Jetpack Compose и тестирование с Robolectric
• Один «подводный камень» в Jetpack Compose и как его можно исправить
• 9 полезных функций расширения Kotlin
• Jenkins + Android
• Вопросы и ответы для собеседования по Kotlin. Часть 3
• 3-дюймовый смартфон: тестируем приложения как PRO
• Объекты данных в Kotlin
•
![](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/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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
•
![](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)
• Почему MVx архитектуры всегда получаются плохо
• Почему я никогда не стану Senior-разработчиком в Amazon
• Быть или не быть начальником. 3 вопроса, которые я не задал себе, прежде чем пойти на повышение
• Конец программирования, каким мы его знаем
• Selenoid: запускаем Appium UI-тесты на Android. Часть I
• Виджеты: Android против iOS
• Harmony, гармония или что там с безопасностью в HarmonyOS
• Backend Client как универсальный инструмент для UI-автотестов
• Гайды, глоссарии, редполитика. С чего начать?
• Podlodka #316: зачем айтишнику уметь писать?
• Podlodka #317: делегирование
• Replit, программирование с ИИ, стал единорогом
• Яндекс Практикум поможет бизнесу быстро растить IT-кадры
•
![](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/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Как индюки используют Твиттер для продвижения своих игр: лайфхаки и советы
• Google тестирует новый рекламный слот в поиске Play Store
• Apple раскрыла количество пользователе App Store в Европе
• Clubhouse сократит более 50% сотрудников
• Как с помощью ретаргетинга снизить стоимость повторного вовлечения клиента в мобильное приложение: кейс «Магнит Доставка»
• Snapchat переживает всплеск 1-звездочных отзывов после внедрения My AI
• Epic Games проиграла апелляцию в деле против Apple
• В России появилось первое музыкальное приложение для малого бизнеса Cubic Play
• Reddit поставил рекорд по дневной выручке в App Store
• Приложение Apple Music Classical стало №1 в первый же день, но есть ли реальный спрос?
• Как мы с помощью Mid Journey повысили удержание пользователей в приложении на 43%
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Это не чат, это GigaChat. Русскоязычная ChatGPT от Сбера
• Разработчик использовал API для предоставления свободного доступа к GPT-4
• Как и зачем Rostic’s внедряет телеметрию бизнес-процессов в ресторанах
• Собака лает — ветер носит, или решил ли Bark синтез речи?
• Тестируем нейросети для генерации изображений
• $7 млн в посевном раунде: AirOps — интеграция LLM для предприятий
• Hugging Face выпускает открытую версию ChatGPT — HuggingChat
• Google Bard поможет вам в написании кода и создании функций для Google Sheets
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.