This media is not supported in your browser
VIEW IN TELEGRAM
Анимация пульсирующего сердца в Jetpack Compose
Код: https://gist.github.com/prshntpnwr/8fdff811cb3c225a79dab0e140d38ed7
Код: https://gist.github.com/prshntpnwr/8fdff811cb3c225a79dab0e140d38ed7
👍1
Moneytopia - трекер финансов
Moneytopia - полнофункциональный личный трекер расходов, созданный с помощью Jetpack Compose и Material 3. Благодаря чистому и интуитивно понятному дизайну он делает управление финансами простым и легким, помогая вам с легкостью контролировать свои расходы.
Внутри: Realm, корутины, Compose Navigation, Compose Compiler Gradle Plugin, Lifecycle ViewModel Compose, AppCompatб Vico Compose Chart, Compose Material Icons Extended.
Moneytopia на GitHub: https://github.com/dimrnhhh/moneytopia
Платформа: Android
⭐️: 53
Moneytopia - полнофункциональный личный трекер расходов, созданный с помощью Jetpack Compose и Material 3. Благодаря чистому и интуитивно понятному дизайну он делает управление финансами простым и легким, помогая вам с легкостью контролировать свои расходы.
Внутри: Realm, корутины, Compose Navigation, Compose Compiler Gradle Plugin, Lifecycle ViewModel Compose, AppCompatб Vico Compose Chart, Compose Material Icons Extended.
Moneytopia на GitHub: https://github.com/dimrnhhh/moneytopia
Платформа: Android
⭐️: 53
❤1
Вайбуем в закрытом корпконтуре с Android Studio, Continue и Ollama в локальном режиме
Сегодня я расскажу вам о том, как настроить Android Studio для работы с LLM в режиме агента, получить максимум эффекта даже от небольших моделей на компьютерах, не обладающих мощной видеокартой, о тонкостях и некоторых важных настройках плагинов, особенностях запросов к нейронке. Эта статья-гайд поможет вам развеять страх того, что локальные модели для кодинга — это сложно, и позволит вам почувствовать лёгкий корпоративный вайб-кодинг даже внутри закрытого корпоративного контура.
Статья: https://habr.com/ru/companies/sportmaster_lab/articles/957260/
Платформа: Android
Сегодня я расскажу вам о том, как настроить Android Studio для работы с LLM в режиме агента, получить максимум эффекта даже от небольших моделей на компьютерах, не обладающих мощной видеокартой, о тонкостях и некоторых важных настройках плагинов, особенностях запросов к нейронке. Эта статья-гайд поможет вам развеять страх того, что локальные модели для кодинга — это сложно, и позволит вам почувствовать лёгкий корпоративный вайб-кодинг даже внутри закрытого корпоративного контура.
Статья: https://habr.com/ru/companies/sportmaster_lab/articles/957260/
Платформа: Android
1.webm
296.4 KB
Эффект глюка на Jetpack Compose
Эффекты глитча (глюка, сбоя) — неотъемлемая часть научно-фантастических фильмов и киберпанк-игр. В этой статье мы увидим, как легко реализовать этот эффект в Jetpack Compose.
Статья: https://apptractor.ru/info/articles/effekt-glyuka-na-jetpack-compose.html
Платформа: Android
Эффекты глитча (глюка, сбоя) — неотъемлемая часть научно-фантастических фильмов и киберпанк-игр. В этой статье мы увидим, как легко реализовать этот эффект в Jetpack Compose.
Статья: https://apptractor.ru/info/articles/effekt-glyuka-na-jetpack-compose.html
Платформа: Android
MarkdownView - отображение markdown контента в SwiftUI
MarkdownView предлагает невероятно простой и гибко настраиваемый способ отображения markdown разметки в вашем приложении. Он использует Swift-Markdown для анализа разметки, полностью совместим со спецификацией CommonMark.
Фичи:
• Полностью совместима с CommonMark
• Поддерживает рендеринг SVG
• Поддерживает LaTeX
• Настраиваемые шрифты, подсветка кода, цветов
• Нативная реализация для SwiftUI
MarkdownView на GitHub: https://github.com/LiYanan2004/MarkdownView
Платформа: iOS
⭐️: 440
MarkdownView предлагает невероятно простой и гибко настраиваемый способ отображения markdown разметки в вашем приложении. Он использует Swift-Markdown для анализа разметки, полностью совместим со спецификацией CommonMark.
Фичи:
• Полностью совместима с CommonMark
• Поддерживает рендеринг SVG
• Поддерживает LaTeX
• Настраиваемые шрифты, подсветка кода, цветов
• Нативная реализация для SwiftUI
MarkdownView на GitHub: https://github.com/LiYanan2004/MarkdownView
Платформа: iOS
⭐️: 440
Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS
Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране? Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства.
Статья: https://habr.com/ru/articles/958142/
Платформа: iOS
Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране? Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства.
Статья: https://habr.com/ru/articles/958142/
Платформа: iOS
Хабр
Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS
Привет, Хабр! Меня зовут Максим, и я тестирую мобильные приложения. Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок...
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое ANR и как с ним работать правильно
Когда пользователь открывает приложение, нажимает на кнопку — и ничего не происходит несколько секунд, Android начинает считать, что “приложение не отвечает”. Через 5 секунд на главном потоке система показывает диалог:
“Приложение не отвечает. Закрыть?”
Это и есть ANR (Application Not Responding).
Статья: https://habr.com/ru/articles/958278/
Платформа: Android
Когда пользователь открывает приложение, нажимает на кнопку — и ничего не происходит несколько секунд, Android начинает считать, что “приложение не отвечает”. Через 5 секунд на главном потоке система показывает диалог:
“Приложение не отвечает. Закрыть?”
Это и есть ANR (Application Not Responding).
Статья: https://habr.com/ru/articles/958278/
Платформа: Android
👍1
Продвинутые Codable
В статье автор показывает, как выйти за рамки стандартного Codable в Swift, когда JSON-структура не совпадает с моделью данных. Вместо громоздких
Статья: https://nothingtocommitworkingtreeclean.com/advanced_codable.html
Платформа: iOS
В статье автор показывает, как выйти за рамки стандартного Codable в Swift, когда JSON-структура не совпадает с моделью данных. Вместо громоздких
init(from:) предлагается разделять DTO (структуру, соответствующую JSON) и модель, используя протоколы AdvancedDecodable и AdvancedEncodable. Они позволяют автоматически кодировать и декодировать данные через промежуточный слой, где можно добавлять валидацию и преобразования, не теряя простоту Codable. Помимо этого, автор предлагает обёртки Maybe, Either и Both — универсальные решения для обработки некорректных или неоднородных данных. Такой подход сохраняет читаемость и устойчивость к изменениям API, делая код надёжнее и понятнее.Статья: https://nothingtocommitworkingtreeclean.com/advanced_codable.html
Платформа: iOS
👍1
Уменьшающиеся слоны
В статье команда инженеров Block рассказывает о проблеме масштабных монорепозиториев — когда проект разбит на тысячи подпроектов и IDE синхронизирует десятки миллионов строк кода, разработка становится неэффективной. В примере приводят ситуацию, когда «холодная» (cold) синхронизация в IntelliJ с Gradle занимает около 24 минут, и при этом используется порядка 36 ГБ оперативной памяти — очевидно, что для разработчика такое ожидание неприемлемо.
Чтобы решить эту проблему, авторы вводят ряд «интервенций» — изменений поверх обычного Gradle-процесса, направленных на уменьшение объёма работы IDE при синхронизации. Среди них — параллельная загрузка моделей, ограничение числа проектов, которые синхронизируются (Spotlight), отключение транзитивной синхронизации зависимостей (intransitive sync), замена подпроектов на заранее собранные артефакты (artifact swap), предпроскачивание зависимостей (pre-fetch). В совокупности эти меры позволили снизить время синхронизации с нескольких минут до ~15 секунд — улучшение порядка 97% — и значительно снизить нагрузку на ресурсы.
Статья: https://engineering.block.xyz/blog/shrinking-elephants
Платформа: Android
В статье команда инженеров Block рассказывает о проблеме масштабных монорепозиториев — когда проект разбит на тысячи подпроектов и IDE синхронизирует десятки миллионов строк кода, разработка становится неэффективной. В примере приводят ситуацию, когда «холодная» (cold) синхронизация в IntelliJ с Gradle занимает около 24 минут, и при этом используется порядка 36 ГБ оперативной памяти — очевидно, что для разработчика такое ожидание неприемлемо.
Чтобы решить эту проблему, авторы вводят ряд «интервенций» — изменений поверх обычного Gradle-процесса, направленных на уменьшение объёма работы IDE при синхронизации. Среди них — параллельная загрузка моделей, ограничение числа проектов, которые синхронизируются (Spotlight), отключение транзитивной синхронизации зависимостей (intransitive sync), замена подпроектов на заранее собранные артефакты (artifact swap), предпроскачивание зависимостей (pre-fetch). В совокупности эти меры позволили снизить время синхронизации с нескольких минут до ~15 секунд — улучшение порядка 97% — и значительно снизить нагрузку на ресурсы.
Статья: https://engineering.block.xyz/blog/shrinking-elephants
Платформа: Android
👍1
Material Pickers - Material 3 пикеры для Compose
Material Pickers - компоненты выбора для Jetpack Compose, соответствующие материальному дизайну. Выразительные, настраиваемые и идеально вписывающиеся в систему дизайна Material 3. Библиотека предоставляет готовые к использованию вертикальные, горизонтальные и двойные (парные) пикеры, а также низкоуровневые примитивы для создания полностью настраиваемых макетов.
Material Pickers на GitHub: https://github.com/eidam-slices/material-pickers
Платформа: Android
⭐️: 7
Material Pickers - компоненты выбора для Jetpack Compose, соответствующие материальному дизайну. Выразительные, настраиваемые и идеально вписывающиеся в систему дизайна Material 3. Библиотека предоставляет готовые к использованию вертикальные, горизонтальные и двойные (парные) пикеры, а также низкоуровневые примитивы для создания полностью настраиваемых макетов.
Material Pickers на GitHub: https://github.com/eidam-slices/material-pickers
Платформа: Android
⭐️: 7
❤1
Как создать собственную библиотеку на Kotlin Multiplatform
Создадим библиотеку Krashlytics на Kotlin Multiplatform для обработки отчетов о сбоях и отслеживания навигационных цепочек. Такие цепочки — это логи пользовательских действий, по которым выявляются последовательности событий, приведших к сбою.
Статья: https://nuancesprog.ru/p/30352/
Платформа: Android/кроссплатформа
Создадим библиотеку Krashlytics на Kotlin Multiplatform для обработки отчетов о сбоях и отслеживания навигационных цепочек. Такие цепочки — это логи пользовательских действий, по которым выявляются последовательности событий, приведших к сбою.
Статья: https://nuancesprog.ru/p/30352/
Платформа: Android/кроссплатформа
NOP::Nuances of programming
Как создать собственную библиотеку на Kotlin Multiplatform
Сделаем простой, но эффективный Crashlytics для обработки навигационных цепочек и логов сбоев приложений. Смоделируем условия реального сценария с длительным сохранением логов.
❤1
Архитектура SwiftUI: структурируем представления для повторного использования и ясности
Новая статья от Антуана ван дер Ли предлагает практический подход к организации архитектуры SwiftUI-приложений с акцентом на читаемость, повторное использование и поддержку кода. Автор начинает с примера простого списка статей, который со временем может стать перегруженным из-за добавления новых функциональностей, таких как индикаторы загрузки, обработка пустых состояний и действия с ячейками. Чтобы избежать этого, он рекомендует разделять представления на более мелкие компоненты, используя такие техники, как выделение отдельных представлений, создание расширений и вычисляемых свойств. Однако он предостерегает от чрезмерного использования этих методов, чтобы не усложнить структуру кода. В статье подчеркивается важность соблюдения принципов читаемости и повторного использования кода, что способствует более легкому тестированию и поддержке приложения в будущем. Автор также делится практическими рекомендациями по организации представлений и структуры проекта, что делает материал полезным для разработчиков, стремящихся улучшить архитектуру своих SwiftUI-приложений.
Статья: https://www.avanderlee.com/swiftui/swiftui-architecture-structure-views-for-reusability-and-clarity/
Платформа: iOS
Новая статья от Антуана ван дер Ли предлагает практический подход к организации архитектуры SwiftUI-приложений с акцентом на читаемость, повторное использование и поддержку кода. Автор начинает с примера простого списка статей, который со временем может стать перегруженным из-за добавления новых функциональностей, таких как индикаторы загрузки, обработка пустых состояний и действия с ячейками. Чтобы избежать этого, он рекомендует разделять представления на более мелкие компоненты, используя такие техники, как выделение отдельных представлений, создание расширений и вычисляемых свойств. Однако он предостерегает от чрезмерного использования этих методов, чтобы не усложнить структуру кода. В статье подчеркивается важность соблюдения принципов читаемости и повторного использования кода, что способствует более легкому тестированию и поддержке приложения в будущем. Автор также делится практическими рекомендациями по организации представлений и структуры проекта, что делает материал полезным для разработчиков, стремящихся улучшить архитектуру своих SwiftUI-приложений.
Статья: https://www.avanderlee.com/swiftui/swiftui-architecture-structure-views-for-reusability-and-clarity/
Платформа: iOS
SwiftLee
SwiftUI Architecture: Structure Views for Reusability and Clarity
Learn how SwiftUI architecture can simplify your long view bodies with techniques for clearer, more reusable designs.
👍1
Kinetics - настраиваемые примитивы физического движения для SwiftUI
Kinetics привносит естественное ощущение реальной физики в ваши анимации SwiftUI. Разработанный на основе Swift 6 с строгим соблюдением принципов многопоточности, он предоставляет современную и безопасную основу для создания анимаций, которая реагируют на действия пользователя, учитывают границы и выглядят реалистично.
Kinetics на GitHub: https://github.com/roberthein/kinetics
Платформа: iOS
⭐️: 156
Kinetics привносит естественное ощущение реальной физики в ваши анимации SwiftUI. Разработанный на основе Swift 6 с строгим соблюдением принципов многопоточности, он предоставляет современную и безопасную основу для создания анимаций, которая реагируют на действия пользователя, учитывают границы и выглядят реалистично.
Kinetics на GitHub: https://github.com/roberthein/kinetics
Платформа: iOS
⭐️: 156
Combine – швейцарский нож iOS-разработчика. Или нет
Combine – фреймворк для работы с асинхронными событиями в декларативном стиле. Он помогает разработчикам управлять потоками данных, избавляя от множества колбэков, ручного управления очередями и других сложностей, связанных с асинхронностью.
Большинство статей описывают 3 сущности: Publisher (издатель), Subscriber (подписчик) и Operator'ы. Но они умалчивают еще об одном игроке – Subnoscription. Именно подписка управляет всей "жизнью" цепочки: кто кому и когда передаёт данные, и когда всё заканчивается.
Статья: https://habr.com/ru/companies/banki/articles/958650/
Платформа: iOS
Combine – фреймворк для работы с асинхронными событиями в декларативном стиле. Он помогает разработчикам управлять потоками данных, избавляя от множества колбэков, ручного управления очередями и других сложностей, связанных с асинхронностью.
Большинство статей описывают 3 сущности: Publisher (издатель), Subscriber (подписчик) и Operator'ы. Но они умалчивают еще об одном игроке – Subnoscription. Именно подписка управляет всей "жизнью" цепочки: кто кому и когда передаёт данные, и когда всё заканчивается.
Статья: https://habr.com/ru/companies/banki/articles/958650/
Платформа: iOS
Хабр
Combine – швейцарский нож iOS-разработчика. Или нет?
Привет! Меня зовут Антон, я iOS-разработчик в Банки.ру. Когда я только начинал изучать Combine, он казался для меня магией. Пара команд и вот у тебя уже есть какие-то данные. Чтобы Combine перестал...
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Globe - вращающийся "глобус" из изображений
Globe - вращающийся "глобус" из изображений (они тоже являются composable) на Compose Multiplatform. Поддерживает Android, iOS, Desktop (JVM).
Globe на GitHub: https://github.com/pedromassango/compose_concepts
Платформа: Android/кроссплатформа
⭐️: 29
Globe - вращающийся "глобус" из изображений (они тоже являются composable) на Compose Multiplatform. Поддерживает Android, iOS, Desktop (JVM).
Globe на GitHub: https://github.com/pedromassango/compose_concepts
Платформа: Android/кроссплатформа
⭐️: 29
🔥4
•
(iOS En) Building an iOS Ghibli App with SwiftUI, MVVM, and Swift Concurrency•
(iOS En) Create immersive media experiences for visionOS•
(iOS En) SwiftUI Course for Beginners – Create an iOS App from Scratch•
(iOS En) 5 Useful SwiftUI Modifiers•
(iOS En) Foundation Models Framework in Swift•
(iOS En) iOS 26 Style Floating Sheets Using SwiftUI•
(And Ru) Как обеспечить стабильную работу SDK для миллионов устройств•
(And En) Bringing Androidify to XR•
(And En) State vs. Actions vs. Events On Android & KMP•
(And En) Single & Multi-Choice Button Groups In Material3 Expressive•
(And En) What's new in Kotlin 2.2.21 (and 2.2.20!)•
(And En) Discussing Kotlin Coroutines with Marcin Moskała•
(And En) A Common Mistake when working with Kotlin Flows•
(And En) Your Toolchain is Production: The Case for Observability•
(And En) From Lag to Lightning: Transforming Dependency Update Timelines•
(And En) Universal Cache: It’s time for fast, reliable, and cheap CI pipelines•
(And En) Gradle: Your Build, Your Rules•
(Crs Ru) Что ждёт Kotlin Multiplatform разработчика на собесе? (все собеседования)•
(Dev Ru) Как сделать Offline Mode. Секреты от Avito.Tech•
(Dev Ru) Бережливое управление людьми — менеджмент без переработок и выгорания•
(Dev En) Data Structures and Algorithms Mega Course – Master Technical Interviews in 49 HoursПрошлогодние видео:
•
(And Ru) Избавляемся от Context в бизнес логике — как ответить на собеседовании•
(Dev Ru) Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят•
(Dev Ru) Grafana: инструкция по применению•
(Dev Ru) Тесты с душком•
(Dev Ru) Как писать библиотеки: проектирование API, обратная совместимостьPlease open Telegram to view this post
VIEW IN TELEGRAM
👍1
Space! - виджет с фотографиями NASA
Астрономическая фотография дня от NASA — теперь на вашем главном экране с виджетами!
Space! отображает последние фотографии Astronomy Picture of the Day, публикуемые NASA каждый день. Чтобы увидеть последние фотографии, добавьте виджет на главный экран или в окно «Сегодня», или просто откройте приложение для просмотра на весь экран и ознакомления с познавательным описанием.
Space! — это приложение с полностью открытым исходным кодом, разработанное на Swift и SwiftUI.
Space! на GitHub: https://github.com/jtbandes/SpacePOD
Платформа: iOS
⭐️: 112
Астрономическая фотография дня от NASA — теперь на вашем главном экране с виджетами!
Space! отображает последние фотографии Astronomy Picture of the Day, публикуемые NASA каждый день. Чтобы увидеть последние фотографии, добавьте виджет на главный экран или в окно «Сегодня», или просто откройте приложение для просмотра на весь экран и ознакомления с познавательным описанием.
Space! — это приложение с полностью открытым исходным кодом, разработанное на Swift и SwiftUI.
Space! на GitHub: https://github.com/jtbandes/SpacePOD
Платформа: iOS
⭐️: 112
👍1
Разница между @MainActor и DispatchQueue.main.async — вопросы с собеседования
Основное различие заключается в том, что
Статья: https://apptractor.ru/info/articles/raznitsa-mezhdu-mainactor-i-dispatchqueue-main-async-voprosy-s-sobesedovaniya.html
Платформа: iOS
Основное различие заключается в том, что
@MainActor — это современный атрибут из фреймворка Swift Concurrency, который гарантирует выполнение кода в главном потоке на этапе компиляции, а DispatchQueue.main.async — это более старая команда из Grand Central Dispatch (GCD), которая асинхронно отправляет блок кода на выполнение в главную очередь в рантайме.Статья: https://apptractor.ru/info/articles/raznitsa-mezhdu-mainactor-i-dispatchqueue-main-async-voprosy-s-sobesedovaniya.html
Платформа: iOS
👍2
За 3 дня запустить Android приложение на iOS: опыт адаптации приложения под CMP
В прошлом году мы решали любопытную задачу. Нам нужно было вдвоем за одну рабочую неделю собрать прототип мобильного приложения для сервиса бронирования отелей.
Задача осложнялась тем, что заказчик рассматривал не только нашу команду на роль подрядчика. Мы не могли отдать сырой черновик, в котором просто нажимаются нужные кнопки и работают ключевые сценарии — мы должны были превзойти конкурентов-флаттеристов. И нам удалось это сделать с помощью KMP.
Да, тема довольно холиварная, и в статье я не заявляю, что KMP лучше Flutter’а во всем. Каждая технология хороша под свои задачи. Вместо этого я расскажу о конкретном проекте, на котором KMP оказался более удачным выбором. Также коснусь вопросов архитектуры и миграции Android-приложения на iOS с помощью CMP, а заодно подсвечу подводные камни, с которыми пришлось разбираться в процессе.
Статья: https://habr.com/ru/companies/kts/articles/959950/
Платформа: кроссплатформа
В прошлом году мы решали любопытную задачу. Нам нужно было вдвоем за одну рабочую неделю собрать прототип мобильного приложения для сервиса бронирования отелей.
Задача осложнялась тем, что заказчик рассматривал не только нашу команду на роль подрядчика. Мы не могли отдать сырой черновик, в котором просто нажимаются нужные кнопки и работают ключевые сценарии — мы должны были превзойти конкурентов-флаттеристов. И нам удалось это сделать с помощью KMP.
Да, тема довольно холиварная, и в статье я не заявляю, что KMP лучше Flutter’а во всем. Каждая технология хороша под свои задачи. Вместо этого я расскажу о конкретном проекте, на котором KMP оказался более удачным выбором. Также коснусь вопросов архитектуры и миграции Android-приложения на iOS с помощью CMP, а заодно подсвечу подводные камни, с которыми пришлось разбираться в процессе.
Статья: https://habr.com/ru/companies/kts/articles/959950/
Платформа: кроссплатформа
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Сравниваем два View с помощью слайдера в SwiftUI
Когда вам нужно визуально сравнить два изображения, экрана или состояния, слайдер «до и после» часто оказывается наиболее интуитивно понятным решением. В этой статье мы рассмотрим, как создать многоразовое представление сравнения со слайдером полностью на SwiftUI — без использования UIKit или внешних библиотек.
Статья: https://apptractor.ru/info/articles/sravnivaem-dva-view-s-pomoschyu-slaydera-v-swiftui.html
Платформа: iOS
Когда вам нужно визуально сравнить два изображения, экрана или состояния, слайдер «до и после» часто оказывается наиболее интуитивно понятным решением. В этой статье мы рассмотрим, как создать многоразовое представление сравнения со слайдером полностью на SwiftUI — без использования UIKit или внешних библиотек.
Статья: https://apptractor.ru/info/articles/sravnivaem-dva-view-s-pomoschyu-slaydera-v-swiftui.html
Платформа: iOS
👍3
Мы перенесли 40,000 строк Objective-C на Swift - вот что нас чуть не убило
Когда мы начинали, мы думали, что модернизируемся. На самом деле мы просто исправляли свои прошлые ошибки.
Сделали бы мы это снова? Вероятно, но медленнее и умнее.
Swift дал нам безопасность, ясность и производительность. Но он также научил нас смирению. Никакой инструмент или язык не спасёт от плохого планирования, срезок или излишней самоуверенности.
Переписывание кода романтично, пока вы сами не столкнётесь с ним.
И если вы когда-нибудь поймаете себя на мысли «Давайте просто всё перепишем на Swift» - сделайте глубокий вдох. Распланируйте лучше. И всё равно действуйте.
Потому что, хотя это чуть не убило нас, в итоге оно сделало нас лучшими разработчиками.
Статья: https://apptractor.ru/info/articles/40-000-objective-c.html
Платформа: iOS
Когда мы начинали, мы думали, что модернизируемся. На самом деле мы просто исправляли свои прошлые ошибки.
Сделали бы мы это снова? Вероятно, но медленнее и умнее.
Swift дал нам безопасность, ясность и производительность. Но он также научил нас смирению. Никакой инструмент или язык не спасёт от плохого планирования, срезок или излишней самоуверенности.
Переписывание кода романтично, пока вы сами не столкнётесь с ним.
И если вы когда-нибудь поймаете себя на мысли «Давайте просто всё перепишем на Swift» - сделайте глубокий вдох. Распланируйте лучше. И всё равно действуйте.
Потому что, хотя это чуть не убило нас, в итоге оно сделало нас лучшими разработчиками.
Статья: https://apptractor.ru/info/articles/40-000-objective-c.html
Платформа: iOS
👍2