Шаблон Цепочка обязанностей и его реализация на Swift
Поведенческие модели проектирования необходимы для оптимизации взаимодействия между объектами в программной системе. Один из таких паттернов, «Цепочка обязанностей», особенно полезен для организации и управления тем, как запрос обрабатывается различными компонентами системы. Отделяя отправителя запроса от его получателей, этот паттерн повышает гибкость и упрощает сопровождение кода. В этой статье мы рассмотрим паттерн «Цепочка обязанностей» и продемонстрируем его реализацию с помощью кода Swift.
Статья: https://apptractor.ru/Chain-of-responsibility
Платформа: Swift
Поведенческие модели проектирования необходимы для оптимизации взаимодействия между объектами в программной системе. Один из таких паттернов, «Цепочка обязанностей», особенно полезен для организации и управления тем, как запрос обрабатывается различными компонентами системы. Отделяя отправителя запроса от его получателей, этот паттерн повышает гибкость и упрощает сопровождение кода. В этой статье мы рассмотрим паттерн «Цепочка обязанностей» и продемонстрируем его реализацию с помощью кода Swift.
Статья: https://apptractor.ru/Chain-of-responsibility
Платформа: Swift
Swift Power Assert - показывает информацию о состоянии всех переменных ассерта в виде удобной диаграммы (Power assertions или Диаграммные утверждения дополняют неудачи утверждений информацией о значениях, полученных при оценке условия, и представляют ее в легко усваиваемой форме).
Swift Power Assert реализована с использованием макросов - экспериментальной возможности Swift. Поэтому для использования этой библиотеки необходимо использовать предварительную версию инструментов Swift.
Swift Power Assert на GitHub: https://github.com/kishikawakatsumi/swift-power-assert
Платформа: iOS
⭐️: 136
Swift Power Assert реализована с использованием макросов - экспериментальной возможности Swift. Поэтому для использования этой библиотеки необходимо использовать предварительную версию инструментов Swift.
Swift Power Assert на GitHub: https://github.com/kishikawakatsumi/swift-power-assert
Платформа: iOS
⭐️: 136
В Compose враг номер один - это ненужные рекомпозиции. Часто разработчики используют такие инструменты, как recompositionHighligher, LogComposition и layout inspector для подсчета рекомпозиций, но нет прямого способа понять, почему произошла рекомпозиция. Rebugger - это простая функция компоновки, которая может отслеживать изменения в заданных аргументах. Она выводит причину рекомпозиции в окно Logcat.
Rebugger на GitHub: https://github.com/theapache64/rebugger
Платформа: Android
⭐️: 339
Rebugger на GitHub: https://github.com/theapache64/rebugger
Платформа: Android
⭐️: 339
До того, как это стало стримом — рассказываем о настройке потокового вещания
Пользователь запускает приложение, нажимает кнопку — и вжух, уже стримит в сеть, а к его стриму подключаются другие пользователи. В плеере в этот момент происходит огромная работа: скрипты забирают изображение и звук, кодируют, пакуют в контейнеры, и передают данные в местный разгрузочный порт, где контейнер снова разбивают на упакованное в него видео и аудио. Сколько усилий! Как эти усилия выглядят на самом деле и о способах настройки потокового вещания на примере работы с протоколом SRT рассказывает iOS-разработчик CleverPumpkin Никита Тархов.
Статья: https://apptractor.ru/stream-potok
Платформа: iOS
Пользователь запускает приложение, нажимает кнопку — и вжух, уже стримит в сеть, а к его стриму подключаются другие пользователи. В плеере в этот момент происходит огромная работа: скрипты забирают изображение и звук, кодируют, пакуют в контейнеры, и передают данные в местный разгрузочный порт, где контейнер снова разбивают на упакованное в него видео и аудио. Сколько усилий! Как эти усилия выглядят на самом деле и о способах настройки потокового вещания на примере работы с протоколом SRT рассказывает iOS-разработчик CleverPumpkin Никита Тархов.
Статья: https://apptractor.ru/stream-potok
Платформа: iOS
MarkdownUI - это мощная библиотека для отображения и настройки Markdown-текста в SwiftUI. Она совместима с GitHub Flavored Markdown Spec и может отображать изображения, заголовки, списки, кавычки, блоки кода, таблицы, а также стилизованный текст и ссылки.
MarkdownUI предлагает понятные функции создания тем для настройки отображения текста. Вы можете использовать встроенные темы, создавать свои собственные или переопределять стили текста и блоков.
Работает минимум на iOS 15.0.
MarkdownUI на GitHub: https://github.com/gonzalezreal/swift-markdown-ui
Платформа: iOS
⭐️: 1.3K
MarkdownUI предлагает понятные функции создания тем для настройки отображения текста. Вы можете использовать встроенные темы, создавать свои собственные или переопределять стили текста и блоков.
Работает минимум на iOS 15.0.
MarkdownUI на GitHub: https://github.com/gonzalezreal/swift-markdown-ui
Платформа: iOS
⭐️: 1.3K
5 способов подготовить ваше приложение к выходу Android Studio Flamingo
При обновлении до Android Studio Flamingo и Android Gradle Plugin 8.0 необходимо обновить файлы сборки приложений, чтобы учесть пять важных изменений в поведении сборки.
Статья (
Платформа: Android
При обновлении до Android Studio Flamingo и Android Gradle Plugin 8.0 необходимо обновить файлы сборки приложений, чтобы учесть пять важных изменений в поведении сборки.
Статья (
En
): https://apptractor.ru/5-ways-to-prepare-your-appПлатформа: Android
Как использовать If Case Let в Swift и не сойти с ума
Например, если у вас есть коробка конфет и вы хотите проверить, есть ли в ней карамель, вы можете использовать для этого "if case let".
Статья (
Платформа: iOS
Например, если у вас есть коробка конфет и вы хотите проверить, есть ли в ней карамель, вы можете использовать для этого "if case let".
Статья (
En
): https://apptractor.ru/if-case-let-in-swiftПлатформа: iOS
Forwarded from Код Воробья для iOS разработчиков
В 💻 Xcode 14 прокачали автокомплит - инициализаторы, Codable, форматирование и другое. В видео наглядно, как это работает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Сам себе экосистема: Как я адаптировал старый смартфон под современные реалии и написал клиенты нужных мне сервисов
Время неумолимо бежит вперед: выходят новые гаджеты, постепенно заменяя старые, превращая их в тыкву или в лучшем случае, в «тапочек» для звонков. Сейчас смартфоны стали практически одинаковы во всем: дисплей на всю площадь передней панели, почти полное отсутствие аппаратных кнопок, беспроводная зарядка… Это всё, конечно, здорово, но ведь иногда так хочется взять в руки старый, но такой необычный в наше время QWERTY-смартфон и попытатьфся его использовать как основной, да и цены на них могут приятно удивить: БУ девайс можно купить за несколько сотен рублей (~5-10$). Одна проблема — клиенты приложений на версии Android 1.6-2.0 безбожно устарели и давно не работают. Но иногда желание воскресить старый девайс превыше потребительского качества и тут я пришёл к мысли… а почему бы не написать с нуля свои клиенты популярных приложений? ВК с музыкой, YouTube, трекинг посылок. Так я и сел писать необходимые в повседневной жизни приложения, с нуля, на голом API Android, без каких либо фреймворков (и даже AppCompat).
Статья: https://habr.com/ru/companies/timeweb/articles/726086/
Платформа: Android
Время неумолимо бежит вперед: выходят новые гаджеты, постепенно заменяя старые, превращая их в тыкву или в лучшем случае, в «тапочек» для звонков. Сейчас смартфоны стали практически одинаковы во всем: дисплей на всю площадь передней панели, почти полное отсутствие аппаратных кнопок, беспроводная зарядка… Это всё, конечно, здорово, но ведь иногда так хочется взять в руки старый, но такой необычный в наше время QWERTY-смартфон и попытатьфся его использовать как основной, да и цены на них могут приятно удивить: БУ девайс можно купить за несколько сотен рублей (~5-10$). Одна проблема — клиенты приложений на версии Android 1.6-2.0 безбожно устарели и давно не работают. Но иногда желание воскресить старый девайс превыше потребительского качества и тут я пришёл к мысли… а почему бы не написать с нуля свои клиенты популярных приложений? ВК с музыкой, YouTube, трекинг посылок. Так я и сел писать необходимые в повседневной жизни приложения, с нуля, на голом API Android, без каких либо фреймворков (и даже AppCompat).
Статья: https://habr.com/ru/companies/timeweb/articles/726086/
Платформа: Android
😱2❤1
Pocket Shop - мобильный магазин, выполненный в лучших правилах MAD. Внутри Kotlin, Coroutines + Flow, Jetpack, MVVM, Retrofit2 & OkHttp3, Moshi и все остальные инструменты.
Pocket Shop на GitHub: https://github.com/AYOMITIDE-OAJ/pocketshop
Платформа: Android
⭐️: 1
Pocket Shop на GitHub: https://github.com/AYOMITIDE-OAJ/pocketshop
Платформа: Android
⭐️: 1
Вышла стабильная версия Android Studio Flamingo
Этот выпуск включает улучшения, помогающие создавать до пикселя идеальный пользовательский интерфейс с помощью Live Edit, шаблоны проектов с Jetpack Compose и Material 3, новые функции, помогающие инспектировать ваше приложение, обновления IntelliJ, App Quality Insights и многое другое.
Анонс: https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html
Платформа: Android
Этот выпуск включает улучшения, помогающие создавать до пикселя идеальный пользовательский интерфейс с помощью Live Edit, шаблоны проектов с Jetpack Compose и Material 3, новые функции, помогающие инспектировать ваше приложение, обновления IntelliJ, App Quality Insights и многое другое.
Анонс: https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html
Платформа: Android
Видео и подкасты за неделю
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
•
(iOS En)
Видео iOS Conf SG 2023•
(iOS En)
I built a mobile app without experience in just one day using AI•
(iOS En)
Understanding the Role of Expressions in Swift•
(iOS En)
Meet the New Native Video Picker API For SwiftUI•
(And Ru)
Как научиться программировать под андроид с нуля•
(And Ru)
Как уменьшить размер Android приложения•
(And Ru)
Оптимизация Compose•
(And En)
What's new in Android Studio - Flamingo•
(And En)
CameraX Foundations•
(And En)
Building Your First Wear OS App with Jetpack Compose•
(And En)
Pagination from Remote API & Local Cache Using Paging3, Compose and Clean Architecture•
(Crs Ru)
Видео Flutter Weekend Study•
(Dev Ru)
Mobile SRE: что перезагружать, когда перезагружать нечего•
(Dev Ru)
DivKit. Server Driven UI. Ольга Ким. Яндекс•
(Dev Ru)
Трудности архитектуры, платформ и их изучения•
(Dev En)
Being Successful with Open Source in Game DevelopmentПосмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
AppTractor
Видео iOS Conf SG 2023
Как и каждый год, в январе 2023 года сотни разработчиков со всего мира собрались вместе, чтобы поделиться своими знаниями и навыками.
Освоение Canvas в SwiftUI
В SwiftUI можно рисовать 2D-графику с помощью Shape API, но в итоге фреймворк преобразует все фигуры в представления SwiftUI и рендерит их. У этого подхода есть свои плюсы и минусы. К счастью, мы можем рисовать насыщенную 2D-графику, не комбинируя несколько фигур. На этой неделе мы узнаем, как использовать представление Canvas в SwiftUI.
Статья: https://swiftwithmajid.com/2023/04/11/mastering-canvas-in-swiftui/
Платформа: iOS
В SwiftUI можно рисовать 2D-графику с помощью Shape API, но в итоге фреймворк преобразует все фигуры в представления SwiftUI и рендерит их. У этого подхода есть свои плюсы и минусы. К счастью, мы можем рисовать насыщенную 2D-графику, не комбинируя несколько фигур. На этой неделе мы узнаем, как использовать представление Canvas в SwiftUI.
Статья: https://swiftwithmajid.com/2023/04/11/mastering-canvas-in-swiftui/
Платформа: iOS
👍1
Mockingbird - библиотека для мокирования, позволяет легко подражать, создавать заглушки и проверять объекты в модульных тестах Swift. Вы можете тестировать как Swift, так и Objective-C код без написания шаблонов или модификации производственного кода.
Mockingbird на GitHub: https://github.com/birdrides/mockingbird
Платформа: iOS
⭐️: 573
Mockingbird на GitHub: https://github.com/birdrides/mockingbird
Платформа: iOS
⭐️: 573
KotlinConf 2023 Keynote
На открытии KotlinConf 2023 представители JetBrains сделали несколько интересных анонсов о языке Kotlin и развитии экосистемы вокруг него.
Так:
• Компилятор K2 будет выпущен с Kotlin 2.0.
• Gradle Kotlin DSL будет использоваться по умолчанию в новых сборках.
• В Google наблюдается стремительный рост внедрения языка Kotlin.
• Kotlin Foundation запускает программу финансирования для авторов библиотек и программу членства для компаний.
• Kotlin Multiplatform станет стабильным в этом году.
• Вышла альфа-версия Compose для iOS.
• Экспериментальный Compose для Web будет работать на базе Kotlin/Wasm.
Видео: https://youtu.be/c4f4SCEYA5Q
Сайт: https://blog.jetbrains.com/kotlin/2023/04/kotlinconf-2023-opening-keynote/
Платформа: Android
На открытии KotlinConf 2023 представители JetBrains сделали несколько интересных анонсов о языке Kotlin и развитии экосистемы вокруг него.
Так:
• Компилятор K2 будет выпущен с Kotlin 2.0.
• Gradle Kotlin DSL будет использоваться по умолчанию в новых сборках.
• В Google наблюдается стремительный рост внедрения языка Kotlin.
• Kotlin Foundation запускает программу финансирования для авторов библиотек и программу членства для компаний.
• Kotlin Multiplatform станет стабильным в этом году.
• Вышла альфа-версия Compose для iOS.
• Экспериментальный Compose для Web будет работать на базе Kotlin/Wasm.
Видео: https://youtu.be/c4f4SCEYA5Q
Сайт: https://blog.jetbrains.com/kotlin/2023/04/kotlinconf-2023-opening-keynote/
Платформа: Android
👍2
Цикломатическая сложность в Swift
Вы когда-нибудь чувствовали, что ваш код выходит из-под контроля? Вам трудно понять или поддерживать определенную функцию или модуль в вашем приложении? Если да, то вы можете столкнуться с проблемой цикломатической сложности, и это более распространенное явление, чем вы думаете.
Цикломатическая сложность — это модный термин, обозначающий количество точек принятия решений в коде. На самом деле это очень просто. По сути, чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.
Статья: https://apptractor.ru/info/articles/tsiklomaticheskaya-slozhnost-v-swift.html
Платформа: Swift/программирование
Вы когда-нибудь чувствовали, что ваш код выходит из-под контроля? Вам трудно понять или поддерживать определенную функцию или модуль в вашем приложении? Если да, то вы можете столкнуться с проблемой цикломатической сложности, и это более распространенное явление, чем вы думаете.
Цикломатическая сложность — это модный термин, обозначающий количество точек принятия решений в коде. На самом деле это очень просто. По сути, чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.
Статья: https://apptractor.ru/info/articles/tsiklomaticheskaya-slozhnost-v-swift.html
Платформа: Swift/программирование
Что такое Gradle Kotlin DSL?
В этой статье мы поговорим о Gradle, почему именно Kotlin DSL, и о переходе от Groovy к Kotlin DSL.
Статья: https://medium.com/@talhafaki/what-is-gradle-kotlin-dsl-a995aafc5e5c
Платформа: Android
В этой статье мы поговорим о Gradle, почему именно Kotlin DSL, и о переходе от Groovy к Kotlin DSL.
Статья: https://medium.com/@talhafaki/what-is-gradle-kotlin-dsl-a995aafc5e5c
Платформа: Android
Redukks - простая, типобезопасная и тестируемая реализация архитектуры Redux/Uniflow для Kotlin Multiplatform. Она упрощает создание хранилищ, редукторов и действий, а также предоставляет простой способ их тестирования.
Архитектура Uniflow основана на одной простой идее - ваше приложение представляет собой постоянный цикл данных, которые текут в одном направлении. Состояние и его изменения управляются пользовательским интерфейсом, а пользовательский интерфейс управляется состоянием. Это позволяет вам иметь единый источник истины и предоставляет вам простой способ думать и рассуждать о вашем приложении.
Эта библиотека находится в стадии альфа-версии.
Redukks на GitHub: https://github.com/ianrumac/redukks/
Платформа: Android/KMM
⭐️: 22
Архитектура Uniflow основана на одной простой идее - ваше приложение представляет собой постоянный цикл данных, которые текут в одном направлении. Состояние и его изменения управляются пользовательским интерфейсом, а пользовательский интерфейс управляется состоянием. Это позволяет вам иметь единый источник истины и предоставляет вам простой способ думать и рассуждать о вашем приложении.
Эта библиотека находится в стадии альфа-версии.
Redukks на GitHub: https://github.com/ianrumac/redukks/
Платформа: Android/KMM
⭐️: 22
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация Apple Hello
В настоящее время я работаю над неанонсированным проектом, но могу сообщить, что в нем будет использована анимация "hello" от Apple. Это знаковая анимация, в которой от руки написано слово "привет". Вы можете увидеть ее в действии в весеннем кейноуте Apple 2020 года. К сожалению, в SwiftUI нет встроенной функции для достижения этого эффекта, поэтому мне пришлось создавать все с нуля.
Статья (
Платформа: iOS
Поставьте 👍, если хотите эту статью на русском!
В настоящее время я работаю над неанонсированным проектом, но могу сообщить, что в нем будет использована анимация "hello" от Apple. Это знаковая анимация, в которой от руки написано слово "привет". Вы можете увидеть ее в действии в весеннем кейноуте Apple 2020 года. К сожалению, в SwiftUI нет встроенной функции для достижения этого эффекта, поэтому мне пришлось создавать все с нуля.
Статья (
En
): https://thisdevbrain.com/apple-hello-animation/Платформа: iOS
Поставьте 👍, если хотите эту статью на русском!
💩1
Как Slack отправляет миллионы сообщений в режиме реального времени
В этой статье мы опишем архитектуру, которую мы используем для отправки сообщений в режиме реального времени в таких масштабах. Мы подробно рассмотрим сервисы, которые отправляют сообщения в чаты и рассылают различные события онлайн-пользователям в режиме реального времени. Наши основные службы написаны на Java - это серверы каналов (Channel Servers, CS), серверы шлюзов (Gateway Servers, GS), серверы администраторов (Admin Servers, AS) и серверы присутствия (Presence Servers, PS).
Статья: https://apptractor.ru/slack-online
Платформа: разработка
В этой статье мы опишем архитектуру, которую мы используем для отправки сообщений в режиме реального времени в таких масштабах. Мы подробно рассмотрим сервисы, которые отправляют сообщения в чаты и рассылают различные события онлайн-пользователям в режиме реального времени. Наши основные службы написаны на Java - это серверы каналов (Channel Servers, CS), серверы шлюзов (Gateway Servers, GS), серверы администраторов (Admin Servers, AS) и серверы присутствия (Presence Servers, PS).
Статья: https://apptractor.ru/slack-online
Платформа: разработка
👍1