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
Cheetah - приложение для macOS, работающее на основе искусственного интеллекта и предназначенное для помощи разработчикам во время удаленных интервью путем предоставления незаметных подсказок в режиме реального времени и интеграции с платформами лайв-кодинга. С Cheetah вы сможете улучшить свои результаты на собеседовании и повысить шансы получить работу, не тратя свои выходные на зубрежку задач Leetcode и заучивание алгоритмов, которые вы никогда не будете использовать.
Cheetah использует Whisper для расшифровки аудио в реальном времени и GPT-4 для генерации подсказок и решений. Для использования приложения вам необходимо иметь собственный ключ API OpenAI. Если у вас нет доступа к GPT-4, в качестве альтернативы можно использовать gpt-3.5-turbo.
Whisper запускается локально на вашей системе, используя whisper.cpp Георгия Герганова. Для оптимальной работы требуется последний Mac M1 или M2.
Cheetah на GitHub: https://github.com/leetcode-mafia/cheetah
Платформа: разработка
⭐️: 2K
Cheetah использует Whisper для расшифровки аудио в реальном времени и GPT-4 для генерации подсказок и решений. Для использования приложения вам необходимо иметь собственный ключ API OpenAI. Если у вас нет доступа к GPT-4, в качестве альтернативы можно использовать gpt-3.5-turbo.
Whisper запускается локально на вашей системе, используя whisper.cpp Георгия Герганова. Для оптимальной работы требуется последний Mac M1 или M2.
Cheetah на GitHub: https://github.com/leetcode-mafia/cheetah
Платформа: разработка
⭐️: 2K
👍3🔥1
Создайте собственные задачи и плагины Gradle менее чем за 10 минут
Перестаньте бояться Gradle и заставьте его работать на вас.
Статья: https://proandroiddev.com/make-gradle-do-more-work-for-you-than-just-build-your-android-app-9462baa08951
Платформа: Android
Перестаньте бояться Gradle и заставьте его работать на вас.
Статья: https://proandroiddev.com/make-gradle-do-more-work-for-you-than-just-build-your-android-app-9462baa08951
Платформа: Android
Обработка глубоких ссылок в SwiftUI
Глубокие ссылки позволяют открыть приложение и перейти в определенное место сразу после запуска. Примером может быть глубокая ссылка на рецепт или фильм на основе нажатой ссылки. Вы можете определить целевую страницу на основе метаданных, предоставленных URL.
Вы можете использовать модификатор представления в SwiftUI или метод AppDelegate для обработки входящих URL и соответствующей навигации. При грамотной настройке можно извлечь выгоду из открытия URL-адресов внутри приложения и перехода к нужному пункту внутри приложения.
Статья: https://www.avanderlee.com/swiftui/deeplink-url-handling/
Платформа: iOS
Глубокие ссылки позволяют открыть приложение и перейти в определенное место сразу после запуска. Примером может быть глубокая ссылка на рецепт или фильм на основе нажатой ссылки. Вы можете определить целевую страницу на основе метаданных, предоставленных URL.
Вы можете использовать модификатор представления в SwiftUI или метод AppDelegate для обработки входящих URL и соответствующей навигации. При грамотной настройке можно извлечь выгоду из открытия URL-адресов внутри приложения и перехода к нужному пункту внутри приложения.
Статья: https://www.avanderlee.com/swiftui/deeplink-url-handling/
Платформа: iOS
👍1
Секрет идеально сбалансированных пустых пространств
Самым сложным элементом дизайна, с которым приходится работать, является пустое пространство. Пустое или белое пространство — это невидимый элемент, который существует на каждом экране между компонентами.
Не существует стандарта, определяющего идеальное количество пустого пространства. Дизайнеры должны использовать свое интуитивное чувство для определения расстояний между элементами, что довольно сложно. В результате во многих проектах либо слишком мало, либо слишком много пробельных элементов.
Статья: https://apptractor.ru/develop/design/sekret-idealno-sbalansirovannyh-pustyh-prostranstv.html
Платформа: дизайн и прототипирование
Самым сложным элементом дизайна, с которым приходится работать, является пустое пространство. Пустое или белое пространство — это невидимый элемент, который существует на каждом экране между компонентами.
Не существует стандарта, определяющего идеальное количество пустого пространства. Дизайнеры должны использовать свое интуитивное чувство для определения расстояний между элементами, что довольно сложно. В результате во многих проектах либо слишком мало, либо слишком много пробельных элементов.
Статья: https://apptractor.ru/develop/design/sekret-idealno-sbalansirovannyh-pustyh-prostranstv.html
Платформа: дизайн и прототипирование
👍1👎1
Ultron - это простой и мощный фреймворк для разработки UI-тестов для Android. Он делает ваши тесты простыми, стабильными и поддерживаемыми. Ultron основан на Espresso, UI Automator и фреймворке тестирования Compose UI. Он предоставляет множество новых замечательных возможностей и дает вам полный контроль над вашими тестами, легко настраивается и расширяется.
Ultron на GitHub: https://github.com/open-tool/ultron
Статья: https://habr.com/ru/articles/730144/
Платформа: Android
⭐️: 36
Ultron на GitHub: https://github.com/open-tool/ultron
Статья: https://habr.com/ru/articles/730144/
Платформа: Android
⭐️: 36
👍1
Обработка сетевых вызовов в Swift с помощью Moya
Moya - это сетевая библиотека Swift, построенная поверх Alamofire. Она выполняет сетевые вызовы без прямого взаимодействия с Alamofire и ориентирована на выполнение сетевых запросов типобезопасным способом с использованием перечислений (например, enum).
Статья: https://medium.com/simform-engineering/handling-network-calls-in-swift-with-moya-c82908c93e5
Платформа: iOS
Moya - это сетевая библиотека Swift, построенная поверх Alamofire. Она выполняет сетевые вызовы без прямого взаимодействия с Alamofire и ориентирована на выполнение сетевых запросов типобезопасным способом с использованием перечислений (например, enum).
Статья: https://medium.com/simform-engineering/handling-network-calls-in-swift-with-moya-c82908c93e5
Платформа: iOS
🤷1
Ускоряем дебаг в разы. Зачем и как использовать брейкпоинты
Когда я только начинал заниматься Android-разработкой, я не понимал истинную силу брейкпоинтов. Отладку я делал всегда через Timber и чувствовал себя прекрасно. Но однажды друг показал мне их истинную силу, и я понял, что зря их не ценил.
Сейчас я покажу эту силу и вам.
Статья: https://habr.com/ru/companies/agima/articles/730008/
Платформа: Android
Когда я только начинал заниматься Android-разработкой, я не понимал истинную силу брейкпоинтов. Отладку я делал всегда через Timber и чувствовал себя прекрасно. Но однажды друг показал мне их истинную силу, и я понял, что зря их не ценил.
Сейчас я покажу эту силу и вам.
Статья: https://habr.com/ru/companies/agima/articles/730008/
Платформа: Android
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Показываем расширяемые текстовые поля в SwiftUI
Традиционно в iOS и macOS существует два вида элементов управления вводом текста: текстовые поля и текстовые представления. Разница между ними заключается в том, что текстовое поле принимает одну строку текста, а текстовое представление обеспечивает многострочное редактирование текста.
Хотя в macOS возможно - но не так часто - переопределить поведение текстового поля по умолчанию и игнорировать правило одной строки с помощью AppKit, в iOS такого не было. Но все это до iOS 16 и macOS 13 (Ventura), где в четвертой ревизии SwiftUI появилась функция, которую большинство разработчиков назвали бы... подарком. Речь идет о текстовых полях, которые могут расширяться как по горизонтали, так и по вертикали, что приводит к появлению нескольких строк, когда применяется последний вариант.
Плохая новость о расширяемых текстовых полях, также называемых прокручиваемыми текстовыми полями, заключается в том, что они не обеспечивают обратной совместимости. Мы не можем использовать их в проектах, поддерживающих iOS версии ниже 16 и macOS версии ниже 13. В таких случаях нам остается прибегнуть к уже готовым решениям, таким как текстовые представления.
Статья: https://serialcoder.dev/text-tutorials/swiftui/presenting-expandable-textfields-in-swiftui/
Платформа: iOS
Традиционно в iOS и macOS существует два вида элементов управления вводом текста: текстовые поля и текстовые представления. Разница между ними заключается в том, что текстовое поле принимает одну строку текста, а текстовое представление обеспечивает многострочное редактирование текста.
Хотя в macOS возможно - но не так часто - переопределить поведение текстового поля по умолчанию и игнорировать правило одной строки с помощью AppKit, в iOS такого не было. Но все это до iOS 16 и macOS 13 (Ventura), где в четвертой ревизии SwiftUI появилась функция, которую большинство разработчиков назвали бы... подарком. Речь идет о текстовых полях, которые могут расширяться как по горизонтали, так и по вертикали, что приводит к появлению нескольких строк, когда применяется последний вариант.
Плохая новость о расширяемых текстовых полях, также называемых прокручиваемыми текстовыми полями, заключается в том, что они не обеспечивают обратной совместимости. Мы не можем использовать их в проектах, поддерживающих iOS версии ниже 16 и macOS версии ниже 13. В таких случаях нам остается прибегнуть к уже готовым решениям, таким как текстовые представления.
Статья: https://serialcoder.dev/text-tutorials/swiftui/presenting-expandable-textfields-in-swiftui/
Платформа: iOS
❤1
HealthGPT - экспериментальное приложение для iOS, которое позволяет пользователям взаимодействовать с данными о своем здоровье, хранящимися в приложении Apple Health, используя естественный язык.
Построенное на базе CardinalKit, CardinalKitTemplateApplication и OpenAI. HealthGPT предлагает простое в расширении решение для тех, кто хочет создавать большие приложения на основе языковых моделей в экосистеме Apple Health.
Особенности:
• Интерфейс в стиле чата для удобного взаимодействия с медицинскими данными
• Интеграция с приложением Apple Health для обеспечения беспрепятственного использования своих данных
• Расширяемая архитектура на основе CardinalKit для легкой настройки
• Доступ к GPT-3.5 + GPT-4 через модуль OpenAI Swift
• Встроенная поддержка запросов о сне, количестве шагов, активной энергии, минутах тренировки, частоте сердечных сокращений и массе тела.
HealthGPT на GitHub: https://github.com/StanfordBDHG/HealthGPT
Платформа: iOS
⭐️: 690
Построенное на базе CardinalKit, CardinalKitTemplateApplication и OpenAI. HealthGPT предлагает простое в расширении решение для тех, кто хочет создавать большие приложения на основе языковых моделей в экосистеме Apple Health.
Особенности:
• Интерфейс в стиле чата для удобного взаимодействия с медицинскими данными
• Интеграция с приложением Apple Health для обеспечения беспрепятственного использования своих данных
• Расширяемая архитектура на основе CardinalKit для легкой настройки
• Доступ к GPT-3.5 + GPT-4 через модуль OpenAI Swift
• Встроенная поддержка запросов о сне, количестве шагов, активной энергии, минутах тренировки, частоте сердечных сокращений и массе тела.
HealthGPT на GitHub: https://github.com/StanfordBDHG/HealthGPT
Платформа: iOS
⭐️: 690
2 000 импортов: организация SwiftPM-модулей в моих приложениях
Как организовать Swift-модули ваших приложений для ясности и удобства с помощью скрытой (неофициальной) функции Swift. Практичное решение для приложений малого и среднего размера.
Статья: https://betterprogramming.pub/2-000-imports-organizing-my-apps-swiftpm-modules-f7c68c22ebd2
Платформа: iOS
Как организовать Swift-модули ваших приложений для ясности и удобства с помощью скрытой (неофициальной) функции Swift. Практичное решение для приложений малого и среднего размера.
Статья: https://betterprogramming.pub/2-000-imports-organizing-my-apps-swiftpm-modules-f7c68c22ebd2
Платформа: iOS
Суперзарядка вашего (Android) терминала
Вот некоторые из трюков и инструментов, которые я нашел за годы работы. Все они вам, конечно, не понадобятся, но если вы внедрите один или два из них в свой рабочий процесс, это даст вам преимущества в работе, которую вы выполняете каждый день. По мере продвижения вы найдете те инструменты, которые подходят вам как перчатка. Отсюда можно спуститься в кроличью нору, и кто знает, куда она может привести. Одно можно сказать наверняка: в командной строке вы будете чувствовать себя как дома и станете лучше.
Статья: https://medium.com/asos-techblog/supercharge-your-android-terminal-experience-c71448bf40cc
Платформа: Android
Вот некоторые из трюков и инструментов, которые я нашел за годы работы. Все они вам, конечно, не понадобятся, но если вы внедрите один или два из них в свой рабочий процесс, это даст вам преимущества в работе, которую вы выполняете каждый день. По мере продвижения вы найдете те инструменты, которые подходят вам как перчатка. Отсюда можно спуститься в кроличью нору, и кто знает, куда она может привести. Одно можно сказать наверняка: в командной строке вы будете чувствовать себя как дома и станете лучше.
Статья: https://medium.com/asos-techblog/supercharge-your-android-terminal-experience-c71448bf40cc
Платформа: Android
Видео и подкасты за неделю
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
•
(iOS Ru)
Coffee&Code #4: Анастасия Улитина (Amazon Prime Video)•
(iOS En)
Learning SwiftUI, when you already know UIKit•
(iOS En)
Discover how @MainActor work in less than 90 seconds•
(iOS En)
Understanding Swift Initializers•
(And Ru)
Собеседование Middle Android разработчика•
(And Ru)
Что нового в Android и куда нас приведут нейронки•
(And Ru)
Пишем Android-приложение с ChatGPT•
(And Ru)
Циклическая зависимость при создании объекта. Что это и как обойти•
(And En)
Главный доклад KotlinConf 2023•
(And En)
Now in Android: 81 - Android Studio Flamingo, Android 14 Beta 1, Kotlin DSL•
(And En)
How to Build a Multiline Text Field With Hint In Jetpack Compose•
(And En)
You're Collecting Your Flows Wrong In Compose•
(Dev Ru)
Intern Meetup Week. Mobile•
(Dev En)
Turn Midjourney Illustration to Vector in FigmaПосмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
AppTractor
Coffee&Code #4: Анастасия Улитина (Amazon Prime Video)
Поговорим о пути в FAANG, собеседовании и работе в Amazon , и узнаем чем все программисты Англии занимаются, когда не пишут код.
👍1🔥1
Как мы стриминг пилили, или 5 неочевидных палок в колеса от Flutter
Да, какие-то проблемы были из-за нашей неопытности и молодости технологии — мы стартовали проект в 2020 году. Были специфичные для Flutter баги. И были засады, которые неспецифичные для Flutter, но специфичны для натива — поэтому нативные разработчики, не спешите скроллить ленту дальше.
Статья: https://habr.com/ru/companies/surfstudio/articles/730340/
Платформа: кроссплатформа/Flutter
Да, какие-то проблемы были из-за нашей неопытности и молодости технологии — мы стартовали проект в 2020 году. Были специфичные для Flutter баги. И были засады, которые неспецифичные для Flutter, но специфичны для натива — поэтому нативные разработчики, не спешите скроллить ленту дальше.
Статья: https://habr.com/ru/companies/surfstudio/articles/730340/
Платформа: кроссплатформа/Flutter
FlorisBoard - это бесплатная клавиатура с открытым исходным кодом для устройств Android 7.0+. Ее цель - быть современной, удобной и настраиваемой, при этом полностью уважая конфиденциальность пользователя. В настоящее время находится в состоянии ранней бета-версии.
FlorisBoard на GitHub: https://github.com/florisboard/florisboard
Платформа: Android
⭐️: 4.1K
FlorisBoard на GitHub: https://github.com/florisboard/florisboard
Платформа: Android
⭐️: 4.1K
Схема кампуса в Android приложении
Еще на первом курсе я занялся разработкой мобильного приложения для просмотра расписания. Приложение росло, появлялись новые функции, и спустя 3 года им пользуются 5 тысяч студентов ежедневно, но в нем не хватало одной важной детали, а именно схемы территории. Институт большой, в нем 25 корпусов, и найти нужную аудиторию с первого раза непросто. А на сайте только картинки с номерами зданий. Где аудитория 24б-456? Как к ней пройти? Это приходится выяснять на месте перед парой и, возможно, опаздывать на нее. Похожие кейсы можно долго перечислять, и все они решаются интерактивной схемой, которая всегда будет под рукой.
Такие библиотеки уже есть, но все они стоят больших денег, а мое приложение денег не приносит, поэтому было принято волевое решение сделать все самостоятельно.
В статье до винтиков расскажу, как сделал кастомные карты и завернул в их android-библиотеку.
Статья: https://habr.com/ru/articles/729650/
Платформа: Android
Еще на первом курсе я занялся разработкой мобильного приложения для просмотра расписания. Приложение росло, появлялись новые функции, и спустя 3 года им пользуются 5 тысяч студентов ежедневно, но в нем не хватало одной важной детали, а именно схемы территории. Институт большой, в нем 25 корпусов, и найти нужную аудиторию с первого раза непросто. А на сайте только картинки с номерами зданий. Где аудитория 24б-456? Как к ней пройти? Это приходится выяснять на месте перед парой и, возможно, опаздывать на нее. Похожие кейсы можно долго перечислять, и все они решаются интерактивной схемой, которая всегда будет под рукой.
Такие библиотеки уже есть, но все они стоят больших денег, а мое приложение денег не приносит, поэтому было принято волевое решение сделать все самостоятельно.
В статье до винтиков расскажу, как сделал кастомные карты и завернул в их android-библиотеку.
Статья: https://habr.com/ru/articles/729650/
Платформа: Android
❤3
Как Senior iOS-инженеры оформляют код: производительность и ясность
Эта статья - результат изучения Swift Style от The Pragmatic Bookshelf и жизненного опыта. Это руководство может пригодиться iOS-инженеру любого уровня.
Статья: https://medium.com/@james.daniel.isaiah/how-senior-ios-engineers-style-code-for-performance-and-clarity-467fa2a9d1f1
Платформа: iOS
Эта статья - результат изучения Swift Style от The Pragmatic Bookshelf и жизненного опыта. Это руководство может пригодиться iOS-инженеру любого уровня.
Статья: https://medium.com/@james.daniel.isaiah/how-senior-ios-engineers-style-code-for-performance-and-clarity-467fa2a9d1f1
Платформа: iOS
Толковых каналов по iOS не так уж много. Поэтому, рекомендуем обратить внимание и подписаться на канал нашего коллеги – iOS / Swift Tips.
Там найдете: туториалы, best practices, материалы для подготовки к собесам, ну и конечно же архитектуре, куда без нее 💪
Несколько интересных постов с канала
• Swift iOS interview questions and answers
• 7 iOS Projects to Become a Better iOS Developer
• In-App Purchases in iOS
Подписывайтесь: @swift_tips
Там найдете: туториалы, best practices, материалы для подготовки к собесам, ну и конечно же архитектуре, куда без нее 💪
Несколько интересных постов с канала
• Swift iOS interview questions and answers
• 7 iOS Projects to Become a Better iOS Developer
• In-App Purchases in iOS
Подписывайтесь: @swift_tips
👍1