Swift Async Algorithms — это open-source пакет Apple с асинхронными последовательностями и расширенными алгоритмами. Этот пакет предлагает три основные цели: интеграция с async/await, основа для алгоритмов, основанных на времени, кроссплатформенный и открытый исходный код.
Swift Async Algorithms на GitHub: https://github.com/apple/swift-async-algorithms
Платформа: iOS/Swift
⭐️: 649
Swift Async Algorithms на GitHub: https://github.com/apple/swift-async-algorithms
Платформа: iOS/Swift
⭐️: 649
Используем новый keyboardLayoutGuide, чтобы защитить View от перекрытия клавиатурой
Мы рассмотрим новый способ решения очень старой проблемы, появившийся в iOS 15. Заключается она в положении UITextField при появлении клавиатуры.
Статья: https://apptractor.ru/keyboardlayoutguide
Платформа: iOS
Мы рассмотрим новый способ решения очень старой проблемы, появившийся в iOS 15. Заключается она в положении UITextField при появлении клавиатуры.
Статья: https://apptractor.ru/keyboardlayoutguide
Платформа: iOS
А вот иной подход для борьбы с клавиатурой - встраивать все в ScrollView.
Каждый экран в вашем приложении должен быть прокручиваемым.
В этой статье я расскажу вам, почему каждый основной экран вашего приложения должен быть встроен в ScrollView.
Как? Все в моем приложении нужно прокручивать, скажете вы?! Да, раньше я соглашался с вами, но за последние пять лет я понял, что это почти всегда верное предположение.
Я собираюсь объяснить, почему почти каждый экран в вашем приложении должен быть встроен во что-то вроде UIKit UIScrollView, UITableView или UICollectionView (или ScrollView, List или Form в SwiftUI).
Статья: https://apptractor.ru/scrlvw
Платформа: iOS
Каждый экран в вашем приложении должен быть прокручиваемым.
В этой статье я расскажу вам, почему каждый основной экран вашего приложения должен быть встроен в ScrollView.
Как? Все в моем приложении нужно прокручивать, скажете вы?! Да, раньше я соглашался с вами, но за последние пять лет я понял, что это почти всегда верное предположение.
Я собираюсь объяснить, почему почти каждый экран в вашем приложении должен быть встроен во что-то вроде UIKit UIScrollView, UITableView или UICollectionView (или ScrollView, List или Form в SwiftUI).
Статья: https://apptractor.ru/scrlvw
Платформа: iOS
Groceries Store - готовый продуктовый магазин с заказом продуктов. Основная цель этого проекта — продемонстрировать современные навыки разработки Android в реальной производственной среде, сократить время обучения при переходе в мир разработки Android.
Groceries Store на GitHub: https://github.com/hieuwu/android-groceries-store
Платформа: Android
⭐️: 50
Groceries Store на GitHub: https://github.com/hieuwu/android-groceries-store
Платформа: Android
⭐️: 50
Как защитить Android-приложения от реверс-инжиниринга и утечки данных
Простые советы о том, как хоть немного защитить приложение от взлома:
• Обнаружение несанкционированного доступа
• SafetyNet
• ProGuard
• Шифрование данных пользователя
• Шифрование базы данных
Статья: https://apptractor.ru/rvrsdrd
Платформа: Android
👋: 74
Простые советы о том, как хоть немного защитить приложение от взлома:
• Обнаружение несанкционированного доступа
• SafetyNet
• ProGuard
• Шифрование данных пользователя
• Шифрование базы данных
Статья: https://apptractor.ru/rvrsdrd
Платформа: Android
👋: 74
👍1👎1
Forwarded from Код Воробья для iOS разработчиков
Как устроено приложение Настройки. Сделано нативно.
Сделали на сценах. Root это split-контроллер, проявляется на 5.5+ айфоне и айпадах. Домашний экран назвали
Ячейки, иконки и аксесуары установлены в дефотные вьюхи. На втором скрине кликабельный текст в футере сделали через кастомную футер-вью. Кнопку добавили через формат-текст в
Когда доступно обновление, на домашнем экране появляется ячейка с красным кружком. Это сделали картинкой с лейблом, класс назвали
Иконки ячеек установлены в дефолтный контейнер. Библиотека SPSettingsIcons генерирует такие иконки для SFSymbols кодом.
#ViewHierarchy
Сделали на сценах. Root это split-контроллер, проявляется на 5.5+ айфоне и айпадах. Домашний экран назвали
UIPrefsListController
.Ячейки, иконки и аксесуары установлены в дефотные вьюхи. На втором скрине кликабельный текст в футере сделали через кастомную футер-вью. Кнопку добавили через формат-текст в
UITextView
. Когда доступно обновление, на домашнем экране появляется ячейка с красным кружком. Это сделали картинкой с лейблом, класс назвали
BadgedTableViewCell
. Ячейка аккаунта названа UIAppleAccountCell
.Иконки ячеек установлены в дефолтный контейнер. Библиотека SPSettingsIcons генерирует такие иконки для SFSymbols кодом.
#ViewHierarchy
❤2🤔1
SwiftLint - инструмент для соблюдения стилей и соглашений Swift, частично основанный на теперь заархивированном GitHub Swift Style Guide. SwiftLint применяет правила, которые общеприняты в сообществе Swift. Эти правила хорошо описаны в популярных руководствах по стилю, таких как, например, Ray Wenderlich Swift Style Guide.
SwiftLint на GitHub: https://github.com/realm/SwiftLint
Статья: https://apptractor.ru/info/articles/swiftlint.html
Платформа: iOS/Swift
⭐️: 15.9К
SwiftLint на GitHub: https://github.com/realm/SwiftLint
Статья: https://apptractor.ru/info/articles/swiftlint.html
Платформа: iOS/Swift
⭐️: 15.9К
Как один Android-разработчик за месяц сократил время запуска приложения Lyft 21%
Lyft уделяет особое внимание качеству приложений. Как райдшеринговая компания, предоставляющая жизненно важные, срочные услуги десяткам миллионов пассажиров и сотням тысяч водителей, они должны быть такими. В таком масштабе каждое замедление, пропущенный кадр или сбой приложения могут привести к потере времени тысяч пользователей. Даже незначительная заминка повлияет на множество едущих (или везущих) пользователей. К счастью, команда разработчиков Lyft внимательно следит за производительностью своего приложения. Так они впервые заметили замедление времени запуска Android-приложения для своих водителей.
Перевод: https://apptractor.ru/lyft21
Платформа: Android
Lyft уделяет особое внимание качеству приложений. Как райдшеринговая компания, предоставляющая жизненно важные, срочные услуги десяткам миллионов пассажиров и сотням тысяч водителей, они должны быть такими. В таком масштабе каждое замедление, пропущенный кадр или сбой приложения могут привести к потере времени тысяч пользователей. Даже незначительная заминка повлияет на множество едущих (или везущих) пользователей. К счастью, команда разработчиков Lyft внимательно следит за производительностью своего приложения. Так они впервые заметили замедление времени запуска Android-приложения для своих водителей.
Перевод: https://apptractor.ru/lyft21
Платформа: Android
Unfurl - библиотека извлекает метаданные веб-страницы и генерит ее превью, как в Slack.
Unfurl на GitHub: https://github.com/saket/unfurl
Платформа: Android
⭐️: 181
Unfurl на GitHub: https://github.com/saket/unfurl
Платформа: Android
⭐️: 181
Реализация сетевой части в пошаговой игре
Ни к чему не обязывающая, но забавная статья о реализации сетевого обновления в пошаговой игре. На самом высоком уровне - об архитектуре того, как передавать сообщения между сервером и игроками.
Перевод: https://apptractor.ru/svrdnrvn
Платформа: игры
Ни к чему не обязывающая, но забавная статья о реализации сетевого обновления в пошаговой игре. На самом высоком уровне - об архитектуре того, как передавать сообщения между сервером и игроками.
Перевод: https://apptractor.ru/svrdnrvn
Платформа: игры
UIViewCanvas - пакет, который просто добавляет отображение SwiftUI (SwiftUI PreviewProvider) в Xcode к стандартным UIView или ViewController-ам.
UIViewCanvas на GitHub: https://github.com/outrowender/UIViewCanvas
Платформа: iOS
⭐️: 8
UIViewCanvas на GitHub: https://github.com/outrowender/UIViewCanvas
Платформа: iOS
⭐️: 8
MaterialChipSetWidget - библиотека Kotlin, которая позволяет создавать несколько подменю или одно меню, состоящее из нескольких чипов.
MaterialChipSetWidget на GitHub: https://github.com/JustinGeorgeJoseph/MaterialChipsetWidget
Платформа: Android
⭐️: 15
MaterialChipSetWidget на GitHub: https://github.com/JustinGeorgeJoseph/MaterialChipsetWidget
Платформа: Android
⭐️: 15
❤2
Apple выпускает подробные туториалы в течение последних нескольких лет. Мы уже видели «Введение в SwiftUI», затем углубленные «Разработка приложений для iOS», а в этом руководстве Apple разбирает конкретный пример работы приложения About Me на SwiftUI. Темы:
• Навигация
• Представление контента
• Получение контента с сервера
• Отклик на действия пользователя
Все это с кодом и пошаговыми объяснениями.
Туториал: https://developer.apple.com/tutorials/Sample-Apps
Платформа: iOS
• Навигация
• Представление контента
• Получение контента с сервера
• Отклик на действия пользователя
Все это с кодом и пошаговыми объяснениями.
Туториал: https://developer.apple.com/tutorials/Sample-Apps
Платформа: iOS
👍1
Стабилизируем, моделируем, модернизируем: масштабирование мобильной кодовой базы Slack
Когда вам нужно начать переделывать базу кода, чтобы решить проблему технического долга? Каков наилучший способ устранения широко распространенных несоответствий и устаревших шаблонов? Как вы можете внести значительные архитектурные улучшения в сложное приложение, продолжая добавлять новые фичи?
С этими вопросами столкнулись разработчики Slack в начале 2020 года, когда поняли, что технический долг в мобильных кодовых базах Slack настолько замедлил разработку, что это повлияло на разработку продуктов, и для решения этой проблемы потребуется серьезный рефакторинг.
Это история из двух частей о кросс-функциональной инициативе, которую запустили в компании для решения этих вопросов.
Статьи: первая и вторая
Платформа: iOS/Android
Когда вам нужно начать переделывать базу кода, чтобы решить проблему технического долга? Каков наилучший способ устранения широко распространенных несоответствий и устаревших шаблонов? Как вы можете внести значительные архитектурные улучшения в сложное приложение, продолжая добавлять новые фичи?
С этими вопросами столкнулись разработчики Slack в начале 2020 года, когда поняли, что технический долг в мобильных кодовых базах Slack настолько замедлил разработку, что это повлияло на разработку продуктов, и для решения этой проблемы потребуется серьезный рефакторинг.
Это история из двух частей о кросс-функциональной инициативе, которую запустили в компании для решения этих вопросов.
Статьи: первая и вторая
Платформа: iOS/Android
Библиотека нашего читателя: Fragula 2 – расширение библиотеки NavComponent от Google, которая всего в пару строк позволяет реализовать популярный паттерн "swipe-to-dismiss" в приложении.
Под капотом в библиотеке используется ViewPager2 с кастомной анимацией перелистывания, прямо как в приложении Telegram X под андроид.
Проект активно развивается, любые идеи и предложения приветствуются. В ближайшее время будет добавлена поддержка вертикального скролла, что позволит расширить область применения данной библиотеки.
Fragula 2 на GitHub: https://github.com/massivemadness/Fragula
Платформа: Android
⭐️: 12
Под капотом в библиотеке используется ViewPager2 с кастомной анимацией перелистывания, прямо как в приложении Telegram X под андроид.
Проект активно развивается, любые идеи и предложения приветствуются. В ближайшее время будет добавлена поддержка вертикального скролла, что позволит расширить область применения данной библиотеки.
Fragula 2 на GitHub: https://github.com/massivemadness/Fragula
Платформа: Android
⭐️: 12
🔥1
Forwarded from Код Воробья для iOS разработчиков
На фрилансе заказчики выбирают программиста по его приложениям в сторе. У меня появилась идея собрать личные приложения в одном месте - в новой версии сайта появится страница с приложениями разработчиков.
Добавляйте приложения в файл в публичном репозитории на github. Если аппа поддерживает английский язык, внесите её в оба файла в папках
Добавляйте приложения в файл в публичном репозитории на github. Если аппа поддерживает английский язык, внесите её в оба файла в папках
/ru
и /en
. После изменений делайте Pull Request.❤1💩1
R.swift - строго типизированные ресурсы с автодополнением для изображений, шрифтов, жестов и пр в проектах Swift.
Эта библиотека:
• Делает ваш код, который использует ресурсы, полностью типизированным, с меньшим кастингом и угадывания того, что вернет метод
• Проверяет все во время компиляции и больше нет неправильных имен, которые приводят к сбою приложения во время выполнения.
• Делает автодополнение, не нужно угадывать имя ресурса
Было:
Платформа: iOS
⭐️: 8.6К
Эта библиотека:
• Делает ваш код, который использует ресурсы, полностью типизированным, с меньшим кастингом и угадывания того, что вернет метод
• Проверяет все во время компиляции и больше нет неправильных имен, которые приводят к сбою приложения во время выполнения.
• Делает автодополнение, не нужно угадывать имя ресурса
Было:
let icon = UIImage(named: "settings-icon")Стало:
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indicator highlight")
let icon = R.image.settingsIcon()R.swift на GitHub: https://github.com/mac-cain13/R.swift
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
Платформа: iOS
⭐️: 8.6К
👍3
Продвинутые формы для ваших Drawable
Распространенным шаблоном проектирования является включение содержимого в контейнер. Это может быть карточка или любой другой макет с цветным фоном. Android-приложения часто используют для этой цели популярный компонент
Все эти решения прекрасно работают до тех пор, пока вы не начнете работать с высотами и z-трансляциями, потому что Android не может автоматически рисовать тень, соответствующую вашей пользовательской форме. Я бы хотел бы показать вам новые классы, которые могут помочь вам создать свои уникальные формы и позволить системе соответствующим образом генерировать тени.
Статья: https://apptractor.ru/drdshp
Платформа: Android
👋: 92
Распространенным шаблоном проектирования является включение содержимого в контейнер. Это может быть карточка или любой другой макет с цветным фоном. Android-приложения часто используют для этой цели популярный компонент
CardView
, а в других есть растровые изображения, 9-patch битмапы, векторы и многие другие типы графических элементов. В физическом мире объекты могут складываться или прикрепляться друг к другу, но не могут проходить друг через друга. Они отбрасывают тени и отражают свет.Все эти решения прекрасно работают до тех пор, пока вы не начнете работать с высотами и z-трансляциями, потому что Android не может автоматически рисовать тень, соответствующую вашей пользовательской форме. Я бы хотел бы показать вам новые классы, которые могут помочь вам создать свои уникальные формы и позволить системе соответствующим образом генерировать тени.
Статья: https://apptractor.ru/drdshp
Платформа: Android
👋: 92
Detekt - статический анализатор кода для Kotlin. Он работает с абстрактным синтаксическим деревом, предоставляемым компилятором Kotlin. Среди функций - анализ “запаха” кода,
отчеты о сложности на основе строк кода, цикломатической сложности и количества "запахов", гибко настраиваемые наборы правил, подавление вывода с помощью аннотаций Kotlin, базовый уровень качества и подавление для устаревших проектов, плагин Gradle для анализа кода с помощью сборок, расширяемость за счет включения личных наборов правил, интеграция с IntelliJ, интеграции для Maven, Bazel и Github Actions (на основе Docker и Javascript).
Detekt на GitHub: https://github.com/detekt/detekt
Платформа: Android/Kotlin
⭐️: 4.4K
отчеты о сложности на основе строк кода, цикломатической сложности и количества "запахов", гибко настраиваемые наборы правил, подавление вывода с помощью аннотаций Kotlin, базовый уровень качества и подавление для устаревших проектов, плагин Gradle для анализа кода с помощью сборок, расширяемость за счет включения личных наборов правил, интеграция с IntelliJ, интеграции для Maven, Bazel и Github Actions (на основе Docker и Javascript).
Detekt на GitHub: https://github.com/detekt/detekt
Платформа: Android/Kotlin
⭐️: 4.4K