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
Вам следует использовать бета-версии AndroidX
В любом случае, как пользователи библиотеки AndroidX, мы несём общую ответственность за сообщение об ошибках в процессе разработки, чтобы они были исправлены. Нельзя рассчитывать, что их обнаружит кто-то другой. В Cash App у нас очень большая кодовая база, и мы делаем много интересного с помощью этих библиотек. Чтобы максимально эффективно использовать бета-версии, мы планируем продолжать выявлять и сообщать о любых найденных ошибках. Это поможет нам не только поддерживать возможность обновления, но и всем остальным, кто использует эти библиотеки. И, кстати, думаю, вам стоит поступить так же!
Статья: https://apptractor.ru/info/articles/vam-sleduet-ispolzovat-beta-versii-androidx.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В любом случае, как пользователи библиотеки AndroidX, мы несём общую ответственность за сообщение об ошибках в процессе разработки, чтобы они были исправлены. Нельзя рассчитывать, что их обнаружит кто-то другой. В Cash App у нас очень большая кодовая база, и мы делаем много интересного с помощью этих библиотек. Чтобы максимально эффективно использовать бета-версии, мы планируем продолжать выявлять и сообщать о любых найденных ошибках. Это поможет нам не только поддерживать возможность обновления, но и всем остальным, кто использует эти библиотеки. И, кстати, думаю, вам стоит поступить так же!
Статья: https://apptractor.ru/info/articles/vam-sleduet-ispolzovat-beta-versii-androidx.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Стэнфордский университет выпускает CS193p ("Разработка приложений для iOS") – версия весны 2025 года
В курсе есть видео и вспомогательные материалы по первым 6 лекциям курса CS193p (Разработка приложений для iOS с использованием SwiftUI) весеннего семестра 2025 года в Стэнфордском университете. Это курс, который студенты Стэнфорда проходят для изучения основ разработки приложений для iOS. Дополнительные лекции из этого семестра будут опубликованы в ближайшее время.
Курс проходил до выпуска iOS 26 и Xcode 26, но код, написанный в ходе курса, в основном совместим с новыми версиями. Конечно, большим изменением в Xcode 26 является встроенная помощь LLM, а в iOS 26 в пользовательском интерфейсе появился Liquid Glass, поэтому, конечно, ни в одном из этих видео этого нет.
Курс: https://cs193p.stanford.edu/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В курсе есть видео и вспомогательные материалы по первым 6 лекциям курса CS193p (Разработка приложений для iOS с использованием SwiftUI) весеннего семестра 2025 года в Стэнфордском университете. Это курс, который студенты Стэнфорда проходят для изучения основ разработки приложений для iOS. Дополнительные лекции из этого семестра будут опубликованы в ближайшее время.
Курс проходил до выпуска iOS 26 и Xcode 26, но код, написанный в ходе курса, в основном совместим с новыми версиями. Конечно, большим изменением в Xcode 26 является встроенная помощь LLM, а в iOS 26 в пользовательском интерфейсе появился Liquid Glass, поэтому, конечно, ни в одном из этих видео этого нет.
Курс: https://cs193p.stanford.edu/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Стартовал конкурс Advent of Code 2025
Настало самое чудесное время года. Время, которое можно провести, участвуя в увлекательном конкурсе по программированию.
Каждый декабрь Эрик Вастл публикует Advent of Code, увлекательный набор упражнений по программированию. С 1 по 12 декабря каждый день публикуется по одному заданию.
Задания начинаются с простых и постепенно становятся все сложнее. Вы можете использовать любой язык программирования и любые методы для выполнения упражнений.
Вот сообщества для разработчиков:
• Swift
• Kotlin
Таблица лидеров будет автоматически обновляться, показывая, кто выполнил задачу, и выставляя оценку в зависимости от того, сколько времени у вас на это ушло. Конечно, вы всегда можете игнорировать оценку — это просто для удовольствия!
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Настало самое чудесное время года. Время, которое можно провести, участвуя в увлекательном конкурсе по программированию.
Каждый декабрь Эрик Вастл публикует Advent of Code, увлекательный набор упражнений по программированию. С 1 по 12 декабря каждый день публикуется по одному заданию.
Задания начинаются с простых и постепенно становятся все сложнее. Вы можете использовать любой язык программирования и любые методы для выполнения упражнений.
Вот сообщества для разработчиков:
• Swift
• Kotlin
Таблица лидеров будет автоматически обновляться, показывая, кто выполнил задачу, и выставляя оценку в зависимости от того, сколько времени у вас на это ушло. Конечно, вы всегда можете игнорировать оценку — это просто для удовольствия!
Please open Telegram to view this post
VIEW IN TELEGRAM
Неделя Jetpack Navigation 3
Jetpack Navigation 3 теперь стабилен, и его использование может помочь вам уменьшить технический долг, обеспечить лучшее разделение задач, ускорить разработку функций и поддерживать новые форм-факторы. Google посвящает целую неделю новой библиотеке и поможет вам узнать о Nav3 и начать интегрировать ее в свое приложение.
Вы узнаете о библиотеке в деталях, о том, как выделить в модули код навигации, а также получите множество рецептов кода для типичных случаев использования. В конце недели присоединяйтесь к сессии «Спроси о чем угодно», чтобы эксперты ответили на все ваши вопросы о Nav3. Вот полное расписание:
• Понедельник: Обзор API
• Вторник: Анимации
• Среда: Глубокие ссылки
• Четверг: Модуляризация
• Пятница: Спросите о чем угодно
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Jetpack Navigation 3 теперь стабилен, и его использование может помочь вам уменьшить технический долг, обеспечить лучшее разделение задач, ускорить разработку функций и поддерживать новые форм-факторы. Google посвящает целую неделю новой библиотеке и поможет вам узнать о Nav3 и начать интегрировать ее в свое приложение.
Вы узнаете о библиотеке в деталях, о том, как выделить в модули код навигации, а также получите множество рецептов кода для типичных случаев использования. В конце недели присоединяйтесь к сессии «Спроси о чем угодно», чтобы эксперты ответили на все ваши вопросы о Nav3. Вот полное расписание:
• Понедельник: Обзор API
• Вторник: Анимации
• Среда: Глубокие ссылки
• Четверг: Модуляризация
• Пятница: Спросите о чем угодно
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Навигация на SwiftUI: чего не хватает и как исправить
В статье iOS-разработчик CleverPumpkin Даниил Апальков разбирает ограничения SwiftUI при построении сложной навигации, с которыми команда столкнулась на одном из своих проектов. Он рассказывает, в каких сценариях приходилось подключать UIKit, чтобы сохранять стабильность, показывает варианты подходов и делится выводами, какие инструменты выбирать для контролируемой навигации.
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В статье iOS-разработчик CleverPumpkin Даниил Апальков разбирает ограничения SwiftUI при построении сложной навигации, с которыми команда столкнулась на одном из своих проектов. Он рассказывает, в каких сценариях приходилось подключать UIKit, чтобы сохранять стабильность, показывает варианты подходов и делится выводами, какие инструменты выбирать для контролируемой навигации.
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
AnyLanguageModel - совместимая по API замена Foundation Models на кастомные модели
AnyLanguageModel - пакет Swift, предоставляющий готовую замену фреймворку Apple Foundation Models с поддержкой кастомных моделей. Всё, что вам нужно сделать, — это изменить оператор импорта:
- import FoundationModels
+ import AnyLanguageModel
Поддерживаемые провайдеры:
• Apple Foundation Models
• Core ML models
• MLX models
• llama.cpp (GGUF models)
• Ollama HTTP API
• Anthropic Messages API
• Google Gemini API
• OpenAI Chat Completions API
• OpenAI Responses API
AnyLanguageModel на GitHub: https://github.com/mattt/AnyLanguageModel
Платформа: iOS
⭐️: 572
AnyLanguageModel - пакет Swift, предоставляющий готовую замену фреймворку Apple Foundation Models с поддержкой кастомных моделей. Всё, что вам нужно сделать, — это изменить оператор импорта:
- import FoundationModels
+ import AnyLanguageModel
struct WeatherTool: Tool {
let name = "getWeather"
let description = "Retrieve the latest weather information for a city"
@Generable
struct Arguments {
@Guide(description: "The city to fetch the weather for")
var city: String
}
func call(arguments: Arguments) async throws -> String {
"The weather in \(arguments.city) is sunny and 72°F / 23°C"
}
}
let model = SystemLanguageModel.default
let session = LanguageModelSession(model: model, tools: [WeatherTool()])
let response = try await session.respond {
Prompt("How's the weather in Cupertino?")
}
print(response.content)Поддерживаемые провайдеры:
• Apple Foundation Models
• Core ML models
• MLX models
• llama.cpp (GGUF models)
• Ollama HTTP API
• Anthropic Messages API
• Google Gemini API
• OpenAI Chat Completions API
• OpenAI Responses API
AnyLanguageModel на GitHub: https://github.com/mattt/AnyLanguageModel
Платформа: iOS
⭐️: 572
👍1
Реверс-инжиниринг приложений на Android: знакомство с Frida
Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение. В статье рассказывается, как работать с Frida, исследовать приложения на телефоне без root-доступа и создавать свои моды.
Статья: https://habr.com/ru/companies/selectel/articles/973526/
Платформа: Android
Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение. В статье рассказывается, как работать с Frida, исследовать приложения на телефоне без root-доступа и создавать свои моды.
Статья: https://habr.com/ru/companies/selectel/articles/973526/
Платформа: Android
👍1
5.webm
169.5 KB
Создание анимированных полос в Jetpack Compose
Если мы хотим нарисовать и анимировать полоски в Jetpack Compose, мы можем использовать градиент с его параметрами.
Статья: https://apptractor.ru/info/articles/stripes-jetpack-compose.html
Платформа: Android
Если мы хотим нарисовать и анимировать полоски в Jetpack Compose, мы можем использовать градиент с его параметрами.
Статья: https://apptractor.ru/info/articles/stripes-jetpack-compose.html
Платформа: Android
MaterialKolor - динамическая цветовая схема Material3 из исходного цвета
MaterialKolor - библиотека Compose Multiplatform для создания динамических цветовых палитр Material Design 3 из любого цвета. Доступные платформы: Android, iOS, JVM (Desktop) и JavaScript/wasm (браузер). Основу этой библиотеки составляет репозиторий material-color-utilities. В настоящее время это библиотека доступна только на Java, и автор хотел сделать её доступной для проектов Kotlin Multiplatform. Исходный код был взят и преобразован в библиотеку Kotlin Multiplatform.
MaterialKolor на GitHub: https://github.com/jordond/MaterialKolor
Платформа: Android/кроссплатформа
⭐️: 755
MaterialKolor - библиотека Compose Multiplatform для создания динамических цветовых палитр Material Design 3 из любого цвета. Доступные платформы: Android, iOS, JVM (Desktop) и JavaScript/wasm (браузер). Основу этой библиотеки составляет репозиторий material-color-utilities. В настоящее время это библиотека доступна только на Java, и автор хотел сделать её доступной для проектов Kotlin Multiplatform. Исходный код был взят и преобразован в библиотеку Kotlin Multiplatform.
MaterialKolor на GitHub: https://github.com/jordond/MaterialKolor
Платформа: Android/кроссплатформа
⭐️: 755
👍1
Перетаскивание и буфер обмена с помощью Transferable
Используя
Статья: https://apptractor.ru/info/articles/peretaskivanie-i-bufer-obmena-s-pomoschyu-transferable.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Используя
Transferable, вы не только упрощаете реализацию, но и делаете своё приложение совместимым с современными формами взаимодействия, от буфера обмена до перетаскивания, используя единую модель данных.Статья: https://apptractor.ru/info/articles/peretaskivanie-i-bufer-obmena-s-pomoschyu-transferable.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Как Vercel перенесли магию v0 в нативное приложение
Vercel делится тем, как они создавали iOS-версию своего AI-генератора интерфейсов v0. Спойлер: это не Swift и не Flutter. Это мощная демонстрация того, куда движется экосистема React.
Ключевые моменты из статьи:
• React Native + Expo: Основа приложения. Они использовали Expo (с Continuous Native Generation), что позволило веб-разработчикам писать нативный код, практически не выходя из привычной среды.
• React Server Components (RSC) на мобилке: Это самое интересное. Приложение v0 использует ту же архитектуру, что и веб-версия. Сервер стримит компоненты прямо на устройство. Это позволяет переиспользовать огромные куски логики.
• Общий код: Благодаря монорепозиторию (Turborepo), они делят типы, утилиты и даже UI-компоненты между Next.js (веб) и Expo (iOS).
• Стриминг: Ощущение "магии", когда код пишется у вас на глазах, реализовано через потоковую передачу данных. Это не просто запрос-ответ, это живой поток токенов от LLM, который рендерится в реальном времени.
• Производительность: Чтобы скролл и анимации были плавными (60fps), тяжелые вычисления вынесены в отдельные потоки или обрабатываются на сервере.
Vercel доказывает, что граница между вебом и нативом стирается. Если у вас уже есть крутая команда React-разработчиков, вам не обязательно нанимать отдельный штат iOS-инженеров, чтобы сделать продукт мирового уровня.
Статья: https://vercel.com/blog/how-we-built-the-v0-ios-app
Платформа: кроссплатформа
Vercel делится тем, как они создавали iOS-версию своего AI-генератора интерфейсов v0. Спойлер: это не Swift и не Flutter. Это мощная демонстрация того, куда движется экосистема React.
Ключевые моменты из статьи:
• React Native + Expo: Основа приложения. Они использовали Expo (с Continuous Native Generation), что позволило веб-разработчикам писать нативный код, практически не выходя из привычной среды.
• React Server Components (RSC) на мобилке: Это самое интересное. Приложение v0 использует ту же архитектуру, что и веб-версия. Сервер стримит компоненты прямо на устройство. Это позволяет переиспользовать огромные куски логики.
• Общий код: Благодаря монорепозиторию (Turborepo), они делят типы, утилиты и даже UI-компоненты между Next.js (веб) и Expo (iOS).
• Стриминг: Ощущение "магии", когда код пишется у вас на глазах, реализовано через потоковую передачу данных. Это не просто запрос-ответ, это живой поток токенов от LLM, который рендерится в реальном времени.
• Производительность: Чтобы скролл и анимации были плавными (60fps), тяжелые вычисления вынесены в отдельные потоки или обрабатываются на сервере.
Vercel доказывает, что граница между вебом и нативом стирается. Если у вас уже есть крутая команда React-разработчиков, вам не обязательно нанимать отдельный штат iOS-инженеров, чтобы сделать продукт мирового уровня.
Статья: https://vercel.com/blog/how-we-built-the-v0-ios-app
Платформа: кроссплатформа
👍1
TakeoffKit - современный механизм синхронизации через CloudKit для любой локальной базы данных
TakeoffKit - это библиотека Swift, упрощающая синхронизацию локальных данных с использованием CloudKit, абстрагируясь от его многочисленных сложностей, таких как преобразование CKRecord, ограничение скорости запросов, обработка ошибок и многое другое. Она предоставляет механизм синхронизации, аналогичный CKSyncEngine от Apple, но с более точным контролем и лучшей обратной совместимостью. Механизм синхронизации разработан для работы с любой локальной средой хранения данных — CoreData, SwiftData, Realm и т.д.
TakeoffKit на GitHub: https://github.com/orloff-n/TakeoffKit
Платформа: iOS
⭐️: 25
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
TakeoffKit - это библиотека Swift, упрощающая синхронизацию локальных данных с использованием CloudKit, абстрагируясь от его многочисленных сложностей, таких как преобразование CKRecord, ограничение скорости запросов, обработка ошибок и многое другое. Она предоставляет механизм синхронизации, аналогичный CKSyncEngine от Apple, но с более точным контролем и лучшей обратной совместимостью. Механизм синхронизации разработан для работы с любой локальной средой хранения данных — CoreData, SwiftData, Realm и т.д.
TakeoffKit на GitHub: https://github.com/orloff-n/TakeoffKit
Платформа: iOS
⭐️: 25
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений
Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения.
И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle.
В этой статье я расскажу, как я решил этот вопрос.
Статья: https://habr.com/ru/companies/psb/articles/974368/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения.
И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle.
В этой статье я расскажу, как я решил этот вопрос.
Статья: https://habr.com/ru/companies/psb/articles/974368/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Уроки, извлеченные из собеседования по Swift
Некоторое время назад я проходил собеседование в команде разработчиков UI-фреймворка на SwiftUI в крупной компании-поставщике платформ. Поскольку я работал со SwiftUI с момента его выпуска, я был очень рад этой возможности. Но после многих лет работы в качестве независимого разработчика это было моё первое настоящее техническое собеседование за долгое время.
Спойлер: меня не взяли. Но я кое-чему научился в области алгоритмов Swift и тому, как подходить к техническим собеседованиям.
Статья: https://apptractor.ru/info/articles/uroki-izvlechennye-iz-sobesedovaniya-po-swift.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Некоторое время назад я проходил собеседование в команде разработчиков UI-фреймворка на SwiftUI в крупной компании-поставщике платформ. Поскольку я работал со SwiftUI с момента его выпуска, я был очень рад этой возможности. Но после многих лет работы в качестве независимого разработчика это было моё первое настоящее техническое собеседование за долгое время.
Спойлер: меня не взяли. Но я кое-чему научился в области алгоритмов Swift и тому, как подходить к техническим собеседованиям.
Статья: https://apptractor.ru/info/articles/uroki-izvlechennye-iz-sobesedovaniya-po-swift.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
😡2
This media is not supported in your browser
VIEW IN TELEGRAM
Awesome Jetpack Compose Animations - коллекция анимаций Jetpack Compose
Awesome Jetpack Compose Animations - организованная коллекция (24 штуки) классных анимаций для кнопок, карточек, изображений и многого другого — идеально подходит для улучшения ваших приложений и проектов.
Awesome Jetpack Compose Animations на GitHub: https://github.com/Swapnil-J-Patil/Delightful_Animations
Платформа: Android
⭐️: 13
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Awesome Jetpack Compose Animations - организованная коллекция (24 штуки) классных анимаций для кнопок, карточек, изображений и многого другого — идеально подходит для улучшения ваших приложений и проектов.
Awesome Jetpack Compose Animations на GitHub: https://github.com/Swapnil-J-Patil/Delightful_Animations
Платформа: Android
⭐️: 13
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Flutter MethodChannel: как подружить Dart с нативным Android (и iOS)
Сегодня поговорим о том, как Flutter-приложению выйти за пределы чисто Dart-мирка и воспользоваться возможностями родной платформы, например, вызвать API Android или iOS напрямую. Например, есть какая-нибудь классная фича в Android SDK, а в Flutter её нет. Как быть? Ответ — писать собственный плагин и использовать MethodChannel.
Статья: https://habr.com/ru/companies/otus/articles/970094/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня поговорим о том, как Flutter-приложению выйти за пределы чисто Dart-мирка и воспользоваться возможностями родной платформы, например, вызвать API Android или iOS напрямую. Например, есть какая-нибудь классная фича в Android SDK, а в Flutter её нет. Как быть? Ответ — писать собственный плагин и использовать MethodChannel.
Статья: https://habr.com/ru/companies/otus/articles/970094/
Платформа: кроссплатформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
RemoteCompose: другая парадигма SDUI в Jetpack Compose
RemoteCompose всё ещё находится в разработке AndroidX и официально пока не опубликован, однако концепция очень многообещающая.
Сервер перехватывает (capture) любой макет Jetpack Compose и выдает его в компактном сериализованном формате. Это своего рода «скриншот» вашего пользовательского интерфейса, только вместо пикселей вы захватываете фактические инструкции отрисовки. Этот полученный документ содержит всё необходимое для воссоздания пользовательского интерфейса: фигуры, цвета, текст, изображения, анимацию и даже интерактивные области касания. На стороне сервера пишется стандартный код Compose. Не нужно изучать новый DSL (Domain-Specific Language), поддерживать схему JSON или осваивать язык шаблонов. Если вы можете написать это на Compose, вы можете захватить это с помощью RemoteCompose.
В приложении работает простой (платформенный) плеер, который управляет показом и взаимодействием с этим ByteArray. Клиентскому устройству не нужны ваши композабл функции, ваши модели представления или ваша бизнес-логика — ему нужны только байты документа и проигрыватель.
Таким образом, преобразуя макеты Compose в переносимый формат документа, RemoteCompose обеспечивает управляемый сервером пользовательский интерфейс, а значит мгновенное A/B-тестирование, обновление контента в реальном времени и кроссплатформенную согласованность, сохраняя при этом производительность нативного рендеринга. Фреймворк справляется со сложностью сериализации, передачи и рендеринга, позволяя вам сосредоточиться на проектировании превосходного пользовательского опыта.
Статья: https://apptractor.ru/info/news/remotecompose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
RemoteCompose всё ещё находится в разработке AndroidX и официально пока не опубликован, однако концепция очень многообещающая.
Сервер перехватывает (capture) любой макет Jetpack Compose и выдает его в компактном сериализованном формате. Это своего рода «скриншот» вашего пользовательского интерфейса, только вместо пикселей вы захватываете фактические инструкции отрисовки. Этот полученный документ содержит всё необходимое для воссоздания пользовательского интерфейса: фигуры, цвета, текст, изображения, анимацию и даже интерактивные области касания. На стороне сервера пишется стандартный код Compose. Не нужно изучать новый DSL (Domain-Specific Language), поддерживать схему JSON или осваивать язык шаблонов. Если вы можете написать это на Compose, вы можете захватить это с помощью RemoteCompose.
В приложении работает простой (платформенный) плеер, который управляет показом и взаимодействием с этим ByteArray. Клиентскому устройству не нужны ваши композабл функции, ваши модели представления или ваша бизнес-логика — ему нужны только байты документа и проигрыватель.
Таким образом, преобразуя макеты Compose в переносимый формат документа, RemoteCompose обеспечивает управляемый сервером пользовательский интерфейс, а значит мгновенное A/B-тестирование, обновление контента в реальном времени и кроссплатформенную согласованность, сохраняя при этом производительность нативного рендеринга. Фреймворк справляется со сложностью сериализации, передачи и рендеринга, позволяя вам сосредоточиться на проектировании превосходного пользовательского опыта.
Статья: https://apptractor.ru/info/news/remotecompose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4