Пишем свою мобильную ОС с нуля на Rust
Сегодня я хотел бы поделиться с вами результатами своего эксперимента по написанию ядра мобильной ОС с нуля.
Для чего? Главным образом — просто ради развлечения. Мне попадалось много статей по разработке десктопных ОС для x86. Да и сам я когда-то этим увлекался. Попытка разобраться с мобильной операционкой может стать довольно интересным опытом.
Статья: https://habr.com/ru/articles/962680/
Платформа: разработка
Сегодня я хотел бы поделиться с вами результатами своего эксперимента по написанию ядра мобильной ОС с нуля.
Для чего? Главным образом — просто ради развлечения. Мне попадалось много статей по разработке десктопных ОС для x86. Да и сам я когда-то этим увлекался. Попытка разобраться с мобильной операционкой может стать довольно интересным опытом.
Статья: https://habr.com/ru/articles/962680/
Платформа: разработка
❤3
Сделайте приложение более персонализированным с помощью Language Discovery
Новый
В то время как старый API был основан на строках и требовал обширной ручной обработки, вынуждая разработчиков поддерживать жёстко заданные соответствия для культурных особенностей, новый API предоставляет всё необходимое для приложений, учитывающих культурные особенности (identifier, displayName, languageCode и т.д.).
Эта расширенная структура данных исключает необходимость догадываться и обеспечивает точный культурный контекст для каждого пользовательского предпочтения.
Статья: https://apptractor.ru/info/articles/language-discovery.html
Платформа: iOS
Новый
Locale.preferredLocales API представляет собой не просто постепенное улучшение, а полное переосмысление того, как iOS работает с многоязычными пользователями.В то время как старый API был основан на строках и требовал обширной ручной обработки, вынуждая разработчиков поддерживать жёстко заданные соответствия для культурных особенностей, новый API предоставляет всё необходимое для приложений, учитывающих культурные особенности (identifier, displayName, languageCode и т.д.).
Эта расширенная структура данных исключает необходимость догадываться и обеспечивает точный культурный контекст для каждого пользовательского предпочтения.
Статья: https://apptractor.ru/info/articles/language-discovery.html
Платформа: iOS
👍1
Страна, которая сломала Kotlin
Статья посвящена одной из самых удивительных и трудноуловимых ошибок языка Kotlin. В 2016 году турецкий инженер заметил, что его сборка не проходит: компилятор выдаёт загадочную ошибку «
Дальше — ещё интереснее: спустя годы, с выходом корутин в Kotlin 1.3, ошибка проявилась снова при вызове функции
И всё благодаря тому же проблемному
Основная мысль: даже языковые конструкции вроде преобразования регистра строк, считавшиеся банальными, могут таить в себе серьёзные баги в глобальной среде. Это напоминание: при разработке — не игнорируйте культурно-языковые аспекты и локали. И да — турецкая локаль почти сломала Kotlin.
Статья: https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
Платформа: Android/Kotlin
Статья посвящена одной из самых удивительных и трудноуловимых ошибок языка Kotlin. В 2016 году турецкий инженер заметил, что его сборка не проходит: компилятор выдаёт загадочную ошибку «
Unknown compiler message tag: INFO». При этом причина оказалась не в коде, а в… настройки локали! Оказалось, что на турецкой локали метод строкового преобразования toLowerCase() превращает «INFO» в «ınfo» (с безточечной «i») — и словарь мапы не находит соответствия. Дальше — ещё интереснее: спустя годы, с выходом корутин в Kotlin 1.3, ошибка проявилась снова при вызове функции
boxInt() — но машиной она была сгенерирована как boxİnt() (заглавная «İ») на машинах с турецкой локалью. И всё благодаря тому же проблемному
capitalize() без указания локали. В финале автор показывает, как разработчики Kotlin заменили все такие вызовы на версии с явно заданной локалью (Locale.US или аналог) и отключили использование старых функций toLowerCase()/toUpperCase(). Основная мысль: даже языковые конструкции вроде преобразования регистра строк, считавшиеся банальными, могут таить в себе серьёзные баги в глобальной среде. Это напоминание: при разработке — не игнорируйте культурно-языковые аспекты и локали. И да — турецкая локаль почти сломала Kotlin.
Статья: https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
Платформа: Android/Kotlin
👍2
Media is too big
VIEW IN TELEGRAM
DroidRun - управление смартфоном с помощью ИИ
DroidRun — это мощный фреймворк для управления устройствами Android и iOS через LLM-агенты. Он позволяет автоматизировать взаимодействие с устройствами с помощью команд на естественном языке. Для работы нужен Python 3.10+, устройство и приложение на нем для отслеживания работы LLM-агентов.
DroidRun на GitHub: https://github.com/droidrun/droidrun
Платформа: iOS/Android
⭐️: 5.5K
DroidRun — это мощный фреймворк для управления устройствами Android и iOS через LLM-агенты. Он позволяет автоматизировать взаимодействие с устройствами с помощью команд на естественном языке. Для работы нужен Python 3.10+, устройство и приложение на нем для отслеживания работы LLM-агентов.
DroidRun на GitHub: https://github.com/droidrun/droidrun
Платформа: iOS/Android
⭐️: 5.5K
👍1
•
(iOS En) Perplexity App's Animated Bottom Bar Using SwiftUI•
(iOS En) Press Start: Game development on Apple platforms•
(iOS En) SwiftLeeds Evening Talkshow 2025•
(iOS En) PencilKit: From simple drawings to custom creative tools•
(iOS En) Practical Guide to Shipping Fast•
(iOS En) Side Effects as Behavior•
(iOS En) Tuning your app using Xcode's Instruments•
(iOS En) Guided Generation with Foundation Models in Swift•
(iOS En) Hero Confirmation Dialogs Using SwiftUI•
(And Ru) Swift на Android — ход отчаяния Apple или стратегический манёвр?•
(And En) All Material3 Expressive Loading Indicators Explained (+ When to Use Which)•
(Crs Ru) Как адаптировать свой KMP код под Аврору•
(Crs Ru) Flutter Aurora UI Kit •
(Crs Ru) Наша навигация и её эволюция•
(Crs Ru) Выбираем DI для Kotlin Multiplatform•
(Dev Ru) ИИ в кармане: как встроить ИИ в мобильное приложение•
(Dev Ru) ИИ в серьёзной разработке: революция в IT или переоценённый хайп?•
(Dev Ru) Как с нуля создать ферму мобильных устройств•
(Dev Ru) Всё про новый найм в Яндексе — честный разбор•
(Tcn Ru) Криптофинансы — блокчейн, криптовалюты, DeFi, web3•
(Dsg Ru) Когнитивная нагрузка в интерфейсах и как с ней боротьсяПрошлогодние видео:
•
(iOS Ru) SDK и BDUI в Яндекс Пэй и Яндекс Банке•
(And Ru) 5 СЕКРЕТНЫХ преимуществ Android эмулятора которые вы не знали!Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Valdi - кроссплатформенный UI фреймворк от Snap
Valdi — это кроссплатформенный UI фреймворк, обеспечивающий нативную производительность без ущерба для скорости разработки. Один раз напишите свой пользовательский интерфейс на декларативном TypeScript, и он сразу же скомпилируется в нативные (Kotlin, Objective-C и Swift ) представления на iOS, Android и macOS — без веб-представлений и JavaScript-бриджей.
Пример:
Настоящая нативная производительность
В отличие от фреймворков, использующих веб-представления или JavaScript-мосты, Valdi компилирует декларативно отрисованные компоненты TypeScript в платформенно-зависимые представления. Valdi также обладает рядом других преимуществ в плане производительности:
• Автоматическое переиспользование представлений — глобальная система пула представлений повторно использует нативные представления на всех экранах, значительно сокращая задержки.
• Оптимизированный рендеринг компонентов — компоненты перерисовываются независимо, не запуская повторную визуализацию родительских элементов, что обеспечивает быстрые инкрементальные обновления.
• Оптимизированный движок компоновки — движок компоновки C++ работает в основном потоке с минимальными затратами на преобразование данных из одного представления в другое.
• Рендеринг с учётом области просмотра — он выполняется только видимых представлений, что делает бесконечную прокрутку производительной по умолчанию.
Valdi широко используется в приложениях Snap уже 8 лет. В компании называют это бета-версией, поскольку инструменты и документация требуют более тщательного тестирования в среде открытого исходного кода. Valdi выйдет из стадии бета-тестирования, когда в компании будут довольны опытом разработчиков.
Valdi на GitHub: https://github.com/Snapchat/Valdi
Платформа: кроссплатформа
⭐️: 4K
Valdi — это кроссплатформенный UI фреймворк, обеспечивающий нативную производительность без ущерба для скорости разработки. Один раз напишите свой пользовательский интерфейс на декларативном TypeScript, и он сразу же скомпилируется в нативные (Kotlin, Objective-C и Swift ) представления на iOS, Android и macOS — без веб-представлений и JavaScript-бриджей.
Пример:
import { Component } from 'valdi_core/src/Component';
class HelloWorld extends Component {
onRender() {
const message = 'Hello World! 👻';
<view backgroundColor='#FFFC00' padding={30}>
<label color='black' value={message} />
</view>;
}
}Настоящая нативная производительность
В отличие от фреймворков, использующих веб-представления или JavaScript-мосты, Valdi компилирует декларативно отрисованные компоненты TypeScript в платформенно-зависимые представления. Valdi также обладает рядом других преимуществ в плане производительности:
• Автоматическое переиспользование представлений — глобальная система пула представлений повторно использует нативные представления на всех экранах, значительно сокращая задержки.
• Оптимизированный рендеринг компонентов — компоненты перерисовываются независимо, не запуская повторную визуализацию родительских элементов, что обеспечивает быстрые инкрементальные обновления.
• Оптимизированный движок компоновки — движок компоновки C++ работает в основном потоке с минимальными затратами на преобразование данных из одного представления в другое.
• Рендеринг с учётом области просмотра — он выполняется только видимых представлений, что делает бесконечную прокрутку производительной по умолчанию.
Valdi широко используется в приложениях Snap уже 8 лет. В компании называют это бета-версией, поскольку инструменты и документация требуют более тщательного тестирования в среде открытого исходного кода. Valdi выйдет из стадии бета-тестирования, когда в компании будут довольны опытом разработчиков.
Valdi на GitHub: https://github.com/Snapchat/Valdi
Платформа: кроссплатформа
⭐️: 4K
👍1
Превращение меню SwiftUI в мини-панель настроек
Меню в SwiftUI часто используются для быстрых одноразовых команд: выберите пункт, выполните действие — и всё готово. Но что, если вы хотите, чтобы меню функционировало не как простой селектор, а как мини-панель настроек, где пользователи могут последовательно переключать несколько пунктов, прежде чем сделать окончательный выбор? По умолчанию меню закрывается, как только пользователь нажимает на пункт, но с помощью подходящего API это поведение можно изменить.
Статья: https://apptractor.ru/info/articles/prevraschenie-menyu-swiftui-v-mini-panel-nastroek.html
Платформа: iOS
Меню в SwiftUI часто используются для быстрых одноразовых команд: выберите пункт, выполните действие — и всё готово. Но что, если вы хотите, чтобы меню функционировало не как простой селектор, а как мини-панель настроек, где пользователи могут последовательно переключать несколько пунктов, прежде чем сделать окончательный выбор? По умолчанию меню закрывается, как только пользователь нажимает на пункт, но с помощью подходящего API это поведение можно изменить.
Статья: https://apptractor.ru/info/articles/prevraschenie-menyu-swiftui-v-mini-panel-nastroek.html
Платформа: iOS
👍1🔥1
Собираем и публикуем Flutter-апп в AppStor
В этой статье рассмотрим настройку автоматической сборки Flutter-приложения для iOS с использованием Fastlane на macOS.
Статья: https://habr.com/ru/articles/964304/
Платформа: кроссплатформа
В этой статье рассмотрим настройку автоматической сборки Flutter-приложения для iOS с использованием Fastlane на macOS.
Статья: https://habr.com/ru/articles/964304/
Платформа: кроссплатформа
👍1
1_Gv-vtC5MNtcQ4bmYB__4rA.gif
21.5 MB
Эффекты с GPU-ускорением: глитч в масштабе
Несколько недель назад я увидел отличную статью Сины Самаки о создании эффекта глитча с помощью Compose. Как человек, любящий заниматься низкоуровневыми вещами, я увидел отличную возможность воссоздать этот эффект с помощью шейдеров Android AGSL и сравнить реализации.
Когда дело доходит до графики, очень важно выбрать правильный инструмент для работы, поскольку очень легко достичь потолка производительности и сложности в масштабировании решение. Так ли это в данном случае? Давайте посмотрим!
Приготовьтесь, мы будем заниматься низкоуровневыми вещами.
Статья: https://apptractor.ru/info/articles/effekty-s-gpu-uskoreniem-glitch-v-masshtabe.html
Платформа: Android
Несколько недель назад я увидел отличную статью Сины Самаки о создании эффекта глитча с помощью Compose. Как человек, любящий заниматься низкоуровневыми вещами, я увидел отличную возможность воссоздать этот эффект с помощью шейдеров Android AGSL и сравнить реализации.
Когда дело доходит до графики, очень важно выбрать правильный инструмент для работы, поскольку очень легко достичь потолка производительности и сложности в масштабировании решение. Так ли это в данном случае? Давайте посмотрим!
Приготовьтесь, мы будем заниматься низкоуровневыми вещами.
Статья: https://apptractor.ru/info/articles/effekty-s-gpu-uskoreniem-glitch-v-masshtabe.html
Платформа: Android
❤1
Tantivy Full Text Search for iOS - полнотекстовый поиск для iOS
Этот проект предоставляет возможность использовать Tantivy, библиотеку полнотекстового поиска, написанную на Rust, в iOS и macOS приложениях. Он использует UniFFI для генерации биндингов Swift.
Фичи:
• Создание и управление индексами Tantivy, сохраняемыми на диске
• Безопасный параллелизм с помощью Swift actor
• Документы в формате Swift Codable
• Результаты полнотекстового поиска с оценками
• По умолчанию настроен кастомный токенизатор с поддержкой Unicode (работает для всех языков без настройки)
Tantivy Full Text Search for iOS на GitHub: https://github.com/botisan-ai/tantivy.swift
Платформа: iOS
⭐️: 5
Этот проект предоставляет возможность использовать Tantivy, библиотеку полнотекстового поиска, написанную на Rust, в iOS и macOS приложениях. Он использует UniFFI для генерации биндингов Swift.
Фичи:
• Создание и управление индексами Tantivy, сохраняемыми на диске
• Безопасный параллелизм с помощью Swift actor
• Документы в формате Swift Codable
• Результаты полнотекстового поиска с оценками
• По умолчанию настроен кастомный токенизатор с поддержкой Unicode (работает для всех языков без настройки)
Tantivy Full Text Search for iOS на GitHub: https://github.com/botisan-ai/tantivy.swift
Платформа: iOS
⭐️: 5
👍1
7 ключевых слов Swift, которые вы не используете (а следовало бы)
Swift мощнее, чем вы думаете. Большинство разработчиков используют лишь около 60% его потенциала, и есть много функций, которые вы не использовали или о которых даже не слышали.
В этой статье мы рассмотрим 7 ключевых слов Swift, которые вас поразят.
Статья: https://apptractor.ru/info/articles/7-klyuchevyh-slov-swift-kotorye-vy-ne-ispolzuete-a-sledovalo-by.html
Платформа: iOS
Swift мощнее, чем вы думаете. Большинство разработчиков используют лишь около 60% его потенциала, и есть много функций, которые вы не использовали или о которых даже не слышали.
В этой статье мы рассмотрим 7 ключевых слов Swift, которые вас поразят.
Статья: https://apptractor.ru/info/articles/7-klyuchevyh-slov-swift-kotorye-vy-ne-ispolzuete-a-sledovalo-by.html
Платформа: iOS
👍2
Создание эффекта ЭЛТ-экрана в Jetpack Compose
В статьеавтор показывает, как с помощью API Jetpack Compose и модуля GraphicsLayer воспроизвести визуальные особенности старых ЭЛТ-мониторов — размытие, цветовые «тени», горизонтальные и вертикальные линии сканирования. Кроме того, добавляется «дрожание сигнала» — небольшое случайное смещение по X и Y с задержкой (~32 мс) через
Статья: https://www.sinasamaki.com/creating-a-crt-screen-effect-in-jetpack-compose/
Платформа: Android
В статьеавтор показывает, как с помощью API Jetpack Compose и модуля GraphicsLayer воспроизвести визуальные особенности старых ЭЛТ-мониторов — размытие, цветовые «тени», горизонтальные и вертикальные линии сканирования. Кроме того, добавляется «дрожание сигнала» — небольшое случайное смещение по X и Y с задержкой (~32 мс) через
LaunchedEffect, чтобы усилить ощущение старого CRT-экрана. Итоговый компонент упакован как полноценный Composable, готовый к использованию в приложении.Статья: https://www.sinasamaki.com/creating-a-crt-screen-effect-in-jetpack-compose/
Платформа: Android
❤1
Compose Stability Analyzer - аналитика стабильности композабл в Android Studio
Compose Stability Analyzer анализирует стабильность ваших композабл функций Jetpack Compose в режиме реального времени непосредственно в Android Studio или IntelliJ. Он помогает понять, почему компонуемая функция стабильна или нестабильна, и предоставляет подробную информацию благодаря трассировке и журналированию рекомпозиции.
Кроме того, вы можете отслеживать причину, по которой ваша компонуемая функция запускает рекомпозицию, с помощью аннотации
Compose Stability Analyzer на GitHub: https://github.com/skydoves/compose-stability-analyzer
Платформа: Android
⭐️: 915
Compose Stability Analyzer анализирует стабильность ваших композабл функций Jetpack Compose в режиме реального времени непосредственно в Android Studio или IntelliJ. Он помогает понять, почему компонуемая функция стабильна или нестабильна, и предоставляет подробную информацию благодаря трассировке и журналированию рекомпозиции.
Кроме того, вы можете отслеживать причину, по которой ваша компонуемая функция запускает рекомпозицию, с помощью аннотации
TraceRecomposition и экспортировать отчёты о стабильности и совместимости с помощью тасков Gradle для просмотра изменений.Compose Stability Analyzer на GitHub: https://github.com/skydoves/compose-stability-analyzer
Платформа: Android
⭐️: 915
👍2❤1
Актуальные практики работы в фоне Android-приложений
Сегодня рассказывают, какие инструменты реально работают на последних версиях системы и как их правильно использовать. Везде также будут примеры кода и ссылки на документацию.
Статья: https://habr.com/ru/companies/vk/articles/965220/
Платформа: Android
Сегодня рассказывают, какие инструменты реально работают на последних версиях системы и как их правильно использовать. Везде также будут примеры кода и ссылки на документацию.
Статья: https://habr.com/ru/companies/vk/articles/965220/
Платформа: Android
❤1
Любовь, смерть и жизненный цикл: считаем, сколько люди проводят времени в вашем Android-приложении
Помните, как вы готовились к первым собеседованиям на должность Android-разработчика? Жизненный цикл, пересоздание Activity, коллбеки ЖЦ: все эти понятия хорошо знакомы каждому молодому специалисту в нашей с вами области. Однако одна из прилетевших от аналитиков задач на отправку событий, связанных с длительностью нахождения пользователя в приложении, ввела меня в ступор, заставила провести небольшое исследование, проявить чудеса ведения переговоров и узнать много интересных нюансов.
Статья: https://habr.com/ru/companies/wildberries/articles/963618/
Платформа: Android
Помните, как вы готовились к первым собеседованиям на должность Android-разработчика? Жизненный цикл, пересоздание Activity, коллбеки ЖЦ: все эти понятия хорошо знакомы каждому молодому специалисту в нашей с вами области. Однако одна из прилетевших от аналитиков задач на отправку событий, связанных с длительностью нахождения пользователя в приложении, ввела меня в ступор, заставила провести небольшое исследование, проявить чудеса ведения переговоров и узнать много интересных нюансов.
Статья: https://habr.com/ru/companies/wildberries/articles/963618/
Платформа: Android
😁4❤1
Как мы в Saby эмоции добавляли
В Тензоре я middle+ разработчик, но недавно мне доверили задачу уровня senior — обратились с просьбой добавить реакции в мобильные приложения. «Хорошая точка роста», — подумал я и согласился. В статье расскажу, как мне вместе с командой удалось реализовать новый функционал.
Статья: https://habr.com/ru/companies/tensor/articles/965194/
Платформа: разработка
В Тензоре я middle+ разработчик, но недавно мне доверили задачу уровня senior — обратились с просьбой добавить реакции в мобильные приложения. «Хорошая точка роста», — подумал я и согласился. В статье расскажу, как мне вместе с командой удалось реализовать новый функционал.
Статья: https://habr.com/ru/companies/tensor/articles/965194/
Платформа: разработка
❤1
Понимаем «буфер с разрывом» в Jetpack Compose: 60-летний алгоритм, лежащий в основе современного UI
Представьте, что тот же алгоритмический трюк, который обеспечивал быстродействие текстовых редакторов в 1960-х, скрытно делает ваши современные Android-приложения плавными сегодня. Звучит дико? Но это правда!
Jetpack Compose, современный инструментарий Google для разработки пользовательского интерфейса для Android, использует проверенную временем концепцию Gap Buffer («буфер с разрывом» или «разрывной буфер» или «буфер с промежутком») для молниеносного обновления пользовательского интерфейса. Давайте разберём это так понятно, чтобы даже пятилетний ребёнок понял.
Статья: https://apptractor.ru/info/articles/gap-buffer.html
Платформа: Android
Представьте, что тот же алгоритмический трюк, который обеспечивал быстродействие текстовых редакторов в 1960-х, скрытно делает ваши современные Android-приложения плавными сегодня. Звучит дико? Но это правда!
Jetpack Compose, современный инструментарий Google для разработки пользовательского интерфейса для Android, использует проверенную временем концепцию Gap Buffer («буфер с разрывом» или «разрывной буфер» или «буфер с промежутком») для молниеносного обновления пользовательского интерфейса. Давайте разберём это так понятно, чтобы даже пятилетний ребёнок понял.
Статья: https://apptractor.ru/info/articles/gap-buffer.html
Платформа: Android
❤1
Dayflow - таймлайн вашего дня за компьютером
Dayflow — это нативное приложение для macOS (SwiftUI), которое записывает данные с экрана с частотой 1 кадр/с, анализирует их каждые 15 минут с помощью ИИ и формирует временную шкалу ваших действий с отчётами. Оно лёгкое (размер приложения — 25 МБ), использует около 100 МБ оперативной памяти и менее 1% загрузки процессора.
Dayflow по умолчанию означает владение и конфиденциальность. Вы контролируете данные, выбираете поставщика ИИ и можете хранить всё локально, если вам это удобно. Приложение лицензировано MIT и имеет полностью открытый исходный код, поскольку всё, что смотрит на ваш экран весь день, должно быть абсолютно прозрачно о том, что оно делает с этой информацией. Приложение должно ощущаться как тихий помощник: уважать ваше внимание, честно сообщать о том, что оно фиксирует, и легко отключаться.
Функции:
• Автоматическая хронология вашего дня с краткими сводками
• Запись с частотой 1 кадр/с — минимальное воздействие на процессор и хранилище
• 15-минутные интервалы анализа для своевременных обновлений
• Смотрите таймлапсы вашего дня
• Автоматическая очистка хранилища — удаляет старые записи через 3 дня
• Выделение отвлекающих моментов, чтобы видеть, что отвлекало вас от задачи
• Нативный пользовательский интерфейс, созданный на SwiftUI
• Автоматические обновления с помощью Sparkle (ежедневная проверка + фоновая загрузка)
Dayflow на GitHub: https://github.com/JerryZLiu/Dayflow
Платформа: macOS
⭐️: 4.5K
Dayflow — это нативное приложение для macOS (SwiftUI), которое записывает данные с экрана с частотой 1 кадр/с, анализирует их каждые 15 минут с помощью ИИ и формирует временную шкалу ваших действий с отчётами. Оно лёгкое (размер приложения — 25 МБ), использует около 100 МБ оперативной памяти и менее 1% загрузки процессора.
Dayflow по умолчанию означает владение и конфиденциальность. Вы контролируете данные, выбираете поставщика ИИ и можете хранить всё локально, если вам это удобно. Приложение лицензировано MIT и имеет полностью открытый исходный код, поскольку всё, что смотрит на ваш экран весь день, должно быть абсолютно прозрачно о том, что оно делает с этой информацией. Приложение должно ощущаться как тихий помощник: уважать ваше внимание, честно сообщать о том, что оно фиксирует, и легко отключаться.
Функции:
• Автоматическая хронология вашего дня с краткими сводками
• Запись с частотой 1 кадр/с — минимальное воздействие на процессор и хранилище
• 15-минутные интервалы анализа для своевременных обновлений
• Смотрите таймлапсы вашего дня
• Автоматическая очистка хранилища — удаляет старые записи через 3 дня
• Выделение отвлекающих моментов, чтобы видеть, что отвлекало вас от задачи
• Нативный пользовательский интерфейс, созданный на SwiftUI
• Автоматические обновления с помощью Sparkle (ежедневная проверка + фоновая загрузка)
Dayflow на GitHub: https://github.com/JerryZLiu/Dayflow
Платформа: macOS
⭐️: 4.5K
👍1
SwiftUI-Adapter: поддерживаем новые модификаторы SwiftUI на старых версиях iOS
Сегодня хочу представить вам свою библиотеку - SwiftUI-Adapter, которая избавит вас от головной боли при работе с новыми модификаторами SwiftUI. Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище.
Статья: https://habr.com/ru/articles/965732/
Платформа: iOS
Сегодня хочу представить вам свою библиотеку - SwiftUI-Adapter, которая избавит вас от головной боли при работе с новыми модификаторами SwiftUI. Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище.
Статья: https://habr.com/ru/articles/965732/
Платформа: iOS
👍1
Я нашел причину №1 фризов в вашем приложении, и вот доказательства
Многие люди спрашивают меня, почему я ненавижу SharedPreferences, а на моей работе некоторые даже спорят со мной, что SharedPreferences - это хорошая штука и что они вообще не приводят ни к каким проблемам. Но из моего шестилетнего опыта разработки и более чем 15 проектов я знаю, что SharedPreferences буквально являются причиной номер один ANR во многих популярных приложениях и сторонних фреймворках.
У вас всегда будут ANR из-за них, что бы вы ни делали (нет, edit не помогает!). И в этом посте я раскрою, почему вы должны убрать SharedPreferences из вашего проекта как можно скорее.
Статья: https://nek12.dev/blog/ru/why-sharedpreferences-cause-anrs-in-android-apps
Платформа: Android
Многие люди спрашивают меня, почему я ненавижу SharedPreferences, а на моей работе некоторые даже спорят со мной, что SharedPreferences - это хорошая штука и что они вообще не приводят ни к каким проблемам. Но из моего шестилетнего опыта разработки и более чем 15 проектов я знаю, что SharedPreferences буквально являются причиной номер один ANR во многих популярных приложениях и сторонних фреймворках.
У вас всегда будут ANR из-за них, что бы вы ни делали (нет, edit не помогает!). И в этом посте я раскрою, почему вы должны убрать SharedPreferences из вашего проекта как можно скорее.
Статья: https://nek12.dev/blog/ru/why-sharedpreferences-cause-anrs-in-android-apps
Платформа: Android
nek12.dev
Я нашел причину №1 фризов в вашем приложении, и вот доказательства | nek12.dev
SharedPreferences в Android приводят к ANR через скрытый механизм, о котором Google пытался вам соврать. Я полностью разоблачаю их с доказательствами.
🤡2❤1🤔1
Флаги функций в Swift
Почти в каждом проекте, над которым я работаю, есть как минимум три конфигурации сборки: Debug, TestFlight и App Store. Эти конфигурации различаются не только настройками сборки, но и функциональностью. В этой статье мы узнаем, как реализовать флаги функций (фичефлаги) в Swift, которые позволяют включать и отключать определённые функции при определённых условиях.
Статья: https://apptractor.ru/info/articles/flagi-funktsiy-v-swift.html
Платформа: iOS
Почти в каждом проекте, над которым я работаю, есть как минимум три конфигурации сборки: Debug, TestFlight и App Store. Эти конфигурации различаются не только настройками сборки, но и функциональностью. В этой статье мы узнаем, как реализовать флаги функций (фичефлаги) в Swift, которые позволяют включать и отключать определённые функции при определённых условиях.
Статья: https://apptractor.ru/info/articles/flagi-funktsiy-v-swift.html
Платформа: iOS
❤2