Circuit-фреймворк для Jetpack Compose и тестирование с Robolectric
Тестирование приложений Jetpack Compose обычно основано на использовании библиотеки Compose UI Test и создании юнит-тестов поверх библиотек мокирования или DI. Однако этот подход требует наличия эмулятора и не всегда применим для использования в конвейере CI/CD, где обычно используется Robolectric вместо настоящего Android Runtime. При этом нередко в тестах используется скриншотное тестирование (например, через использование captureToImage в Compose UI Test) и сравнение рендеров с образцом, что изначально недоступно в Robolectric из-за особенностей рендеринга. В этой статье мы рассмотрим использование библиотеки Roborazzi, которая решает эту проблему, совместно с новым подходом к архитектуре Jetpack Compose приложений, которая была предложена Slack в библиотеке Circuit.
Статья: https://habr.com/ru/companies/otus/articles/731150/
Платформа: Android
Тестирование приложений Jetpack Compose обычно основано на использовании библиотеки Compose UI Test и создании юнит-тестов поверх библиотек мокирования или DI. Однако этот подход требует наличия эмулятора и не всегда применим для использования в конвейере CI/CD, где обычно используется Robolectric вместо настоящего Android Runtime. При этом нередко в тестах используется скриншотное тестирование (например, через использование captureToImage в Compose UI Test) и сравнение рендеров с образцом, что изначально недоступно в Robolectric из-за особенностей рендеринга. В этой статье мы рассмотрим использование библиотеки Roborazzi, которая решает эту проблему, совместно с новым подходом к архитектуре Jetpack Compose приложений, которая была предложена Slack в библиотеке Circuit.
Статья: https://habr.com/ru/companies/otus/articles/731150/
Платформа: Android
Хабр
Circuit-фреймворк для Jetpack Compose и тестирование с Robolectric
Тестирование приложений Jetpack Compose обычно основано на использовании библиотеки Compose UI Test и создании юнит-тестов поверх библиотек мокирования или DI. Однако этот подход требует наличия...
Проектирование с ограничениями — Live Activity и Dynamic Island
Apple запустила виджет Live Activity в iOS 14, а в iPhone 14 Pro добавила Dynamic Island. С помощью этих обновлений Apple пытается переизобрести доставку push-уведомлений на мобильных устройствах. После запуска сразу же стало очевидно, что Swiggy, приложение для доставки еды, которое отправляет множество уведомлений о ходе доставки, идеально подходит для использования этих новых функций. И вот теперь обе функции доступны для пользователей Swiggy.
Мы были потрясены демонстрацией Apple, но, углубившись, мы поняли, что это даже нечто большее. Эта статья рассказывает о том, как мы разрабатывали новейшие виджеты для наших пользователей.
Статья: https://apptractor.ru/info/articles/proektirovanie-s-ogranicheniyami-live-activity-i-dynamic-island.html
Платформа: iOS/Дизайн и прототипирование
Apple запустила виджет Live Activity в iOS 14, а в iPhone 14 Pro добавила Dynamic Island. С помощью этих обновлений Apple пытается переизобрести доставку push-уведомлений на мобильных устройствах. После запуска сразу же стало очевидно, что Swiggy, приложение для доставки еды, которое отправляет множество уведомлений о ходе доставки, идеально подходит для использования этих новых функций. И вот теперь обе функции доступны для пользователей Swiggy.
Мы были потрясены демонстрацией Apple, но, углубившись, мы поняли, что это даже нечто большее. Эта статья рассказывает о том, как мы разрабатывали новейшие виджеты для наших пользователей.
Статья: https://apptractor.ru/info/articles/proektirovanie-s-ogranicheniyami-live-activity-i-dynamic-island.html
Платформа: iOS/Дизайн и прототипирование
This media is not supported in your browser
VIEW IN TELEGRAM
Animated Navigation Bar - панель навигации с несколькими предустановленными анимациями, написанная на Jetpack Compose.
Animated Navigation Bar на GitHub: https://github.com/exyte/AndroidAnimatedNavigationBar
Платформа: Android
⭐️: 55
Animated Navigation Bar на GitHub: https://github.com/exyte/AndroidAnimatedNavigationBar
Платформа: Android
⭐️: 55
👍2
Типизированная обработка ошибок в Kotlin
Обработка ошибок - это не rocket science. Она проста, но не всегда понятна. В этой статье рассматриваются некоторые популярные шаблоны логической обработки ошибок в языке программирования Kotlin. Мы рассмотрим практические примеры и влияние, которое они могут оказать на когнитивную сложность и сопровождаемость программы.
Статья: https://medium.com/@mitchellyuwono/typed-error-handling-in-kotlin-11ff25882880
Платформа: Android
Обработка ошибок - это не rocket science. Она проста, но не всегда понятна. В этой статье рассматриваются некоторые популярные шаблоны логической обработки ошибок в языке программирования Kotlin. Мы рассмотрим практические примеры и влияние, которое они могут оказать на когнитивную сложность и сопровождаемость программы.
Статья: https://medium.com/@mitchellyuwono/typed-error-handling-in-kotlin-11ff25882880
Платформа: Android
👍1
Оптимизация приложения для сетевой доступности
Доступность сети - важный аспект работы приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После того как я сам написал несколько сетевых фреймворков и десятки приложений, пришло время поделиться с вами моими лучшими практиками, чтобы уберечь вас от ошибок, которые я совершил в прошлом.
Статья: https://www.avanderlee.com/swift/optimizing-network-reachability/
Платформа: iOS
Доступность сети - важный аспект работы приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После того как я сам написал несколько сетевых фреймворков и десятки приложений, пришло время поделиться с вами моими лучшими практиками, чтобы уберечь вас от ошибок, которые я совершил в прошлом.
Статья: https://www.avanderlee.com/swift/optimizing-network-reachability/
Платформа: iOS
👍1
Как нам удалось модернизировать приложение Booking.com изнутри и снаружи
В этой статье мы рассказываем об основных моментах и выводах из нашего путешествия по модернизации кодовой базы и дизайна приложения Booking.com. Статья посвящена механике запуска такой программы, поддержанию ее в рабочем состоянии и оценке эффективности.
Статья: https://medium.com/booking-product/how-we-managed-to-modernize-the-booking-com-app-from-the-inside-and-out-ed24f0e6df0a
Платформа: разработка
В этой статье мы рассказываем об основных моментах и выводах из нашего путешествия по модернизации кодовой базы и дизайна приложения Booking.com. Статья посвящена механике запуска такой программы, поддержанию ее в рабочем состоянии и оценке эффективности.
Статья: https://medium.com/booking-product/how-we-managed-to-modernize-the-booking-com-app-from-the-inside-and-out-ed24f0e6df0a
Платформа: разработка
OpenAI - поддерживаемый сообществом разработчиков пакет Swift для упрощения работы с публичным API от OpenAI. С его помощью вы можете вести чаты, генерировать изображения, транскрибировать аудио в текст, классифицировать тексты и многое другое.
OpenAI на GitHub: https://github.com/MacPaw/OpenAI
Платформа: iOS
⭐️: 549
OpenAI на GitHub: https://github.com/MacPaw/OpenAI
Платформа: iOS
⭐️: 549
❤2👍1
Combine от А до Я
Combine - это мощный Swift-фреймворк, который помогает управлять асинхронными потоками данных, предоставляя декларативный способ обработки сложных асинхронных операций. Он является неотъемлемой частью современной iOS-разработки и может использоваться в различных сценариях, таких как сетевые запросы, пользовательский ввод и многое другое.
Вот руководство по началу работы с Combine в Swift, с примерами кода для тех, у кого нет опыта.
Статья: https://daddycoding.com/2023/04/26/combine-from-a-to-z/
Платформа: iOS
Combine - это мощный Swift-фреймворк, который помогает управлять асинхронными потоками данных, предоставляя декларативный способ обработки сложных асинхронных операций. Он является неотъемлемой частью современной iOS-разработки и может использоваться в различных сценариях, таких как сетевые запросы, пользовательский ввод и многое другое.
Вот руководство по началу работы с Combine в Swift, с примерами кода для тех, у кого нет опыта.
Статья: https://daddycoding.com/2023/04/26/combine-from-a-to-z/
Платформа: iOS
Объекты данных в Kotlin
Объекты данных — это новый функционал, представленный в Kotlin 1.7.20 и планируемый к выпуску в версии 1.9. Разберемся, для чего он нужен.
Статья: https://apptractor.ru/kotlin-objects
Платформа: Android
Объекты данных — это новый функционал, представленный в Kotlin 1.7.20 и планируемый к выпуску в версии 1.9. Разберемся, для чего он нужен.
Статья: https://apptractor.ru/kotlin-objects
Платформа: Android
SwiftLint в деталях
Узнайте, как использовать и настраивать SwiftLint, а также как создавать собственные правила в SwiftLint для своего проекта.
Статья: https://www.kodeco.com/38422105-swiftlint-in-depth
Другая: https://apptractor.ru/info/articles/swiftlint.html
Платформа: iOS
Узнайте, как использовать и настраивать SwiftLint, а также как создавать собственные правила в SwiftLint для своего проекта.
Статья: https://www.kodeco.com/38422105-swiftlint-in-depth
Другая: https://apptractor.ru/info/articles/swiftlint.html
Платформа: iOS
Почему я никогда не стану Senior-разработчиком в Amazon
Удивительно, но.. "многие не обращают на это внимания, но чем выше ваша должность в крупной технологической компании, тем более безумным становится объем работы. Большинство старших разработчиков, с которыми я общался, работают не менее 60 часов в неделю со всеми проектами и встречами, в которых они участвуют. И это еще не считая того количества работы, которое требуется для достижения должности старшего инженера в Amazon".
Статья: https://apptractor.ru/info/articles/pochemu-ya-nikogda-ne-stanu-senior-razrabotchikom-v-amazon.html
Платформа: карьера
Удивительно, но.. "многие не обращают на это внимания, но чем выше ваша должность в крупной технологической компании, тем более безумным становится объем работы. Большинство старших разработчиков, с которыми я общался, работают не менее 60 часов в неделю со всеми проектами и встречами, в которых они участвуют. И это еще не считая того количества работы, которое требуется для достижения должности старшего инженера в Amazon".
Статья: https://apptractor.ru/info/articles/pochemu-ya-nikogda-ne-stanu-senior-razrabotchikom-v-amazon.html
Платформа: карьера
👍1
AppFiles - Mobile Development
Оптимизация приложения для сетевой доступности Доступность сети - важный аспект работы приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых…
И мой перевод этой статьи: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
AppTractor
Оптимизация приложения для сетевой доступности
Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
👍2
Учебник по Jetpack Compose: Как использовать FlowLayout
Если вы следите за последними обновлениями Jetpack Compose, вы, возможно, слышали о новых composable FlowRow и FlowColumn, недавно добавленных в Jetpack Compose 1.4.1. Конечно, они уже некоторое время были опубликованы в Accompanist (группа библиотек, призванных дополнить Jetpack Compose функциями, часто необходимыми разработчикам, но пока недоступными в основной версии). Но теперь они доступны в базовом фреймворке, и было бы здорово посмотреть, для чего их можно использовать.
Самая важная идея в этой компоновке заключается в том, что мы можем выкладывать элементы в контейнер, когда размер элементов или контейнера неизвестен или динамичен. Например, в примере у нас есть чипсы (теги), которые мы размещаем в случайном порядке. Фишка "Растительная пища" не помещается и переносится на следующую строку.
Статья: https://exyte.com/blog/android-flow-layout
Платформа: Android
Если вы следите за последними обновлениями Jetpack Compose, вы, возможно, слышали о новых composable FlowRow и FlowColumn, недавно добавленных в Jetpack Compose 1.4.1. Конечно, они уже некоторое время были опубликованы в Accompanist (группа библиотек, призванных дополнить Jetpack Compose функциями, часто необходимыми разработчикам, но пока недоступными в основной версии). Но теперь они доступны в базовом фреймворке, и было бы здорово посмотреть, для чего их можно использовать.
Самая важная идея в этой компоновке заключается в том, что мы можем выкладывать элементы в контейнер, когда размер элементов или контейнера неизвестен или динамичен. Например, в примере у нас есть чипсы (теги), которые мы размещаем в случайном порядке. Фишка "Растительная пища" не помещается и переносится на следующую строку.
Статья: https://exyte.com/blog/android-flow-layout
Платформа: Android
👍1
Forwarded from IT Insights
Изучение WebGPU
WebGPU — это один из современных API, предназначенных для работы с компьютерной графикой. В этом учебнике рассказывается об использовании графического API WebGPU для создания собственных 3D-приложений на C++ с нуля для Windows, Linux и macOS.
Руководство: https://eliemichel.github.io/LearnWebGPU/
WebGPU — это один из современных API, предназначенных для работы с компьютерной графикой. В этом учебнике рассказывается об использовании графического API WebGPU для создания собственных 3D-приложений на C++ с нуля для Windows, Linux и macOS.
Руководство: https://eliemichel.github.io/LearnWebGPU/
👍1
Thumb-Key - это интеллектуальная клавиатура, созданная специально для ваших больших пальцев и учитывающая требования конфиденциальности
Она имеет раскладку 3x3 и использует пролистывание для менее распространенных букв. Ее легко освоить, и она разработана для быстрой скорости набора текста.
Вместо того, чтобы полагаться на точность предсказания слов и предложений, как в большинстве популярных телефонных клавиатур, таких как Gboard и Swiftkey, Thumb-Key использует большие клавиши с предсказуемым положением, чтобы ваши глаза не охотились и не искали буквы.
По мере того, как положение клавиш будет закрепляться в вашей мышечной памяти, в конечном итоге вы сможете приблизить скорость набора текста к скорости сенсорного ввода, при этом ваши глаза никогда не должны будут покидать область редактирования текста.
Thumb-Key на GitHub: https://github.com/dessalines/thumb-key
Платформа: Android
⭐️: 268
Она имеет раскладку 3x3 и использует пролистывание для менее распространенных букв. Ее легко освоить, и она разработана для быстрой скорости набора текста.
Вместо того, чтобы полагаться на точность предсказания слов и предложений, как в большинстве популярных телефонных клавиатур, таких как Gboard и Swiftkey, Thumb-Key использует большие клавиши с предсказуемым положением, чтобы ваши глаза не охотились и не искали буквы.
По мере того, как положение клавиш будет закрепляться в вашей мышечной памяти, в конечном итоге вы сможете приблизить скорость набора текста к скорости сенсорного ввода, при этом ваши глаза никогда не должны будут покидать область редактирования текста.
Thumb-Key на GitHub: https://github.com/dessalines/thumb-key
Платформа: Android
⭐️: 268
🤔6
Хочу в iOS-разработку: к чему готовиться на собеседовании в продуктовую команду
Я Серёжа Копытов, iOS TechLead. Веду собесы в Альфе с 2020 года, многие разработчики и техлиды в команде прошли через меня. Уже через полгода интервью я активно включился в настройку подбора и сейчас основное время занимаюсь его развитием.
В статье расскажу, как выглядит наше техническое интервью, как оно стало таким, какие случаи я встречал и какие выводы сделал. Читайте, если сами общаетесь с кандидатами или проходите собеседования в IT и хотите понять, как продуктовые компании принимают решение.
Статья: https://habr.com/ru/companies/alfa/articles/728322/
Платформа: собеседование
Я Серёжа Копытов, iOS TechLead. Веду собесы в Альфе с 2020 года, многие разработчики и техлиды в команде прошли через меня. Уже через полгода интервью я активно включился в настройку подбора и сейчас основное время занимаюсь его развитием.
В статье расскажу, как выглядит наше техническое интервью, как оно стало таким, какие случаи я встречал и какие выводы сделал. Читайте, если сами общаетесь с кандидатами или проходите собеседования в IT и хотите понять, как продуктовые компании принимают решение.
Статья: https://habr.com/ru/companies/alfa/articles/728322/
Платформа: собеседование
Как использовать функциональное программирование в Kotlin для написания более качественного и чистого кода
В этом посте мы поговорим о том, что такое функциональное программирование, каковы его преимущества и потенциальные недостатки, как оно сопоставляется с альтернативной парадигмой императивного программирования, что предоставляет Kotlin разработчикам для использования ФП, а также примеры того, как мы в DoorDash пишем код в стиле ФП на Kotlin.
Статья: https://doordash.engineering/2022/03/22/how-to-leverage-functional-programming-in-kotlin-to-write-better-cleaner-code/
Платформа: программирование/Kotlin
В этом посте мы поговорим о том, что такое функциональное программирование, каковы его преимущества и потенциальные недостатки, как оно сопоставляется с альтернативной парадигмой императивного программирования, что предоставляет Kotlin разработчикам для использования ФП, а также примеры того, как мы в DoorDash пишем код в стиле ФП на Kotlin.
Статья: https://doordash.engineering/2022/03/22/how-to-leverage-functional-programming-in-kotlin-to-write-better-cleaner-code/
Платформа: программирование/Kotlin
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
•
(iOS En)
Firebase Analytics for iOS: Track User Behavior With Data-Driven Insights•
(iOS En)
Firebase Performance for iOS: Optimizing Your App's Speed•
(iOS En)
SwiftUI: Environment property. You should use it•
(iOS En)
SwiftUI Custom Video Player - YouTube Video Player•
(And Ru)
3-дюймовый смартфон: тестируем приложения как PRO•
(And En)
How to Save & Restore the Scroll Position of a LazyColumn Persistently•
(And En)
THIS Compose-State Mistake Leads to Problems In Your Code•
(Dev Ru)
Как мы запускали мобильное приложение Финуслуги•
(Dev Ru)
Podlodka #316: зачем айтишнику уметь писать?•
(Dev Ru)
Podlodka #317: делегирование•
(Dev Ru)
Виджеты: Android vs iOSПосмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
YouTube
Firebase Analytics for iOS: Track User Behavior With Data-Driven Insights | Firebase Bootcamp #21
Unlock valuable insights about your iOS app users with Firebase Analytics. In this tutorial, you'll learn how to set up and use Analytics to track user behavior, measure app performance, and make data-driven decisions. Watch now to get started!
🤙 WELCOME…
🤙 WELCOME…
Конец программирования, каким мы его знаем
Читая комментарии, я поймал себя на мысли, что критики упускают суть. ИИ все еще находится в зачаточном состоянии. Это означает, что, как и в случае с новорожденным человеком, мы должны начать думать о том, как он повлияет на нашу жизнь и средства к существованию, уже сейчас, пока его потребности не превзошли наши возможности. На данный момент у нас еще есть время, чтобы сформировать будущее, которого мы действительно хотим. Рано или поздно может наступить день, когда мы уже не сможем этого сделать.
Статья: https://apptractor.ru/info/articles/konets-programmirovaniya-kakim-my-ego-znaem.html
Платформа: ИИ/программирование
Читая комментарии, я поймал себя на мысли, что критики упускают суть. ИИ все еще находится в зачаточном состоянии. Это означает, что, как и в случае с новорожденным человеком, мы должны начать думать о том, как он повлияет на нашу жизнь и средства к существованию, уже сейчас, пока его потребности не превзошли наши возможности. На данный момент у нас еще есть время, чтобы сформировать будущее, которого мы действительно хотим. Рано или поздно может наступить день, когда мы уже не сможем этого сделать.
Статья: https://apptractor.ru/info/articles/konets-programmirovaniya-kakim-my-ego-znaem.html
Платформа: ИИ/программирование
👍3
Charts - красивые графики для iOS/tvOS/OSX, аналог MPAndroidChart.
Charts на GitHub: https://github.com/danielgindi/Charts
Платформа: iOS
⭐️: 26.6K
Charts на GitHub: https://github.com/danielgindi/Charts
Платформа: iOS
⭐️: 26.6K