Construkt - декларативный и реактивный UIKit
Construkt позволяет создавать пользовательские интерфейсы на основе UIKit, используя современный декларативный синтаксис, идентичный SwiftUI.
Он переносит преимущества декларативной композиции и реактивного потока данных в устаревшие проекты UIKit, позволяя создавать динамические интерфейсы, управляемые состоянием, без сторибордов, NIB-файлов или шаблонного кода Auto Layout.
Используя паттерн ResultBuilder из Swift, Construkt компонует нативные иерархии UIView. Вы получаете лаконичный, читаемый синтаксис SwiftUI, сохраняя при этом всю мощь, предсказуемость и бесконечные возможности настройки UIKit.
Construkt на GitHub: https://github.com/MainActorDev/Construkt
Платформа: iOS
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Construkt позволяет создавать пользовательские интерфейсы на основе UIKit, используя современный декларативный синтаксис, идентичный SwiftUI.
Он переносит преимущества декларативной композиции и реактивного потока данных в устаревшие проекты UIKit, позволяя создавать динамические интерфейсы, управляемые состоянием, без сторибордов, NIB-файлов или шаблонного кода Auto Layout.
LabelView($title)
.color(.red)
.font(.title1)
Используя паттерн ResultBuilder из Swift, Construkt компонует нативные иерархии UIView. Вы получаете лаконичный, читаемый синтаксис SwiftUI, сохраняя при этом всю мощь, предсказуемость и бесконечные возможности настройки UIKit.
Construkt на GitHub: https://github.com/MainActorDev/Construkt
Платформа: iOS
⭐️: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
Между логином и 401: как устроена JWT-авторизация во Flutter
Сегодня я расскажу о веб-токенах JWT: как с их помощью безопасно передавать данные и реализовать авторизацию во Flutter. Разберем, чем JWT отличаются от классической схемы с сессиями, как работают Access- и Refresh-токены, зачем нужен Blacklist и как все это собрать в рабочее решение.
Статья: https://habr.com/ru/companies/friflex/articles/1005474/
Платформа: кроссплатформа/Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня я расскажу о веб-токенах JWT: как с их помощью безопасно передавать данные и реализовать авторизацию во Flutter. Разберем, чем JWT отличаются от классической схемы с сессиями, как работают Access- и Refresh-токены, зачем нужен Blacklist и как все это собрать в рабочее решение.
Статья: https://habr.com/ru/companies/friflex/articles/1005474/
Платформа: кроссплатформа/Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Нет соединения — не значит нет UX. Как не потерять доверие пользователя вместе с интернетом
Большинство разработчиков думают об офлайн-режиме в последнюю очередь - когда приложение уже готово, дизайн согласован, а PM давит на дедлайн. В результате пользователь видит белый экран, зависший спиннер или, что хуже - молча потерянные данные. Эта статья про то, как выстроить честный UX для состояний без сети: от психологии тревоги до кода с экспоненциальным откатом, от визуального языка ошибок до стратегий разрешения конфликтов. Всё это пригодится при разработке любого мобильного или веб-приложения, которое работает в условиях нестабильного соединения - а таких большинство.
Статья: https://habr.com/ru/articles/1002388/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Большинство разработчиков думают об офлайн-режиме в последнюю очередь - когда приложение уже готово, дизайн согласован, а PM давит на дедлайн. В результате пользователь видит белый экран, зависший спиннер или, что хуже - молча потерянные данные. Эта статья про то, как выстроить честный UX для состояний без сети: от психологии тревоги до кода с экспоненциальным откатом, от визуального языка ошибок до стратегий разрешения конфликтов. Всё это пригодится при разработке любого мобильного или веб-приложения, которое работает в условиях нестабильного соединения - а таких большинство.
Статья: https://habr.com/ru/articles/1002388/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Нет соединения — не значит нет UX. Как не потерять доверие пользователя вместе с интернетом
Большинство разработчиков думают об офлайн-режиме в последнюю очередь - когда приложение уже готово, дизайн согласован, а PM давит на дедлайн. В результате пользователь видит белый экран, зависший...
План развития Flutter и Dart в 2026 год
Погружаясь в наши планы на год, помните, что эта дорожная карта — как и всегда — является нашей амбициозной стратегией на будущее. Как и любая другая дорожная карта, планы, как правило, меняются и адаптируются в течение года, поэтому не удивляйтесь, если произойдут какие-то изменения. Хотя она в основном отражает работу, на которой сосредоточены наши команды в Google, правда в том, что Flutterverse сейчас намного больше, чем любая отдельная компания.
Статья: https://apptractor.ru/info/articles/plan-razvitiya-flutter-i-dart-v-2026-godu.html
Платформа: Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Погружаясь в наши планы на год, помните, что эта дорожная карта — как и всегда — является нашей амбициозной стратегией на будущее. Как и любая другая дорожная карта, планы, как правило, меняются и адаптируются в течение года, поэтому не удивляйтесь, если произойдут какие-то изменения. Хотя она в основном отражает работу, на которой сосредоточены наши команды в Google, правда в том, что Flutterverse сейчас намного больше, чем любая отдельная компания.
Статья: https://apptractor.ru/info/articles/plan-razvitiya-flutter-i-dart-v-2026-godu.html
Платформа: Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Экспериментальный Styles API в Jetpack Compose
Система модификаторов Jetpack Compose долгое время была основным способом применения визуальных свойств к компонуемым элементам. Вы объединяете модификаторы, такие как
Статья: https://apptractor.ru/info/articles/eksperimentalnyy-styles-api-v-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Система модификаторов Jetpack Compose долгое время была основным способом применения визуальных свойств к компонуемым элементам. Вы объединяете модификаторы, такие как
background(), padding() и border(), для здания внешнего вида и поведения элементов пользовательского интерфейса. Несмотря на свою мощь, этот подход имеет ограничения при работе с интерактивными состояниями. Если вы хотите, чтобы кнопка меняла цвет при нажатии, вам необходимо вручную отслеживать состояние, создавать анимированные значения и условно применять различные модификаторы. Новый экспериментальный Styles API призван решить эту проблему, предоставляя декларативный способ определения зависимых от состояния стилей с автоматической анимацией.Статья: https://apptractor.ru/info/articles/eksperimentalnyy-styles-api-v-jetpack-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Declarative Gradle - процесс сборки в ясной и понятной форме
В Gradle стремятся создать элегантный и расширяемый декларативный язык сборки, позволяющий выражать любую сборку ясным и понятным образом. И Declarative Gradle - часть этой концепции, декларативный способ описания сборки в системе Gradle, при котором вы описываете желаемый результат, а не пошаговые действия для его достижения.
Пока это экспериментальный проект.
Declarative Gradle на GitHub: https://github.com/gradle/declarative-gradle
Платформа: Android
⭐️: 171
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В Gradle стремятся создать элегантный и расширяемый декларативный язык сборки, позволяющий выражать любую сборку ясным и понятным образом. И Declarative Gradle - часть этой концепции, декларативный способ описания сборки в системе Gradle, при котором вы описываете желаемый результат, а не пошаговые действия для его достижения.
Пока это экспериментальный проект.
Declarative Gradle на GitHub: https://github.com/gradle/declarative-gradle
Платформа: Android
⭐️: 171
Please open Telegram to view this post
VIEW IN TELEGRAM
Промпт-контракты — от гадания к выпуску кода
Фреймворк промпт-контрактов не о том, чтобы писать больше кода. Он о том, чтобы думать 60 секунд, чтобы Claude Code не приходилось гадать 60 минут.
Я перешёл от азартных игр к поставке продуктов. Ваш ход.
Статья: https://apptractor.ru/info/articles/prompt-contracts.html
Платформа: разработка/ИИ
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Фреймворк промпт-контрактов не о том, чтобы писать больше кода. Он о том, чтобы думать 60 секунд, чтобы Claude Code не приходилось гадать 60 минут.
Я перешёл от азартных игр к поставке продуктов. Ваш ход.
Статья: https://apptractor.ru/info/articles/prompt-contracts.html
Платформа: разработка/ИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
👩💻 Открытый урок «Знакомство с Kotlin: пишем первый код»
🗓 5 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Developer. Basic» от Otus.
Программа вебинара:
✔️Разберем три ключевых преимущества Kotlin: безопасность null, лаконичность и совместимость.
✔️Напишем небольшой, но полезный фрагмент, который решает понятную задачу.
✔️Ответим на главный вопрос: почему Kotlin — это не просто «улучшенная Java», а другой подход к разработке.
Вебинар будет полезен:
Начинающим разработчикам, разработчикам на Java, которые хотят писать современный, более безопасный и лаконичный код.
🔗 Ссылка на регистрацию: https://otus.pw/mBhz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 5 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Developer. Basic» от Otus.
Программа вебинара:
✔️Разберем три ключевых преимущества Kotlin: безопасность null, лаконичность и совместимость.
✔️Напишем небольшой, но полезный фрагмент, который решает понятную задачу.
✔️Ответим на главный вопрос: почему Kotlin — это не просто «улучшенная Java», а другой подход к разработке.
Вебинар будет полезен:
Начинающим разработчикам, разработчикам на Java, которые хотят писать современный, более безопасный и лаконичный код.
🔗 Ссылка на регистрацию: https://otus.pw/mBhz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
This media is not supported in your browser
VIEW IN TELEGRAM
Устройства Android плавно интегрируются с подключенными дисплеями.
Google официально объявила о выходе режима рабочего стола (desktop windowing) в общую доступность вместе с релизом Android 16 QPR3. Новая функция, разработанная в партнерстве с Samsung, позволяет пользователям подключать смартфоны Pixel и Samsung к внешним мониторам для создания полноценной рабочей среды. В этом режиме на внешнем экране появляется панель задач и поддержка многооконности, что позволяет запускать несколько приложений одновременно в свободно масштабируемых окнах, превращая мобильное устройство в подобие настольного ПК.
Для разработчиков это нововведение означает необходимость адаптации приложений под различные форм-факторы и способы ввода. Программы, созданные с использованием принципов адаптивного дизайна, автоматически подстраиваются под интерфейс рабочего стола, обеспечивая привычный пользовательский опыт. Google призывает девелоперов переходить от фиксированной портретной ориентации к поддержке многодисплейного режима и современных методов управления окнами, чтобы их продукты оставались актуальными и продуктивными на расширяющейся экосистеме устройств.
Статья: https://android-developers.googleblog.com/2026/03/android-devices-extend-seamlessly-to.html
Перевод: https://apptractor.ru/info/articles/ustroystva-android-plavno-perehodyat-v-desktopnyy-rezhim.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Google официально объявила о выходе режима рабочего стола (desktop windowing) в общую доступность вместе с релизом Android 16 QPR3. Новая функция, разработанная в партнерстве с Samsung, позволяет пользователям подключать смартфоны Pixel и Samsung к внешним мониторам для создания полноценной рабочей среды. В этом режиме на внешнем экране появляется панель задач и поддержка многооконности, что позволяет запускать несколько приложений одновременно в свободно масштабируемых окнах, превращая мобильное устройство в подобие настольного ПК.
Для разработчиков это нововведение означает необходимость адаптации приложений под различные форм-факторы и способы ввода. Программы, созданные с использованием принципов адаптивного дизайна, автоматически подстраиваются под интерфейс рабочего стола, обеспечивая привычный пользовательский опыт. Google призывает девелоперов переходить от фиксированной портретной ориентации к поддержке многодисплейного режима и современных методов управления окнами, чтобы их продукты оставались актуальными и продуктивными на расширяющейся экосистеме устройств.
Статья: https://android-developers.googleblog.com/2026/03/android-devices-extend-seamlessly-to.html
Перевод: https://apptractor.ru/info/articles/ustroystva-android-plavno-perehodyat-v-desktopnyy-rezhim.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
UIComponent - декларативный UIKit
UIComponent — еще один декларативный современный фреймворк для создания пользовательских интерфейсов с использованием UIKit. Благодаря возможностям
В версии 5.0 UIComponent также может легко отображать представления SwiftUI вместе с UIView и другими компонентами.
UIComponent на GitHub: https://github.com/lkzhao/UIComponent
Платформа: iOS
⭐️: 420
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
UIComponent — еще один декларативный современный фреймворк для создания пользовательских интерфейсов с использованием UIKit. Благодаря возможностям
@resultBuilder и @dynamicMemberLookup, ваш интерфейс UIKit можно легко построить с синтаксисом, аналогичным SwiftUI. UIComponent также поддерживает однонаправленный поток данных вместо двусторонней привязки и предлагает отличные возможности для повышения производительности и оптимизации.В версии 5.0 UIComponent также может легко отображать представления SwiftUI вместе с UIView и другими компонентами.
UIComponent на GitHub: https://github.com/lkzhao/UIComponent
Платформа: iOS
⭐️: 420
Please open Telegram to view this post
VIEW IN TELEGRAM
Малоизвестная возможность Swift: for case let, о которой не знают многие iOS-разработчики
Swift известен системой pattern matching. Большинство разработчиков используют её в
Интересно, что даже разработчики с несколькими годами опыта часто о ней не знают. Более того, в официальной документации Apple она упоминается лишь вскользь, потому что технически это не отдельная фича языка, а комбинация существующих механизмов. Тем не менее, эта конструкция может заметно упростить код.
Статья: https://habr.com/ru/articles/1006412/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Swift известен системой pattern matching. Большинство разработчиков используют её в
switch, иногда в if case или guard case. Но в языке есть ещё одна конструкция, которую многие никогда не видели — for case let.Интересно, что даже разработчики с несколькими годами опыта часто о ней не знают. Более того, в официальной документации Apple она упоминается лишь вскользь, потому что технически это не отдельная фича языка, а комбинация существующих механизмов. Тем не менее, эта конструкция может заметно упростить код.
Статья: https://habr.com/ru/articles/1006412/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Малоизвестная возможность Swift: for case let, о которой не знают многие iOS-разработчики
Swift известен системой pattern matching . Большинство разработчиков используют её в switch , иногда в if case или guard case . Но в языке есть ещё одна конструкция, которую многие никогда не видели —...
Kotlin Multiplatform LaTeX Rendering Library - рендеринг формул LaTeX в Compose
Kotlin Multiplatform LaTeX Rendering Library - высокопроизводительная библиотека для анализа и отображения математических формул LaTeX, разработанная на основе Kotlin Multiplatform (KMP). Она поддерживает согласованные эффекты отображения на Android, iOS, Desktop (JVM) и Web (Wasm/JS).
Фичи:
• Высокопроизводительный парсинг: рекурсивный парсер на основе AST с поддержкой инкрементальных обновлений
• Кроссплатформенная консистентность: используется Compose Multiplatform для единообразного рендеринга на Android, iOS, Desktop (JVM) и Web (Wasm/JS)
• Автоматический перенос строк: умный перенос длинных формул по логическим точкам разрыва (операторы, отношения и т.д.)
• Экспорт изображений: возможность экспортировать отрендеренные формулы в изображения PNG/JPEG/WEBP с настраиваемым масштабированием разрешения
• API предварительного измерения: синхронное предварительное вычисление размеров формулы (ширина/высота/baseline) для встраивания математических выражений в Compose через InlineTextContent
• Доступность: встроенная поддержка screen reader’ов с описанием формул в стиле MathSpeak
• LaTeX → MathML: конвертация AST LaTeX в Presentation MathML
• Подсветка формул: возможность подсветки подвыражений внутри формулы через HighlightConfig
• Анимации: анимированные переходы между формулами (crossfade / slide / fade+slide)
• WYSIWYG-редактор (экспериментально): встроенный редактор LaTeX с позиционированием курсора, размещением по тапу и предпросмотром отрендеренной формулы в реальном времени
Kotlin Multiplatform LaTeX Rendering Library на GitHub: https://github.com/huarangmeng/latex
Платформа: Android/кроссплатформа
⭐️: 55
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Kotlin Multiplatform LaTeX Rendering Library - высокопроизводительная библиотека для анализа и отображения математических формул LaTeX, разработанная на основе Kotlin Multiplatform (KMP). Она поддерживает согласованные эффекты отображения на Android, iOS, Desktop (JVM) и Web (Wasm/JS).
Фичи:
• Высокопроизводительный парсинг: рекурсивный парсер на основе AST с поддержкой инкрементальных обновлений
• Кроссплатформенная консистентность: используется Compose Multiplatform для единообразного рендеринга на Android, iOS, Desktop (JVM) и Web (Wasm/JS)
• Автоматический перенос строк: умный перенос длинных формул по логическим точкам разрыва (операторы, отношения и т.д.)
• Экспорт изображений: возможность экспортировать отрендеренные формулы в изображения PNG/JPEG/WEBP с настраиваемым масштабированием разрешения
• API предварительного измерения: синхронное предварительное вычисление размеров формулы (ширина/высота/baseline) для встраивания математических выражений в Compose через InlineTextContent
• Доступность: встроенная поддержка screen reader’ов с описанием формул в стиле MathSpeak
• LaTeX → MathML: конвертация AST LaTeX в Presentation MathML
• Подсветка формул: возможность подсветки подвыражений внутри формулы через HighlightConfig
• Анимации: анимированные переходы между формулами (crossfade / slide / fade+slide)
• WYSIWYG-редактор (экспериментально): встроенный редактор LaTeX с позиционированием курсора, размещением по тапу и предпросмотром отрендеренной формулы в реальном времени
Kotlin Multiplatform LaTeX Rendering Library на GitHub: https://github.com/huarangmeng/latex
Платформа: Android/кроссплатформа
⭐️: 55
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Зачем нужен companion object в Hilt-модулях
Замечали некий
Статья: https://habr.com/ru/articles/1006844/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Замечали некий
companion object в интерфейсах Hilt-модулей? Что он делает, как он работает под капотом, почему так популярен в Hilt-модулях, и почему нельзя обойтись обычными классами? Сегодня я развею эту магию!Статья: https://habr.com/ru/articles/1006844/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Я заменил все циклы рекурсией — вот что произошло
Глубоко ли я изучил рекурсию? Да. Повторил бы я этот эксперимент? Только если бы я возненавидел своих товарищей по команде.
Если вы вынесете из этой истории что-то одно, пусть это будет следующее:
Если, конечно, вам не доставляет удовольствия наблюдать за тем, как ваш код медленно саморазрушается.
Статья: https://apptractor.ru/info/articles/ya-zamenil-vse-tsikly-rekursiey-vot-chto-proizoshlo.html
Платформа: iOS/Swift
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Глубоко ли я изучил рекурсию? Да. Повторил бы я этот эксперимент? Только если бы я возненавидел своих товарищей по команде.
Если вы вынесете из этой истории что-то одно, пусть это будет следующее:
Знайте рекурсию. Уважайте рекурсию. Но ради всего святого, не заменяйте ею свои циклы.
Если, конечно, вам не доставляет удовольствия наблюдать за тем, как ваш код медленно саморазрушается.
Статья: https://apptractor.ru/info/articles/ya-zamenil-vse-tsikly-rekursiey-vot-chto-proizoshlo.html
Платформа: iOS/Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
•
(iOS En) Fortify your app: Essential strategies to strengthen security•
(iOS En) iOS Photos App Style Transitions Using SwiftUI•
(iOS En) Building a Better Network Manager in Swift•
(iOS En) Apple Stores App's Minimizable Tab Bar Using SwiftUI•
(And Ru) Защищаем ресурсы Android-приложений с Runtime Resource Overlay•
(And En) Migrating Kotlin Android projects to AGP 9.0•
(And En) Tracing 2.0 - Performance on Android has never been easier•
(Crs Ru) Flutter Dev Podcast #52: вайб-кодинг и агенты — превращение Flutter-разработчика в фуллстека•
(Dev Ru) Почему свои IT-продукты выгоднее, чем работа в найме•
(Dev Ru) Оконные менеджеры — стекинг, тайлинг, ментальная модель управления экраном•
(Dev En) Is it still worth learning to code in 2026?•
(Dev En) Learn MLOps with MLflow and Databricks – Full Course for Machine Learning Engineers•
(Dsg Ru) Ozon Tech Community Design MeetupПрошлогодние видео:
•
(iOS Ru) Minimal Widget Product: путь к эффективной и гибкой реализации виджетов•
(iOS Ru) Уроки Swift: UITextField с анимированным плейсхолдером•
(And Ru) Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков•
(And Ru) Как устроена мобильная архитектура. Интервью с тех. лидером юнита «Mobile Architecture» из AvitoTech•
(Crs Ru) Адаптивная вёрстка во Flutter•
(Crs Ru) Заезжаем в KMP. Но какой ценой?•
(Dev Ru) Внедряем Server Driven UIPlease open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Fortify your app: Essential strategies to strengthen security | Meet with Apple
Learn to bolster your app’s security and help protect user data in this online activity streaming from the Apple Developer Center Cupertino. Whether you’re hardening an existing app or starting a new project, you’ll learn directly from Apple engineers about…
Сравнение MVI и KoTEA
В мире Android-разработки существуют различные архитектурные паттерны. Многие из вас хорошо знакомы с MVVM, и возможно сталкивались с MVP. В последнее время всё чаще звучит аббревиатура MVI (Model-View-Intent). Однако наряду с MVI существует похожий на неё подход – KoTEA (Kotlin The Elm Architecture).
Оба этих паттерна следуют принципам UDF (Unidirectional Data Flow). Суть UDF архитектуры заключается в том, что данные в приложении движутся строго в одном направлении от единого источника истины к визуальным компонентам. Каждая фича (например, экран) имеет единственное неизменяемое состояние (State). Изменить его напрямую нельзя — только создать новое на основе предыдущего. Это соответствует принципу конечных автоматов и делает переходы между состояниями прозрачными и контролируемыми.
Статья: https://habr.com/ru/articles/1006782/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В мире Android-разработки существуют различные архитектурные паттерны. Многие из вас хорошо знакомы с MVVM, и возможно сталкивались с MVP. В последнее время всё чаще звучит аббревиатура MVI (Model-View-Intent). Однако наряду с MVI существует похожий на неё подход – KoTEA (Kotlin The Elm Architecture).
Оба этих паттерна следуют принципам UDF (Unidirectional Data Flow). Суть UDF архитектуры заключается в том, что данные в приложении движутся строго в одном направлении от единого источника истины к визуальным компонентам. Каждая фича (например, экран) имеет единственное неизменяемое состояние (State). Изменить его напрямую нельзя — только создать новое на основе предыдущего. Это соответствует принципу конечных автоматов и делает переходы между состояниями прозрачными и контролируемыми.
Статья: https://habr.com/ru/articles/1006782/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
SimpleChart - графики SwiftUI
SimpleChart - простая библиотека для построения графиков, использующая исключительно SwiftUI и обеспечивающая поддержку всех платформ Apple. Что особенно важно, её можно использовать в WidgetKit. SimpleChart предоставляет вспомогательные методы для создания chartData, который является единственным необходимым параметром для всех объектов конфигурации графиков. Поддерживает iOS v13, macOS v10.15, tvOS v13, watchOS v6, macCatalyst v.13.
Доступные диаграммы:
• Гистограмма
• Линейная диаграмма
• Квадратная кривая (изогнутая версия линейной диаграммы)
• Диаграмма диапазонов (диаграмма, представляющая диапазон данных за один и тот же период времени, аналогичная представлению диапазона частоты сердечных сокращений в приложении Apple Health)
SimpleChart на GitHub: https://github.com/ImpostersLimited/SimpleChart
Платформа: iOS
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
SimpleChart - простая библиотека для построения графиков, использующая исключительно SwiftUI и обеспечивающая поддержку всех платформ Apple. Что особенно важно, её можно использовать в WidgetKit. SimpleChart предоставляет вспомогательные методы для создания chartData, который является единственным необходимым параметром для всех объектов конфигурации графиков. Поддерживает iOS v13, macOS v10.15, tvOS v13, watchOS v6, macCatalyst v.13.
Доступные диаграммы:
• Гистограмма
• Линейная диаграмма
• Квадратная кривая (изогнутая версия линейной диаграммы)
• Диаграмма диапазонов (диаграмма, представляющая диапазон данных за один и тот же период времени, аналогичная представлению диапазона частоты сердечных сокращений в приложении Apple Health)
SimpleChart на GitHub: https://github.com/ImpostersLimited/SimpleChart
Платформа: iOS
⭐️: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
Что упало — не пропало? EXC_BAD_ACCESS vs. LLDB
Эта статья для тех, кто хочет получить ещё один инструмент локализации падений в свой арсенал, ну или просто ни разу не сталкивался с четырьмя волшебными буквами из заголовка.
Материал основан на нашем опыте решения одной из проблем. Всё, о чём мы рассказываем ниже, — это не «правильный учебник» по LLDB, а опыт из эксперимента, который мы получили, пока работали над решением. В реальном проекте этот разбор может быть сложнее, поэтому, если у вас есть символизированный крэш-лог, или Address Sanitizer дает подсказку — скорее всего будет лучше/быстрее/качественнее разобраться с проблемой через них
Статья: https://habr.com/ru/companies/ivi/articles/1003668/
Платформа: iOS/Swift
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Эта статья для тех, кто хочет получить ещё один инструмент локализации падений в свой арсенал, ну или просто ни разу не сталкивался с четырьмя волшебными буквами из заголовка.
Материал основан на нашем опыте решения одной из проблем. Всё, о чём мы рассказываем ниже, — это не «правильный учебник» по LLDB, а опыт из эксперимента, который мы получили, пока работали над решением. В реальном проекте этот разбор может быть сложнее, поэтому, если у вас есть символизированный крэш-лог, или Address Sanitizer дает подсказку — скорее всего будет лучше/быстрее/качественнее разобраться с проблемой через них
Статья: https://habr.com/ru/companies/ivi/articles/1003668/
Платформа: iOS/Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Asset Catalog – скрытый bottleneck сборки iOS. Разбираемся, как распараллелить компиляцию Asset’ов
2026 год. У вас 8–16 ядер в ноутбуке. M-чипы летают.
Swift компилируется параллельно.
Вы нажимаете ⌘B – и одно ядро уныло крутится на 100% загрузки, пока остальные отдыхают.
Добро пожаловать в мир однопоточной компиляции Asset Catalog’а.
В этой статье я покажу, почему Asset Catalog тормозит сборку и как заставить Xcode использовать больше ядер CPU. Пошагово и с примерами.
Статья: https://habr.com/ru/articles/1007956/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
2026 год. У вас 8–16 ядер в ноутбуке. M-чипы летают.
Swift компилируется параллельно.
Вы нажимаете ⌘B – и одно ядро уныло крутится на 100% загрузки, пока остальные отдыхают.
Добро пожаловать в мир однопоточной компиляции Asset Catalog’а.
В этой статье я покажу, почему Asset Catalog тормозит сборку и как заставить Xcode использовать больше ядер CPU. Пошагово и с примерами.
Статья: https://habr.com/ru/articles/1007956/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как нарезать Android-монолит с помощью compile-time плагинов?
В этой статье вспомним наш опыт разбиения большого монолитного Android-приложения на мини-приложения. Занимались мы этим уже довольно давно, но тема всё равно актуальная.
Переход к таким мини-приложениям позволяет ускорить конфигурацию Gradle и уменьшить время компиляции проекта как локально, так и на CI. Думаю, это будет полезно тем, кто интересуется архитектурой android-приложений, KSP, Dagger, а также тем, у кого крупное многомодульное приложение и есть проблемы с производительностью работы Gradle в проекте.
Статья: https://habr.com/ru/companies/alfa/articles/1002998/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье вспомним наш опыт разбиения большого монолитного Android-приложения на мини-приложения. Занимались мы этим уже довольно давно, но тема всё равно актуальная.
Переход к таким мини-приложениям позволяет ускорить конфигурацию Gradle и уменьшить время компиляции проекта как локально, так и на CI. Думаю, это будет полезно тем, кто интересуется архитектурой android-приложений, KSP, Dagger, а также тем, у кого крупное многомодульное приложение и есть проблемы с производительностью работы Gradle в проекте.
Статья: https://habr.com/ru/companies/alfa/articles/1002998/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
LazyAdaptiveLayout - продвинутая сетка для Android Jetpack Compose
LazyAdaptiveLayout - высокопроизводительный, настраиваемый адаптивный grid-layout для Android Jetpack Compose с ленивой загрузкой и адаптивной оптимизацией прокрутки. Поддерживает несколько типов раскладок: staggered, uniform, full-width и пользовательские layout’ы со span-настройками, с интуитивным DSL-API.
Возможности
• Несколько типов макетов: поддержка Staggered, Uniform, Full Width и пользовательских раскладок со span-настройками
• DSL API: интуитивный DSL на основе scope, похожий на LazyColumn и LazyVerticalGrid
• Ленивая загрузка: эффективный рендеринг с подгрузкой элементов на основе области видимости
• Адаптивная оптимизация прокрутки: динамический размер буфера в зависимости от скорости скролла
• Гибкая конфигурация: настраиваемые spacing, padding и размеры элементов
• Типобезопасность: обобщённая (generic) реализация с поддержкой любых типов данных
• Оптимизация производительности: минимальные рекомпозиции и эффективное использование памяти
• Контроль высоты элементов: возможность задавать индивидуальную высоту для каждого элемента внутри групп
LazyAdaptiveLayout на GitHub: https://github.com/wayfair-incubator/compose-lazy-adaptive-layout
Платформа: Android
⭐️: 30
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
LazyAdaptiveLayout - высокопроизводительный, настраиваемый адаптивный grid-layout для Android Jetpack Compose с ленивой загрузкой и адаптивной оптимизацией прокрутки. Поддерживает несколько типов раскладок: staggered, uniform, full-width и пользовательские layout’ы со span-настройками, с интуитивным DSL-API.
Возможности
• Несколько типов макетов: поддержка Staggered, Uniform, Full Width и пользовательских раскладок со span-настройками
• DSL API: интуитивный DSL на основе scope, похожий на LazyColumn и LazyVerticalGrid
• Ленивая загрузка: эффективный рендеринг с подгрузкой элементов на основе области видимости
• Адаптивная оптимизация прокрутки: динамический размер буфера в зависимости от скорости скролла
• Гибкая конфигурация: настраиваемые spacing, padding и размеры элементов
• Типобезопасность: обобщённая (generic) реализация с поддержкой любых типов данных
• Оптимизация производительности: минимальные рекомпозиции и эффективное использование памяти
• Контроль высоты элементов: возможность задавать индивидуальную высоту для каждого элемента внутри групп
LazyAdaptiveLayout на GitHub: https://github.com/wayfair-incubator/compose-lazy-adaptive-layout
Платформа: Android
⭐️: 30
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2