Два года с Duit — история взросления фреймворка
Если кратко — за год проект "перерос сам себя". Фреймворк стал более архитектурно чистым, гибким и устойчивым. Он стал более стройным и простым на первый взгляд и на порядок более сложным "под капотом".
В обиход разработки вошло много новых подходов: выработаны принципы тестирования проекта и обеспечения его качества, опробованы в "боевых" условиях AI-инструменты для кодинга и "разбавления одиночества" (я так называю AI-ревьюеры). А также свой вклад в проект внесло два человека!
Это был длинный, тяжелый, но невероятно интересный год. Давайте посмотрим на него вместе!
Статья: https://habr.com/ru/articles/963884/
Платформа: кроссплатформа/Flutter
AppFiles: код, инструменты, практики, производительность
Если кратко — за год проект "перерос сам себя". Фреймворк стал более архитектурно чистым, гибким и устойчивым. Он стал более стройным и простым на первый взгляд и на порядок более сложным "под капотом".
В обиход разработки вошло много новых подходов: выработаны принципы тестирования проекта и обеспечения его качества, опробованы в "боевых" условиях AI-инструменты для кодинга и "разбавления одиночества" (я так называю AI-ревьюеры). А также свой вклад в проект внесло два человека!
Это был длинный, тяжелый, но невероятно интересный год. Давайте посмотрим на него вместе!
Статья: https://habr.com/ru/articles/963884/
Платформа: кроссплатформа/Flutter
AppFiles: код, инструменты, практики, производительность
👍1
XcodeProjectCLI - управление проектами Xcode из командной строки
XcodeProjectCLI - быстрый и лёгкий CLI инструмент для управления проектами Xcode, полностью написанный на Swift. Легко интегрируйте его в свой рабочий процесс разработки или автоматизируйте сложные задачи рефакторинга всего несколькими командами.
XcodeProjectCLI на GitHub: https://github.com/wojciech-kulik/XcodeProjectCLI
Платформа: iOS
⭐️: 91
AppFiles: код, инструменты, практики, производительность
XcodeProjectCLI - быстрый и лёгкий CLI инструмент для управления проектами Xcode, полностью написанный на Swift. Легко интегрируйте его в свой рабочий процесс разработки или автоматизируйте сложные задачи рефакторинга всего несколькими командами.
OVERVIEW: XcodeProjectCLI
USAGE: xcp <subcommand>
OPTIONS:
--version Show the version.
-h, --help Show help information.
TARGET SUBCOMMANDS:
list-targets List project targets.
set-target Set target for existing file.
GROUP SUBCOMMANDS:
add-group Add group.
delete-group Delete group.
move-group Move group.
rename-group Rename group.
FILE SUBCOMMANDS:
add-file Add file to specified targets.
delete-file Delete file.
move-file Move file.
rename-file Rename file.
BUILD SETTINGS SUBCOMMANDS:
get-build-setting Get build setting.
set-build-setting Set build setting.
ASSETS SUBCOMMANDS:
add-image-asset Add image asset.
add-data-asset Add data asset.
add-color-asset Add color asset.
list-assets List all assets.
move-asset Move asset.
delete-asset Delete asset.
See 'xcp help <subcommand>' for detailed help.
XcodeProjectCLI на GitHub: https://github.com/wojciech-kulik/XcodeProjectCLI
Платформа: iOS
⭐️: 91
AppFiles: код, инструменты, практики, производительность
👍1
Вопрос с собеседования, на котором сыпятся 90% iOS-разработчиков (даже Senior-ы)
Вот классическая версия вопроса на собеседовании:
Интервьюер спрашивает: «Почему MyViewController может никогда не быть деалоцирован?»
В этот момент 90% кандидатов отвечают:
«Вам следует использовать
Неверно.
Не потому, что этот ответ неверный, а потому, что он неполный. Этот вопрос не о том, как исправить. Он о том, как обосновать свой ответ.
Статья: https://apptractor.ru/info/articles/vopros-s-sobesedovaniya-na-kotorom-sypyatsya-90-ios-razrabotchikov-dazhe-senior-y.html
Платформа: iOS/Swift
AppFiles: код, инструменты, практики, производительность
Вот классическая версия вопроса на собеседовании:
class MyViewController: UIViewController {
var completion: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
completion = {
self.doSomething()
}
}
func doSomething() {
print("Doing something")
}
deinit {
print("MyViewController deinitialized")
}
}Интервьюер спрашивает: «Почему MyViewController может никогда не быть деалоцирован?»
В этот момент 90% кандидатов отвечают:
«Вам следует использовать
weak self».Неверно.
Не потому, что этот ответ неверный, а потому, что он неполный. Этот вопрос не о том, как исправить. Он о том, как обосновать свой ответ.
Статья: https://apptractor.ru/info/articles/vopros-s-sobesedovaniya-na-kotorom-sypyatsya-90-ios-razrabotchikov-dazhe-senior-y.html
Платформа: iOS/Swift
AppFiles: код, инструменты, практики, производительность
👍1
Grocery Genius - список покупок для Android
Grocery Genius — бесплатное, настраиваемое приложение для составления списков покупок с современным дизайном, функциями автозаполнения, возможностью работы офлайн и богатым функционалом.
Технологический стек:
• Jetpack Compose для пользовательского интерфейса с одним Activity и без фрагментов
• База данных Room для локального хранения данных
• Retrofit для работы с REST API
• Preferences DataStore для хранения простых данных в формате «ключ-значение»
• Корутины и потоки Kotlin для асинхронных запросов
• Work Manager для синхронизации данных в фоновом режиме
• Moshi для декодирования JSON-файлов в объекты Kotlin
• Coil для производительной загрузки изображений из файлов
• RecyclerView для списков с функцией перетаскивания
• Шаблон MVI
• Архитектура CLEAN с уровнем данных и представления
Grocery Genius на GitHub: https://github.com/DanielRendox/GroceryGenius
Платформа: Android
⭐️: 122
AppFiles: код, инструменты, практики, производительность
Grocery Genius — бесплатное, настраиваемое приложение для составления списков покупок с современным дизайном, функциями автозаполнения, возможностью работы офлайн и богатым функционалом.
Технологический стек:
• Jetpack Compose для пользовательского интерфейса с одним Activity и без фрагментов
• База данных Room для локального хранения данных
• Retrofit для работы с REST API
• Preferences DataStore для хранения простых данных в формате «ключ-значение»
• Корутины и потоки Kotlin для асинхронных запросов
• Work Manager для синхронизации данных в фоновом режиме
• Moshi для декодирования JSON-файлов в объекты Kotlin
• Coil для производительной загрузки изображений из файлов
• RecyclerView для списков с функцией перетаскивания
• Шаблон MVI
• Архитектура CLEAN с уровнем данных и представления
Grocery Genius на GitHub: https://github.com/DanielRendox/GroceryGenius
Платформа: Android
⭐️: 122
AppFiles: код, инструменты, практики, производительность
❤1
Почему ваша ViewModel технически нестабильна — и почему Compose это не волнует
Знаете ли вы, что почти все ViewModel нестабильны? Когда мы впервые изучаем Compose, нас учат использовать стабильные классы, а не нестабильные.
Но ViewModel нестабильны. Так почему же никто ничего не говорит, когда мы используем нестабильные ViewModel?
Статья: https://apptractor.ru/info/articles/viewmodel-nestabilna.html
Платформа: Android
AppFiles: код, инструменты, практики, производительность
Знаете ли вы, что почти все ViewModel нестабильны? Когда мы впервые изучаем Compose, нас учат использовать стабильные классы, а не нестабильные.
Но ViewModel нестабильны. Так почему же никто ничего не говорит, когда мы используем нестабильные ViewModel?
Статья: https://apptractor.ru/info/articles/viewmodel-nestabilna.html
Платформа: Android
AppFiles: код, инструменты, практики, производительность
❤1
Основы MockK
По сути, MockK — это «фреймворк для мок-объектов» в Kotlin. Это инструмент, позволяющий создавать и управлять «поддельными» версиями объектов (так называемыми мок-объектами), чтобы изолировать и тестировать наш код.
Но это скучное определение.
Отличительной чертой MockK является то, что он был создан с нуля разработчиками Kotlin для Kotlin. Это не просто библиотека Java, вроде Mockito, с «дружественной к Kotlin» оболочкой. Он была разработан, чтобы охватывать язык, а не просто мириться с ним.
Это фундаментальное отличие и делает фреймворк таким «волшебным». Это не просто утилита для тестирования. Это демонстрация идиоматичности дизайна Kotlin. Он использует лучшие возможности языка, такие как мощные DSL, функции расширения и первоклассную поддержку корутин, чтобы создать API, который ощущается не как инструмент, а как естественное расширение самого Kotlin.
Статья: https://apptractor.ru/info/articles/osnovy-mockk.html
Платформа: Android/тестирование
AppFiles: код, инструменты, практики, производительность
По сути, MockK — это «фреймворк для мок-объектов» в Kotlin. Это инструмент, позволяющий создавать и управлять «поддельными» версиями объектов (так называемыми мок-объектами), чтобы изолировать и тестировать наш код.
Но это скучное определение.
Отличительной чертой MockK является то, что он был создан с нуля разработчиками Kotlin для Kotlin. Это не просто библиотека Java, вроде Mockito, с «дружественной к Kotlin» оболочкой. Он была разработан, чтобы охватывать язык, а не просто мириться с ним.
Это фундаментальное отличие и делает фреймворк таким «волшебным». Это не просто утилита для тестирования. Это демонстрация идиоматичности дизайна Kotlin. Он использует лучшие возможности языка, такие как мощные DSL, функции расширения и первоклассную поддержку корутин, чтобы создать API, который ощущается не как инструмент, а как естественное расширение самого Kotlin.
Статья: https://apptractor.ru/info/articles/osnovy-mockk.html
Платформа: Android/тестирование
AppFiles: код, инструменты, практики, производительность
❤1
Хитрости отладки SwiftUI, о которых никто не говорит
Автор показывает, как простые инструменты — вроде
Статья: https://medium.com/ios-lab/the-swiftui-debugging-tricks-no-one-talks-about-fdddc0cc35c7
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
Автор показывает, как простые инструменты — вроде
print() в body или наблюдателей didSet — помогают понять, когда именно происходит перерисовка вью и корректно ли обновляется состояние. Такие минималистичные вставки дают быстрый инсайт: что именно вызывает лишние рендеры или почему UI не реагирует на изменения @State. Отдельный акцент сделан на том, что многие проблемы связаны с неправильным использованием @State и непониманием того, как SwiftUI работает под капотом. Поэтому автор рекомендует не стесняться логировать всё, что кажется подозрительным — это даёт результат быстрее, чем сразу менять архитектуру. Отличный набор практических подсказок, особенно если вы регулярно ловите странное поведение UI.Статья: https://medium.com/ios-lab/the-swiftui-debugging-tricks-no-one-talks-about-fdddc0cc35c7
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Delete Button Micro Interaction - кнопка удаления с таймером
Delete Button Micro Interaction - кнопка с микровзаимодействием на SwiftUI.
Delete Button на GitHub: https://github.com/georgecartridge/DeleteButtonMicroInteraction
Платформа: iOS
⭐️: 16
AppFiles: код, инструменты, практики, производительность
Delete Button Micro Interaction - кнопка с микровзаимодействием на SwiftUI.
Delete Button на GitHub: https://github.com/georgecartridge/DeleteButtonMicroInteraction
Платформа: iOS
⭐️: 16
AppFiles: код, инструменты, практики, производительность
❤1👍1
Библиотека Jetpack Navigation 3 стала стабильной
Jetpack Navigation 3 стал стабильным в версии 1.0. Используйте библиотеку в своих приложениях уже сегодня. Например, JetBrains уже использует её в своём приложении KotlinConf.
Navigation 3 — это новая навигационная библиотека, полностью разработанная для поддержки состояний Jetpack Compose. Она предоставляет полный контроль над стеком переходов, помогает сохранять состояние навигации и позволяет легко создавать адаптивные макеты (например, list-detail). У JetBrains даже есть кроссплатформенная версия.
Подробнее: https://apptractor.ru/info/news/jetpack-navigation-3-stab.html
Платформа: Android
AppFiles: код, инструменты, практики, производительность
Jetpack Navigation 3 стал стабильным в версии 1.0. Используйте библиотеку в своих приложениях уже сегодня. Например, JetBrains уже использует её в своём приложении KotlinConf.
Navigation 3 — это новая навигационная библиотека, полностью разработанная для поддержки состояний Jetpack Compose. Она предоставляет полный контроль над стеком переходов, помогает сохранять состояние навигации и позволяет легко создавать адаптивные макеты (например, list-detail). У JetBrains даже есть кроссплатформенная версия.
Подробнее: https://apptractor.ru/info/news/jetpack-navigation-3-stab.html
Платформа: Android
AppFiles: код, инструменты, практики, производительность
🔥1
24 компонента SwiftUI, о существовании которых вы не знали
В статье автор собирает редкие, но мощные компоненты SwiftUI, о многих из которых разработчики забывают или просто не знают. Он объединяет фрагменты из предыдущих публикаций и показывает, как использовать такие вью, как
Статья: https://medium.com/ios-lab/24-swiftui-components-you-didnt-know-existed-74ea3cdfd2de
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
В статье автор собирает редкие, но мощные компоненты SwiftUI, о многих из которых разработчики забывают или просто не знают. Он объединяет фрагменты из предыдущих публикаций и показывает, как использовать такие вью, как
TimelineView — идеальное решение для создания цифровых часов или таймера обратного отсчёта, которые автоматически обновляются без лишнего кода. Кроме того, статья охватывает целый набор менее распространённых элементов SwiftUI — это не просто «еще один туториал», а настоящая подборка скрытых возможностей фреймворка. Освоив эти компоненты, вы сможете сделать интерфейсы своих приложений более гибкими и выразительными, существенно расширив инструментарий, доступный помимо стандартных VStack, HStack и ZStack.Статья: https://medium.com/ios-lab/24-swiftui-components-you-didnt-know-existed-74ea3cdfd2de
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
👍1
Маленький совет по SwiftUI: получайте информацию о сети и отслеживайте изменения
В некоторых сценариях нам может понадобиться получить/просмотреть информацию о сети устройства пользователя. Например, нам может понадобиться проверить, подключен ли пользователь к Wi-Fi, а не к сотовой сети, перед загрузкой большого объёма данных. Мы можем проверить, поддерживает ли сеть IPV6. Настроен ли DNS-сервер. И так далее.
Статья: https://apptractor.ru/info/articles/swiftui-set.html
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
В некоторых сценариях нам может понадобиться получить/просмотреть информацию о сети устройства пользователя. Например, нам может понадобиться проверить, подключен ли пользователь к Wi-Fi, а не к сотовой сети, перед загрузкой большого объёма данных. Мы можем проверить, поддерживает ли сеть IPV6. Настроен ли DNS-сервер. И так далее.
Статья: https://apptractor.ru/info/articles/swiftui-set.html
Платформа: iOS
AppFiles: код, инструменты, практики, производительность
👍1
VanishEffect Library - эффект распыления для UI-элементов
VanishEffect Library - библиотека для Android, создающая культовый эффект распыления ("Щелчка Таноса") для элементов пользовательского интерфейса. Работает на OpenGL ES 2.0 с полной поддержкой Jetpack Compose и традиционных XML-макетов. Анимация похожа на анимацию удаления сообщения в Telegram.
Фичи:
• Плавная анимация распада с использованием частиц
• Полная поддержка Jetpack Compose и XML-макетов
• Аппаратное ускорение рендеринга OpenGL
• Простая интеграция по принципу plug-and-play
• Настраиваемые параметры анимации
• Работает с любым элементом пользовательского интерфейса — текстом, изображениями, карточками и сложными макетами
• Легкая и требует минимума зависимостей
VanishEffect Library на GitHub: https://github.com/exjunk/ThanosEffect/
Платформа: Android
⭐️: 2
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
VanishEffect Library - библиотека для Android, создающая культовый эффект распыления ("Щелчка Таноса") для элементов пользовательского интерфейса. Работает на OpenGL ES 2.0 с полной поддержкой Jetpack Compose и традиционных XML-макетов. Анимация похожа на анимацию удаления сообщения в Telegram.
Фичи:
• Плавная анимация распада с использованием частиц
• Полная поддержка Jetpack Compose и XML-макетов
• Аппаратное ускорение рендеринга OpenGL
• Простая интеграция по принципу plug-and-play
• Настраиваемые параметры анимации
• Работает с любым элементом пользовательского интерфейса — текстом, изображениями, карточками и сложными макетами
• Легкая и требует минимума зависимостей
VanishEffect Library на GitHub: https://github.com/exjunk/ThanosEffect/
Платформа: Android
⭐️: 2
Please open Telegram to view this post
VIEW IN TELEGRAM
✍3
•
(iOS Ru) Разбор кода: iOS-приложение для управления личными финансами на Swift. Часть 1•
(iOS En) Showcase: Learn how apps are integrating the new design and Liquid Glass•
(iOS En) Code-along: Start building with Swift and SwiftUI •
(iOS En) iOS Coding Interview: The 5 Formats You Must Know•
(iOS En) Liquid Glass Text View - Converting Text Into Shape - SwiftUI•
(iOS En) Expand Apple’s Foundation Models with Custom Tools and Real Data Access•
(iOS En) Animated Splash Screen for SwiftUI App•
(iOS En) Autoclosures in Swift Explained Simply•
(And En) App performance improvements•
(And En) How to debug and troubleshoot R8 optimizer•
(And En) Boost Android app performance with the R8 optimizer•
(And En) Floating Toolbars In Material3 Expressive•
(And En) Navigation 3 library is now STABLE•
(And En) Gradle Tutorial: Properties and Providers (for Build Engineers)•
(Crs Ru) Хватит страдать! Лёгкий способ бросить оверинжиниринг•
(Crs En) Build a Compose Multiplatform Meme Creator App With Clean Code & MVI•
(Dev Ru) Как устроены АI облака — ИИ, инфраструктура, GPU, NebiusПрошлогодние видео:
•
(iOS Ru) Дейтинг, Swift и Формула-1: от первых шагов в IT до победы в хакатоне•
(iOS Ru) iOS разработка с нуля•
(And Ru) Code Review: вы не поверите, насколько распространены эти ошибки в коде Android-проектов•
(Dev Ru) Всё о лицензиях библиотек, что необходимо знать разработчикуPlease open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Как всплывающее окно в WebView съело мои два дня (viewport и с чем его кушать)
Иногда в разработке случается баг, который не просто не даёт спать, а заставляет пересмотреть свои жизненные ценности.
У меня это произошло со скромным всплывающим окном внутри WebView.
Задача была максимально скучной: на экране с WebView пользователь нажимает кнопку “Exit”, а веб-страница показывает попап подтверждения. На старом коде — всё идеально. На браузере — идеально. На новом инфраструктурном слое WebView — попап появляется на миг и тут же закрывается сам, как будто кто-то тайно играет в “крестики” за пользователя.
Статья: https://habr.com/ru/articles/968206/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Иногда в разработке случается баг, который не просто не даёт спать, а заставляет пересмотреть свои жизненные ценности.
У меня это произошло со скромным всплывающим окном внутри WebView.
Задача была максимально скучной: на экране с WebView пользователь нажимает кнопку “Exit”, а веб-страница показывает попап подтверждения. На старом коде — всё идеально. На браузере — идеально. На новом инфраструктурном слое WebView — попап появляется на миг и тут же закрывается сам, как будто кто-то тайно играет в “крестики” за пользователя.
Статья: https://habr.com/ru/articles/968206/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Validator - элегантная и типобезопасная валидация входных данных
Validator — это современный лёгкий фреймворк Swift, обеспечивающий элегантную и типобезопасную валидацию входных данных. Созданный на основе мощной системы типов Swift, он легко интегрируется с UIKit и SwiftUI, что упрощает валидацию форм на всех платформах Apple.
Возможности:
• Типобезопасная валидация — использует систему типов Swift для обеспечения безопасности во время компиляции
• Богатый набор правил — встроенные валидаторы для распространённых случаев использования
• Расширяемость — простота создания собственных правил валидации
• Интеграция с UIKit — первоклассная поддержка UITextField и других компонентов UIKit
• SwiftUI Native — обёртки свойств и модификаторы представлений для декларативной валидации
• Управление формами — валидация нескольких полей с централизованным управлением состоянием
• Легковесность — минимальный размер и отсутствие зависимостей
• Протестировано — полное покрытие тестами
Validator на GitHub: https://github.com/space-code/validator
Платформа: iOS
⭐️: 16
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Validator — это современный лёгкий фреймворк Swift, обеспечивающий элегантную и типобезопасную валидацию входных данных. Созданный на основе мощной системы типов Swift, он легко интегрируется с UIKit и SwiftUI, что упрощает валидацию форм на всех платформах Apple.
Возможности:
• Типобезопасная валидация — использует систему типов Swift для обеспечения безопасности во время компиляции
• Богатый набор правил — встроенные валидаторы для распространённых случаев использования
• Расширяемость — простота создания собственных правил валидации
• Интеграция с UIKit — первоклассная поддержка UITextField и других компонентов UIKit
• SwiftUI Native — обёртки свойств и модификаторы представлений для декларативной валидации
• Управление формами — валидация нескольких полей с централизованным управлением состоянием
• Легковесность — минимальный размер и отсутствие зависимостей
• Протестировано — полное покрытие тестами
Validator на GitHub: https://github.com/space-code/validator
Платформа: iOS
⭐️: 16
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Меня снова спросили за Optional
Несмотря на то, что использование Optional самая настоящая рутина для любого iOS-разработчика, в тонкости реализации этого механизма мы погружаемся только при первом знакомстве с языком. Предлагаю чуть углубиться, чтобы уверенно говорить на эту тему с коллегой или интервьюером.
Статья: https://habr.com/ru/articles/968736/
Платформа: iOS/Swift
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Несмотря на то, что использование Optional самая настоящая рутина для любого iOS-разработчика, в тонкости реализации этого механизма мы погружаемся только при первом знакомстве с языком. Предлагаю чуть углубиться, чтобы уверенно говорить на эту тему с коллегой или интервьюером.
Статья: https://habr.com/ru/articles/968736/
Платформа: iOS/Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Меня снова спросили за Optional
Несмотря на то, что использование Optional самая настоящая рутина для любого iOS-разработчика, в тонкости реализации этого механизма мы погружаемся только при первом знакомстве с языком. Предлагаю...
👍1
Кросс-компиляция и запуск консольного Go‑приложения на Android, Windows, macOS и Linux
Я иногда пишу консольные утилиты на Go под Linux. Недавно я освоил кросс-компиляцию, и теперь они прекрасно работают на Android и Windows (и Linux само собой). В статье собран практический опыт кросс‑компиляции, подготовки релизной версии и развёртывания бинарника, плюс несколько подводных камней.
Статья: https://habr.com/ru/companies/ruvds/articles/968178/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я иногда пишу консольные утилиты на Go под Linux. Недавно я освоил кросс-компиляцию, и теперь они прекрасно работают на Android и Windows (и Linux само собой). В статье собран практический опыт кросс‑компиляции, подготовки релизной версии и развёртывания бинарника, плюс несколько подводных камней.
Статья: https://habr.com/ru/companies/ruvds/articles/968178/
Платформа: кроссплатформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Simple Flashlight - фонарик для Android
Simple Flashlight - чистый фонарик с ярким дисплеем, настраиваемым стробоскопом и предустановленным режимом SOS.
Яркий дисплей может менять цвет, открывая новые возможности использования. Он пригодится, если вы хотите видеть более удаленные объекты, не ослепляя себя. Благодаря разным цветам вы можете использовать этот светодиодный фонарик, когда находитесь с друзьями или хотите устроить вечеринку. Или вы можете использовать эту функцию, чтобы позвать кого-нибудь на помощь.
Частота стробоскопа может изменяться: от очень быстрого мигания до редкого. Это приложение для быстрого запуска можно настроить в соответствии с вашими потребностями. Вы можете без проблем изменить все функции этого приложения.
Если этот бесплатный фонарик включен через приложение (не через виджет), он не даст устройству перейти в спящий режим. Мощный фонарик может включаться при запуске приложения, но это не обязательно.
Поставляется с виджетом 1x1 с настраиваемым цветом и прозрачностью. Этот виджет поможет вам быстро запустить приложение подсветки в любое время.
Сделан с Material Design и тёмной темой по умолчанию, обеспечивает отличный пользовательский интерфейс для простоты использования. Отсутствие доступа к Интернету обеспечивает большую конфиденциальность, безопасность и стабильность, чем другие приложения.
Не содержит рекламы и ненужных разрешений. Полностью открытый исходный код.
Simple Flashlight на GitHub: https://github.com/FossifyOrg/Flashlight
Платформа: Android
⭐️: 112
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Simple Flashlight - чистый фонарик с ярким дисплеем, настраиваемым стробоскопом и предустановленным режимом SOS.
Яркий дисплей может менять цвет, открывая новые возможности использования. Он пригодится, если вы хотите видеть более удаленные объекты, не ослепляя себя. Благодаря разным цветам вы можете использовать этот светодиодный фонарик, когда находитесь с друзьями или хотите устроить вечеринку. Или вы можете использовать эту функцию, чтобы позвать кого-нибудь на помощь.
Частота стробоскопа может изменяться: от очень быстрого мигания до редкого. Это приложение для быстрого запуска можно настроить в соответствии с вашими потребностями. Вы можете без проблем изменить все функции этого приложения.
Если этот бесплатный фонарик включен через приложение (не через виджет), он не даст устройству перейти в спящий режим. Мощный фонарик может включаться при запуске приложения, но это не обязательно.
Поставляется с виджетом 1x1 с настраиваемым цветом и прозрачностью. Этот виджет поможет вам быстро запустить приложение подсветки в любое время.
Сделан с Material Design и тёмной темой по умолчанию, обеспечивает отличный пользовательский интерфейс для простоты использования. Отсутствие доступа к Интернету обеспечивает большую конфиденциальность, безопасность и стабильность, чем другие приложения.
Не содержит рекламы и ненужных разрешений. Полностью открытый исходный код.
Simple Flashlight на GitHub: https://github.com/FossifyOrg/Flashlight
Платформа: Android
⭐️: 112
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤣2👍1
Xcode — худшее профессиональное ПО, с которым я когда-либо работал
Xcode ужасен, и об этом много кто говорит. Постоянные ошибки, баги интерфейса, неочевидное поведение и местами плохая документация — всё это мешает спокойно писать код. Вместо работы над проектом приходится искать решения проблем и пытаться починить то, что должно работать из коробки. Ещё одна неприятность на этом пути заключается в том, что Apple не всегда публично рассказывает о багах в Xcode, поэтому надо ещё догадаться, что именно не работает.
В статье автор делится ошибками и «особенностями» Xcode, которые больше всего его раздражают. Главный совет: держитесь подальше от этой IDE и всегда ищите альтернативы.
Статья: https://habr.com/ru/articles/969470/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Xcode ужасен, и об этом много кто говорит. Постоянные ошибки, баги интерфейса, неочевидное поведение и местами плохая документация — всё это мешает спокойно писать код. Вместо работы над проектом приходится искать решения проблем и пытаться починить то, что должно работать из коробки. Ещё одна неприятность на этом пути заключается в том, что Apple не всегда публично рассказывает о багах в Xcode, поэтому надо ещё догадаться, что именно не работает.
В статье автор делится ошибками и «особенностями» Xcode, которые больше всего его раздражают. Главный совет: держитесь подальше от этой IDE и всегда ищите альтернативы.
Статья: https://habr.com/ru/articles/969470/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
Делаем неразрывные числа в динамическом тексте
Отображение динамически отформатированных чисел в строках для пользователя является распространённой фичей во многих iOS-приложениях. Ценники, остатки на счёте, минимальные/максимальные суммы и другие числовые значения часто отображаются в составе длинных предложений. Хотя эти строки обычно отображаются корректно, проблемы начинают возникать, когда большое число не помещается на одной строке.
Типичным примером является экран, где пользовательский интерфейс должен адаптироваться как к коротким, так и к длинным числам. Если число достаточно большое, система может разбить его на несколько строк, оставив часть на одной строке, а остаток перенести на следующую. Это создаёт неровный визуальный результат и может затруднить чтение числа.
Статья: https://apptractor.ru/info/articles/delaem-nerazryvnye-chisla-v-dinamicheskom-tekste.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Отображение динамически отформатированных чисел в строках для пользователя является распространённой фичей во многих iOS-приложениях. Ценники, остатки на счёте, минимальные/максимальные суммы и другие числовые значения часто отображаются в составе длинных предложений. Хотя эти строки обычно отображаются корректно, проблемы начинают возникать, когда большое число не помещается на одной строке.
Типичным примером является экран, где пользовательский интерфейс должен адаптироваться как к коротким, так и к длинным числам. Если число достаточно большое, система может разбить его на несколько строк, оставив часть на одной строке, а остаток перенести на следующую. Это создаёт неровный визуальный результат и может затруднить чтение числа.
Статья: https://apptractor.ru/info/articles/delaem-nerazryvnye-chisla-v-dinamicheskom-tekste.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Визуальная отладка с помощью Swift Charts
Этот опыт закрепил важный урок: при создании сложных систем с временным поведением визуальная обратная связь не просто приятна, она крайне важна. Swift Charts позволили легко добавить эту возможность отладки, а вложение нескольких десятков строк кода сэкономило часы слепой отладки. Диаграммы стали не просто фичей, но и инструментом разработки, который продолжает помогать мне проверять новые функции и выявлять регрессии.
Если вы работаете с какими-либо временными рядами данных или алгоритмическим поведением, подумайте о добавлении диаграмм на ранних этапах процесса разработки. В будущем вы будете благодарны.
Статья: https://apptractor.ru/info/articles/vizualnaya-otladka-s-pomoschyu-swift-charts.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Этот опыт закрепил важный урок: при создании сложных систем с временным поведением визуальная обратная связь не просто приятна, она крайне важна. Swift Charts позволили легко добавить эту возможность отладки, а вложение нескольких десятков строк кода сэкономило часы слепой отладки. Диаграммы стали не просто фичей, но и инструментом разработки, который продолжает помогать мне проверять новые функции и выявлять регрессии.
Если вы работаете с какими-либо временными рядами данных или алгоритмическим поведением, подумайте о добавлении диаграмм на ранних этапах процесса разработки. В будущем вы будете благодарны.
Статья: https://apptractor.ru/info/articles/vizualnaya-otladka-s-pomoschyu-swift-charts.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1