iOS
• MVVM: архитектурный шаблон для структурирования представлений SwiftUI
• Reducing iOS Test execution time with Selective Testing
• CocoaHeadsNL Meetup
• Reducing the Size of Cash App for iOS
#ios
Очередная статья про эйджизм и “выйти из IT” и, собственно, то, что ждет всех из нас. Средний возраст программистов самый большой в США, и это всего 32.8 года. Индустрия молода, но со временем, конечно, будет стареть, и седые программисты уже не будут вызывать удивление. В статье есть самые типовые варианты развития для разработчиков, а у вас есть план выхода?
—
#самоповтор из 2021 года. Проблема никуда не делась, а, скорее, даже усилилась и план выхода нужен как никогда.
Android
• Пишем plugin для Jetbrains IDE: отображение файлов вне проекта в Project Tool
• Need of ViewCompositionStrategy in Jetpack Compose
• What's new in Kotlin 2.0.0
• Mastering Jetpack Compose Performance
• christopher.mederos/something-worth-sharing-cf3e3f5083cf">Something Worth Sharing — How to use Composables on Social Media
#android
erid: LjN8KbFhp
2LEADS делится секретами OEM-продвижения 🗣
Как получить больше установок и оптимизировать расходы?
Агентство нового мобильного маркетинга 2Leads провело исследование и теперь делится опытом, как выработать эффективную стратегию работы с OEM-инвентарем.
Изучены площадки Xiaomi и Huawei, но выводы подходят и для других OEM-источников.
Используйте эти советы, чтобы повысить эффективность своих кампаний!
Исследование 🟩Реклама ООО"ТУЛИДС" ИНН 6317122270
Android
• Скриншот-тестирование для превью Compose
• Google запускает новую функцию, чтобы вернуть пользователей к установленным приложениям
• ComposeLife — игра «Жизнь» на Jetpack Compose
• Kotlin 2.0 Release
• kacper.wojciechowski/kotlin-2-0-android-project-migration-guide-b1234fbbff65">Kotlin 2.0 — Android project migration guide
• Why Calling a Composable from a Regular Function Isn’t Possible
• engineervishvnath/design-social-media-app-like-tiktok-for-android-5f44462f4dad">Design Social Media app like TikTok for Android
• Essential Android Design Patterns: MVVM, MVP, and More
#android
Платформа управления программной инженерией Jellyfish запустила то, что она называет «первым в отрасли инструментом сравнительного анализа». Он позволит инженерам проверять, насколько хорошо они работают по сравнению с другими компаниями. Jellyfish Benchmarks основан на анонимизированных данных, которые компания собирает со всех инженерных групп.
Пользователи получают доступ к более чем 50 метрикам, включая время, затрачиваемое на рост, количество решенных issues, частота развертывания, смердженные пул-реквесты, коммиты, дни программирования, частота инцидентов, среднее время восстановления (MTTR), и пр.
Такие агрегированные общеотраслевые инженерные данные дают больше контекста для понимания, позволяя компаниям сравнивать и сопоставлять внутренние данные с данными своих коллег из разных секторов.
—
#самоповтор из 2021 года. Платформа до сих пор работает и меряет все что ни попадя. 👍 если интересные такие "исторические" новости, 🥱 если вы ретроград
Если вы всегда хотели знать, но боялись спросить какова судьба эмуляторов игр, которые совсем недавно разрешили в App Store, то у AppFigures уже есть ответ - судьба незавидная. Delta, который выпускается дольше всех и является самым удобным в использовании, также является самым популярным эмулятором игр в App Store. Он был приложением №1 по количеству загрузок, как среди приложений, так и среди игр. За это время он был установлен на 5.3 млнустройств, и это довольно скромная оценка. Большая часть загрузок, примерно 37%, пришлась на США, на втором месте — Китай. Остальные были распределены по 75 с лишним странам. Но… после “медового месяца” загрузки стали стремительно падать. Сейчас игровой эмулятор занимает 47-е место в американском App Store, а количество загрузок сократилось почти до десятой части от того, что было в первые дни. За последние несколько дней было выпущено еще три новых эмулятора, включая Gamma, PPSPP и RetroArch. PPSPP достиг пика на 3 месте в американском чарте, но довольно быстро сошел на нет, а два других даже не попали в топ-10. Причина проста - ни один из этих эмуляторов не обеспечивает удобного доступа к играм и не имеет предустановленных игр. Вместо этого они предлагают запутанный способ скачивать пиратские игры и возиться с их установкой.
Разработка
• Fortran и COBOL снова вошли в Индекс TIOBE
• Грабим Дома на Собеседовании в Google
• Особенности построения интерфейса для разных платформ
• Как я code coverage внедрял да Gradle plugin для baseline писал
• Avito QA meetup
• JetBrains выпускает Aqua — IDE для автоматизации тестирования
• Слежка через пуш-уведомления на смартфонах
• Case Study: UX/UI Design of the First Licensed Digital Bank in Mexico
• maha-/developers-spend-close-to-57-of-their-time-firefighting-than-innovating-cisco-survey-98243c963c9c">Developers spend close to 57% of their time firefighting than innovating
Маркетинг
• Эмуляторы ненадолго захватили App Store и быстро сошли на нет
•
Кроссплатформа
• Полнодуплексное соединение во Flutter
• Announcing the winners of the Global Gamers Challenge
• Consuming Jetpack Paging KMP code in SwiftUI and Compose clients
iOS
• SwiftSecurity — современный фреймворк для Keychain API
• Новый App Store Transparency Report
• TimecodeKit — таймкоды SMPTE для Swift
• TextField с автодополнением
• SwiftUI-навигация: просто, нативно и декларативно
• Удивительный мир внутри .ipa
• Core Motion framework в финансовых приложениях
• SwiftUI: Camera App with AVFoundation
• Running code when App is Ready
• Build your next website in Swift
• Understanding typography in visionOS
• What Does spacing = nil Mean in SwiftUI?
#ios
Fortran и COBOL снова вошли в Индекс TIOBE
Индекс TIOBE призван отразить относительную популярность компьютерных языков, поэтому стало неожиданностью появление в Топ-20 двух языков, появление которых датируется пятидесятыми годами.
1. Войдя в Топ-20 в апреле 2021 года, Fortran продолжает расти и теперь поднялся на самую высокую за всю историю позицию — №10. Это действительно достижение для языка, который впервые был выпущен в октябре 1956 года с полным названием «Система трансляции формул IBM» (The IBM Formula Translating System).
2. "Основная причина воскрешения Fortran — растущая важность численных/математических вычислений. Несмотря на множество конкурентов в этой области, у Fortran есть причины для существования. В джунглях языков Фортран кажется быстрым, имеющим встроенную поддержку математических вычислений, зрелым и бесплатным. Тихо, медленно, но верно Фортран завоевывает позиции. Это удивительно, но неоспоримо".
3. Другой legacy-язык, который растет в индексе TIOBE — это COBOL. В январе 2024 года он вновь вошел в Топ-20 ,потом выпал, а в этом месяце снова оказался там на 20 месте.
4. Разработанный в 1959 году, COBOL до сих пор широко используется в legacy-системах, лежащих в основе критически важных бизнес-операций в таких отраслях, как банковское дело, страхование и здравоохранение. Его наивысшая позиция в индексе TIOBE была №8 в 2001 году, и хотя можно было бы ожидать, что он уже давно сошел со сцены, исследование 2022 года, проведенное по заказу поставщика COBOL компании Micro Focus, показало, что организации все еще держатся за свой COBOL-код, и что количество приложений на COBOL на самом деле не сокращается, а растет.
И что: старый, но не устаревший (С) И эти люди говорят про legacy код годичной давности 😀
Видео и подкасты за неделю:
• (iOS Ru)
TextField с автодополнением
• (iOS Ru)
SwiftUI-навигация: просто, нативно и декларативно
• (iOS Ru)
Удивительный мир внутри .ipa
• (iOS Ru)
Core Motion framework в финансовых приложениях
• (iOS En)
Unlock the power of grammatical agreement
• (iOS En)
Animate symbols in your app
• (iOS En)
Inspectors in SwiftUI: Discover the details
• (iOS En)
Demystify SwiftUI performance
• (iOS En)
SwiftUI Stacked ScrollView
• (iOS En)
Syncing ScrollView's + Swipe To Dismiss
• (And Ru)
Путешествие к центру Композиции
• (And Ru)
Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
• (And Ru)
Компиляторные плагины: модификация и анализ Сompose
• (And Ru)
Как я code coverage внедрял да Gradle plugin для baseline писал
• (And En)
What's new in Android
• (And En)
What's new in Google Play
• (And En)
Все видео Google I/O 2024
• (And En)
Мобайл на Google I/O 2024
• (And En)
Все воркшопы Google I/O 2024
• (And En)
Дизайн на Google I/O 2024
• (And En)
Type-Safe Navigation with the OFFICIAL Compose Navigation Library
• (And En)
How to Implement a Shared Element Transition In Jetpack Compose
• (And En)
Mastering Kotlin in 7 Steps
• (And En)
Looking Forward to Kotlin 2.0
• (Crs Ru)
Полнодуплексное соединение во Flutter
• (Crs En)
How to Share ViewModels in Compose Multiplatform (with Dependency Injection!)
• (Dev Ru)
Особенности построения интерфейса для разных платформ
• (Dev Ru)
Грабим Дома на Собеседовании в Google (+ другие вопросы с собеседований)
• (Dev Ru)
Avito QA meetup
• (Dev En)
Quantum Computing Course – Math and Theory for Beginners
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
Android
• Как я доказывал Google, что мне нужны данные юзеров, но я не скамер
• TetherFi — шаринг интернета
• Больше приложений в Android для автомобилей
• Mastering Compose: Custom Layout and Scoped Modifiers
• Compose Preview Screenshot Testing
• android-world/whats-new-in-jetpack-compose-at-google-i-o-2024-d3350d2e3745">What’s New in Jetpack Compose at Google I/O 2024
#android
6.5 млн пользователей для приложения маркетплейса
Маркетплейсов и так уже много и для нового нет места? Это только так кажется. Вот кейс агентства Whiteleads, которое продвигало приложение маркетплейса для iOS и Android в России и Европе.
Инсайты:
• Люди охотнее купят товар, если рассказать о нем креативно и эмоционально. Центральным креативным элементом кампании стали вертикальные UGC-ролики от лица пользователей.
• Пользователям всех стран Европы зачастую нравятся одни и те же товары, рекламные подходы в видео и озвучке, независимо от социокультурных различий.
• В рекламе надо опираться не на то, что предлагает маркетплейс, а на то, что нужно пользователям. Несмотря на значительное ослабление курса рубля летом 2023 года, удалось минимизировать падение выручки за счет изменения покупательской корзины в рекламе и ставки на товары первой необходимости.
• Оказывается, рекламная сеть Unity вполне подходит и не для игр. Сеть стала лучшим источником In-App-трафика в России в связи с полным отсутствием фрода и отличной оптимизацией по ROAS.
• Средняя выручка на уникального пользователя продукции Apple за четыре месяца кампании оказалась на 70% больше, чем на аналогичного Android-юзера.
• Проблемой iOS-продвижения в TikTok стал SKAD Network — postback приходил в рекламный кабинет только через 48 часов. Для решения этой проблемы запускали наиболее рентабельные креативы из Android-кампании, анализировали CTR и успешно масштабировали трафик почти вслепую.
И что: приложение в топ-5 Google Play на протяжении всего Q1 2024 с 30 позиции на старте, прирост выручки в России +137%, 6.5 млн новых пользователей, $8.7 млн выручки (30 дней атрибуции).Реклама. ООО «Фридом коммуникейшн». ИНН 7703779390 erid: 2SDnjcBnTuB
Сверху два обзора I/O 2024 - от CleverPumpkin и от KTS. А у меня тем временем традиционный опрос про интересность конференции. Напомню, что средняя оценка прошлогодней конференции - 2.84.
Разработка
• Самая мощная ИИ-модель для создания изображений и чат-боты для работы, учёбы и поиска. Что представил Google на I/O 2024
• Developer Keynote Google I/O 2024: официальная поддержка KMP, развитие Gemini и AI в Андроиде
• Итоги I/O 2024
• Мантры программирования — это не догмы, а выражения
• Открыт конкурс Gemini API с призовым фондом в $3 млн
• Google запускает Firebase Genkit — открытый фреймворк для создания приложений на базе ИИ
•
• You probably don’t need microservices
Маркетинг
• Маркетологи в мобайле: Ярослава Адаменко (М.Видео и Эльдорадо)
Кроссплатформа
• Почему я верю в востребованность кроссплатформы и Flutter в частности?
• DivKit теперь и для Flutter. Рассказываем об особенностях BDUI-фреймворка Яндекса
• Flutter 3.22 — Что нового во Flutter?
• Вышел Dart 3.4
• Say Goodbye to Future.wait([]) in Dart
• How to use Coil in Compose Multiplatform
• What’s new in Flutter 3.22
• Announcing Dart 3.4
iOS
• Как Apple боролась с мошенничеством в App Store в 2023
• Pointfree's SyncUps App: A Great Example Architecture for a SwiftUI App
• The Dark Side of Unidirectional Architectures in Swift
• How to profile your app's performance and Main Thread usage with Instruments and os_signposts
• Boost Performance by Over 100x Using the Accelerate Framework
#ios
Project Gameface вышел на Android
Google выпустил для Android открытый Project Gameface — это игровая «мышь», которой можно управлять без рук, наклонами головы и строя рожицы.
• Разработчики теперь могут интегрировать функцию доступности в свои приложения, позволяя управлять курсором с помощью гримас или движением головы. Например, пользователь может открыть рот, чтобы перемещать курсор, или поднять брови, чтобы "нажать и перетащить".
• Анонсированный во время прошлогодней Google I/O для настольных компьютеров, Project Gameface использует камеру устройства и базу данных выражений лица из MediaPipe Face Landmarks Detection API для манипулирования курсором. В API есть 52 лицевых “жеста”.
22 июня приглашаем на конференцию Yandex BDUI Conf от Яндекса и Яндекс Маркета! 🎉
Приходите послушать доклады спикеров и поучаствовать в нетворкинге. Будет два трека с контентом: инфраструктурный - про разработку своих решений и продуктовый - про внедрение готовых фреймворков. Обсудим, как с помощью бэкенда сделать красивые и функциональные приложения.
Вас ждут доклады спикеров Яндекса, Авито и X5 Tech! После — дискуссия про карьеру мобильных разработчиков. Ещё вы сможете поучаствовать в активностях Яндекс Маркета, выиграть мерч, погулять в летнем дворике и записаться на экскурсию в офис Яндекса.
Зарегистрироваться можно здесь. А следить за новостями конференции — на сайте.
Конференция пройдёт 22 июня в Москве в «Экстрополисе». Если не получится прийти очно, присоединяйтесь к нашей трансляции!
До встречи на Yandex BDUI Conf — будет здорово! 👋
Недавно я писал про новый тренд в дейтинге - эксклюзивные приложения для знакомств. Такие, для вступления в которые нужно получить одобрение или приглашение от других пользователей, которые работают на определенную аудиторию или предлагают уникальные фичи. Еще один пример - Raya, приложение знакомств с/для знаменитостей, перешагнуло важный рубеж в $100 млн пользовательских трат. Мораль - казалось бы, в индустрии приложений для знакомств уже есть все, что нужно. Где Тиндер и где мы? Но все же при правильном подходе найти ключ к аудитории можно и даже нужно.
Разработка
• Copilot получает Extensions
• Какие возможности клавиатур подглядеть у Tinder, YouTube и Revolut
• Геймдев, про который мы забыли: как работали 2D-игры на кнопочных телефонах нулевых
• Hidden vs. Disabled In UX
• Things You Should Never Do As A Software Engineer
Маркетинг
• Multicast Games: как удержаться на высоте в геймдеве (и как на это влияет мобильная аналитика)
• Raya, приложение знакомств для знаменитостей, зарабатывает $100 млн
Кроссплатформа
• Победители Global Gamers Challenge
• Flutter 3.22 — наше мнение
• Что Flutter 3.22 нам готовит?
iOS
• Foil — правильная обертка для UserDefaults
• SwiftUI на iOS 14: преодолевая баги и улучшая перформанс в 3 раза
• Comparing CI/CD tools for iOS
• Unleashing the Power of Web3 and Blockchain in iOS
• Safely distribute new Machine Learning models to millions of iPhones over-the-air
#ios
Разработка
• Утечки памяти в мобильных приложениях: руководство для QA-инженеров
• Writing commit messages
• How Amazon built a high-performant, durable, & consistent in-memory database
• adnan.khan.dev/test-driven-development-tdd-is-not-the-solution-dafb0021c2d5">Test-Driven Development (TDD) is Not the Solution
Маркетинг
• Web-To-Web User Acquisition Guide 202
Кроссплатформа
• Сравнение архитектурных паттернов GetX и BLoC
• Qt 6.7.1 Released
• On-device Vector Database for Dart/Flutter
• Essential Libraries for Compose Multiplatform
iOS
• Глубокие ссылки для локальных уведомлений в SwiftUI
• Подробно об акторах в Swift
• MVVM: An architectural coding pattern to structure SwiftUI Views
• Quick guide on Combine essentials in Swift
• batrakov.vitaly/how-to-modularize-monolith-ios-app-e4d0a9477c9e">How to modularize Monolith iOS App
#ios
Google запускает новую функцию, чтобы вернуть пользователей к установленным приложениям
В новостях с I/O я писал о какой-то новой странной "поверхности", которая работает с Engage SDK. Сейчас появилось немного больше информации.
1. Это своеобразные виджеты, но не от одного приложения, а от групп. С помощью этой Engage-поверхности разработчики смогут предлагать глубокие ссылки, открывающие определенные страницы в их мобильных приложениях.
2. Например, при нажатии на изображение кроссовок пользователь Android попадает на страницу приложения для покупок, где он может завершить покупку, возможно, ему будет предложено купить то, что он сохранил в своей корзине. Однако кроссовки были представлены внутри «поверхности», которая включала и другие товары, которые можно было купить в разных приложениях. Другими словами, вместо виджетов, посвященных одному приложению, новая поверхность, похоже, сможет группировать контент из похожих приложений, чтобы побудить пользователя повторить покупку и завершить свое "путешествие".
3. Функция будет не только напоминать пользователям о том, что они хотят сделать в приложении, но и подталкивать их к действию, предлагая выгодные предложения. «Вы сможете демонстрировать персонализированные рекомендации и акции, гарантируя, что пользователи обнаружат контент, который в противном случае могли бы пропустить».
4. Кроме того поверхность будет рекомендовать приложения, которые пользователи еще не установили, используя «убедительный контент» из этих приложений.
5. Engage SDK для разработчиков пока доступен только по приглашениям, но потребительский опыт будет запущен только в конце этого года.
Android
• Генеративный ИИ в Android и эффективность фоновой работы приложения — важное с Google I/O 2024
• Как создать аудиоплеер. Часть 1. Что под капотом
• Путешествие к центру Композиции
• Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
• Компиляторные плагины: модификация и анализ Сompose
• morganes56/from-junior-to-senior-the-real-way-to-implement-clean-architecture-in-android-8514005e85e1">From Junior to Senior: the real way to implement Clean Architecture in Android
• Jetpack Compose Best& Bad Practices with Common Usages
• Inline, noinline, crossinline, reified — Kotlin inline and the bytecode magic
• Android, Compose and automated screenshots making
#android
Новый App Store Transparency Report
Apple опубликовала второй Отчет о прозрачности App Store
• Всего в App Store 1,870,119 приложений это немногим больше прошлого года
• Всего на review было подано 6,892,500 приложений
• Отклонено 1,763,812 версий приложений
• Основные причины отклонения - Performance, Legal и Design
• Удалено приложений - 116,117 . Подано 18,628 апелляций на удаление приложений. Восстановлено приложений - 322. То есть шанс восстановиться - 1.7%.
• Всего зарегистрированных разработчиков - 42,219,169. Это примерно на 5 миллионов больше, чем год назад.
• Закрыто аккаунтов разработчиков - 117,843
• Еженедельное количество посетителей в App Store - 734,673,588
• Количество скачиваний приложений в неделю - 787,999,950
• Повторных скачиваний - 1,656,894,821
• Среднее количество пользователей в неделю, которые ищут что-либо в App Store - 398,499,012
Карантин I/O
Подборка всех статей за неделю - обсуждаем прошедшую I/O, проводим карантин UI-тестов, смотрим как Notion ускорил запуск на Android в 2 раза, отмечаем новые Flutter и Dart, боремся с догмами программирования и многое другое. Залетайте!
Опубликовал обзор самых быстрорастущих по установкам и выручке приложений в России в мае. TLDR: ничего интересного - вследствие сплошных выходных куча игр, даже зацепиться не за что. Как писал давеча Михаил Табунов:
Если вдруг ты зашел в свой дашборд, и увидел что вчера внезапно всё упало, то не спеши пинать разработку криками “Что у нас вчера лежало?” Не спеши дергать аналитиков вопросами “Ребята, всё ли нормально у нас с аналитикой? Все ли данные доехали?” Не спеши начинать расследование. Просто возьми в руки свой смартфон. Открой там приложение гугл. И узнай, нет ли сегодня праздника в стране у твоего пользователя.
iOS
• Добавляем объём в visionOS-приложение
• React to network status updates in SwiftUI using AsyncSequence
• Building a Swift package using the Swift 6 language mode
• Using materials with SwiftUI
• Refactoring to TipKit from AppStorage and Custom Views in SwiftUI
#ios
Google открывает доступ к Home API
API-интерфейсы Home могут дать доступ к любому Matter-устройству или устройству, работающему с Google Home, и позволяют разработчикам создавать свои собственные решения с использованием устройств и автоматики Google Home в своих приложениях как для iOS, так и для Android.
• API-интерфейсы Home уже доступны для партнеров Google в раннем доступе, и Google открывает список ожидания для всех разработчиков, которые могут зарегистрироваться уже сегодня.
• API предоставляют доступ к большинству устройств, подключенных к Google Home, и к структурам Google Home
• Первые приложения, использующие домашние API, можно будет опубликовать в магазинах Play и App осенью.
• Разработчикам также необходимо пройти сертификацию, чтобы использовать API.
• Вы можете создать сложное приложение для управления любым аспектом умного дома или просто интегрироваться с умным устройством, чтобы решить нужные задачи — например, автоматически включить свет перед приездом водителя доставки еды, приложение для тренировок может охлаждать вас во время занятий, включая вентилятор, а приложение для аренды жилья может настроить дом для подготовки к приему гостей, включив свет и отрегулировав температуру.
Android
• Project Gameface вышел на Android
• Гейминг за 300: как я купил и оживил дешевую игровую консоль на Android. Можно ли поиграть, сэкономив на шаурме?
• stefanoq21/compose-navigation-2-8-0-f9ad34024624">Compose Navigation 2.8.0
• Android Support for Kotlin Multiplatform
• Google I/O 2024 — Android Keynotes
• Injecting Composables with Dagger without losing it
#android
Открыт конкурс Gemini API с призовым фондом в $3 млн
Google запустил конкурс для разработчиков Gemini API с призовым фондом в $3 млн и главной наградой в виде специально созданной электрической версии DeLorean 1981 года.
• Срок окончания приема заявок - 12 августа 2024 года. Из России заявки не принимаются.
• Работы будут оцениваться по пяти основным критериям: влияние, оригинальность, креативность, полезность и качество исполнения. Google ищет приложения, которые не только инновационно используют Gemini API, но и решают реальные проблемы, тщательно продуманы и обеспечивают отличный пользовательский опыт.
• Всего будет несколько категорий - Самое эффективное приложение, Самое полезное приложение, Самое творческое приложение, Лучшее приложение на Flutter, Лучшее приложение для Android, Лучшее веб -приложение, Лучшее использование Arcore, Лучшее игровое приложение.
Google запускает Firebase Genkit
Продолжаем обзор новинок I/O 2024.
• Firebase Genkit — это фреймворк с открытым исходным кодом, использующий лицензию Apache 2.0, который позволяет разработчикам быстро встраивать ИИ в новые и существующие приложения.
• Среди примеров использования Genkit, о которых компания рассказывала на презентации — многие стандартные случаи применения генеративного ИИ: генерация и обобщение контента, перевод текста и генерация изображений.
• Пока поддерживает JavaScript/TypeScript, а в скором времени появится и поддержка Go.
• Команда Firebase обещает, что разработчики смогут сразу же приступить к использованию Genkit, поскольку в нем используются те же подходы, что и в остальном инструментарии Firebase. Используя Genkit, они смогут тестировать свои новые функции локально, а затем развернуть свое приложение с помощью бессерверных платформ Google, таких как Cloud Functions for Firebase и Google Cloud Run.