Что происходит, когда вы перемещаете файл в git?
Это интересный вопрос, поскольку каждый из нас работает с гитом постоянно. Кто-то предпочитает Xcode или Tower, кто-то юзает консоль, но так или иначе понимание принципов важно.
Многие считают, что коммиты в git - это диффы изменений, но Бруно Роша в своей статье опровергает этот тезис. Коммиты это снэпшоты (кроме исключения): то есть при любом изменении в файле, git будет хранить полную копию этого файла в репозитории.
Советую посмотреть в частности на то, как именно гит понимает, когда у нас два одинаковых файла (хоть и с разными именами).
📖 Про ряд других любопытных кейсов также можно почитать в оригинальной статье.
Не забудьте и про этот пост, где понятно рассказано об основах работы с гитом для iOS-разработчиков.
😃 iOS Dev
Это интересный вопрос, поскольку каждый из нас работает с гитом постоянно. Кто-то предпочитает Xcode или Tower, кто-то юзает консоль, но так или иначе понимание принципов важно.
Многие считают, что коммиты в git - это диффы изменений, но Бруно Роша в своей статье опровергает этот тезис. Коммиты это снэпшоты (кроме исключения): то есть при любом изменении в файле, git будет хранить полную копию этого файла в репозитории.
Советую посмотреть в частности на то, как именно гит понимает, когда у нас два одинаковых файла (хоть и с разными именами).
📖 Про ряд других любопытных кейсов также можно почитать в оригинальной статье.
Не забудьте и про этот пост, где понятно рассказано об основах работы с гитом для iOS-разработчиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Рисование карт с помощью Swift Charts
Стандартный фреймворк Swift Charts это мощный инструмент для отображения данных с помощью самых разных способов.
В своей статье Артём Новичков вдохновился крутой сессией с WWDC и придумал необычное решение с комбинацией GeoJSON и MapKit.
📖 А что из этого вышло можно увидеть здесь.
🛠 Код проекта на GitHub.
😃 iOS Dev
Стандартный фреймворк Swift Charts это мощный инструмент для отображения данных с помощью самых разных способов.
В своей статье Артём Новичков вдохновился крутой сессией с WWDC и придумал необычное решение с комбинацией GeoJSON и MapKit.
📖 А что из этого вышло можно увидеть здесь.
🛠 Код проекта на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Task.sleep() vs Task.yield(): Объяснение различий
В Swift Concurrency можно использовать
И хотя оба варианта выглядят и ведут себя похоже, есть несколько различий, о которых полезно знать.
📖 В этой статье Антуан рассказывает про оба способа и объясняет, какие есть области применения в приложениях.
😃 iOS Dev
В Swift Concurrency можно использовать
Task.sleep()
и Task.yield()
, чтобы позволить определенной задаче «заснуть» или «выйти» на определенный период времени. И хотя оба варианта выглядят и ведут себя похоже, есть несколько различий, о которых полезно знать.
📖 В этой статье Антуан рассказывает про оба способа и объясняет, какие есть области применения в приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Простая настройка модуляризации для iOS-приложения
При этом подходе можно добиться целого ряда важных преимуществ.
Например, разбиение приложения на модули поможет не только облегчить совместную работу над проектом и повысить тестируемость, но и при правильных настройках улучшит скорость сборки.
📖 В этой статье показано, как можно структурировать такой проект (с использованием Core/Domain/Presentation слоёв), и, что немаловажно, как масштабировать этот подход для реализации более сложных и объёмных приложений.
🛠 Код доступен на GitHub.
🔗 В канале можно и посмотреть на подход Spotify к реализации модульной архитектуры.
А познакомиться с разными подходами для выбора нужной архитектуры проекта (и посмотреть на то, какие могут быть подводные камни) можно как всегда вот здесь (или же⭐️ прямо тут).
😃 iOS Dev
При этом подходе можно добиться целого ряда важных преимуществ.
Например, разбиение приложения на модули поможет не только облегчить совместную работу над проектом и повысить тестируемость, но и при правильных настройках улучшит скорость сборки.
📖 В этой статье показано, как можно структурировать такой проект (с использованием Core/Domain/Presentation слоёв), и, что немаловажно, как масштабировать этот подход для реализации более сложных и объёмных приложений.
🛠 Код доступен на GitHub.
🔗 В канале можно и посмотреть на подход Spotify к реализации модульной архитектуры.
А познакомиться с разными подходами для выбора нужной архитектуры проекта (и посмотреть на то, какие могут быть подводные камни) можно как всегда вот здесь (или же
Please open Telegram to view this post
VIEW IN TELEGRAM
Промпт-инженеры и их зарплаты
В канале я регулярно поднимаю вопросы, связанные с AI (от проблем у Stackoverflow, запрета использования в Apple до опросов).
И хотя польза от них есть, ведь эти инструменты можно использовать для решения вещей вроде базовых штук, связанными с анимациями или поиском каких-то свойств (буквально вместо поисковика), но есть то, чего стоит опасаться.
Во-первых, запросы на основе реального корпоративного кода часто запрещены (и я поддерживаю этот запрет, если только это не вами созданная и обученная сетка в локальном окружении).
Во-вторых, знаю ребят, которые пытались юзать ChatGPT (и аналоги) для решения алгоритмов и ломались уже на вещах уровня medium в литкоде. Особенно когда речь идёт о корнер-кейсах или нетривиальных условиях.
Будет неловко, если этот код попадёт в продакшен, как считаете?
В-третьих, и об этом ниже, на мой взгляд развитие ИИ должно было привести к решению базовых, даже бытовых вещей и оставить человеку возможность создавать что-то новое.
Но вот в чём парадокс, происходит ровно наоборот, хотя пару десятков лет назад казалось разве робот может написать симфонию.
Люди создают музыку с использованием нейросетей, рисуют картины, программируют и даже пишут книги.
Достаточно почитать про бум книг на амазоне, целиком придуманных нейросетями. Или про то, что произошло с медиумом, на котором ребята с чашкой чая пилят десятки пустых, наполненных водой, статей.
На счёт зарплат таких специалистов - отдельный разговор. Допустим, подписка на ChatGPT стоит от 20 до 200 долларов. Какое образование необходимо, чтобы пользоваться этим инструментом в IT-сфере?
Как думаете, должна ли быть отдельная должность с ограниченным пулом задач для промпт-инженеров в iOS, возможно ли это в целом? Могут ли у них быть собственные грейды?
😃 iOS Dev
В канале я регулярно поднимаю вопросы, связанные с AI (от проблем у Stackoverflow, запрета использования в Apple до опросов).
И хотя польза от них есть, ведь эти инструменты можно использовать для решения вещей вроде базовых штук, связанными с анимациями или поиском каких-то свойств (буквально вместо поисковика), но есть то, чего стоит опасаться.
Во-первых, запросы на основе реального корпоративного кода часто запрещены (и я поддерживаю этот запрет, если только это не вами созданная и обученная сетка в локальном окружении).
Во-вторых, знаю ребят, которые пытались юзать ChatGPT (и аналоги) для решения алгоритмов и ломались уже на вещах уровня medium в литкоде. Особенно когда речь идёт о корнер-кейсах или нетривиальных условиях.
Будет неловко, если этот код попадёт в продакшен, как считаете?
В-третьих, и об этом ниже, на мой взгляд развитие ИИ должно было привести к решению базовых, даже бытовых вещей и оставить человеку возможность создавать что-то новое.
Но вот в чём парадокс, происходит ровно наоборот, хотя пару десятков лет назад казалось разве робот может написать симфонию.
Люди создают музыку с использованием нейросетей, рисуют картины, программируют и даже пишут книги.
Достаточно почитать про бум книг на амазоне, целиком придуманных нейросетями. Или про то, что произошло с медиумом, на котором ребята с чашкой чая пилят десятки пустых, наполненных водой, статей.
На счёт зарплат таких специалистов - отдельный разговор. Допустим, подписка на ChatGPT стоит от 20 до 200 долларов. Какое образование необходимо, чтобы пользоваться этим инструментом в IT-сфере?
Как думаете, должна ли быть отдельная должность с ограниченным пулом задач для промпт-инженеров в iOS, возможно ли это в целом? Могут ли у них быть собственные грейды?
Please open Telegram to view this post
VIEW IN TELEGRAM
Синхронное выполнение задач в iOS-приложениях
Все iOS-разработчики справедливо беспокоятся о потенциальной блокировке основного потока. Поэтому практически всегда длительные задачи переносятся с него, чтобы сохранить отзывчивость приложения..
Но на самом деле, если процесс короткий, как справедливо подмечает Мэтт в своей статье, такое смещение может плохо сказаться на производительности. Так как хотя затраты на переключение минимальны, такая операция на/из потока не является бесплатной.
Добавление в код параллелизма сопровождается увеличением сложности сразу по нескольким направлениям (и оно может быть существенным).
📖 Больше примеров и полезных размышлений можно прочитать в оригинальном материале.
А разбор других (не менее важных) вопросов в разработке, подборку вопросов по многопоточности и многое другое можно найти💰 в закрытой базе и ⭐️ прямо здесь.
😃 iOS Dev
Все iOS-разработчики справедливо беспокоятся о потенциальной блокировке основного потока. Поэтому практически всегда длительные задачи переносятся с него, чтобы сохранить отзывчивость приложения..
Но на самом деле, если процесс короткий, как справедливо подмечает Мэтт в своей статье, такое смещение может плохо сказаться на производительности. Так как хотя затраты на переключение минимальны, такая операция на/из потока не является бесплатной.
Добавление в код параллелизма сопровождается увеличением сложности сразу по нескольким направлениям (и оно может быть существенным).
📖 Больше примеров и полезных размышлений можно прочитать в оригинальном материале.
А разбор других (не менее важных) вопросов в разработке, подборку вопросов по многопоточности и многое другое можно найти
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Grand Central Dispatch: большой разбор
Наш подписчик подготовил фундаментальный разбор GCD, и в отличие от многих аналогичных статей, наполнил его примерами, над которыми можно (и нужно) подумать.
Среди основных тем:
🔘 Основные концепты: thread, multithreading, GCD, task, queue
🔘 Типы очередей: main, global, custom
🔘 Quality of Service (QoS) и разбор приоритетов
🔘 Последовательная и параллельная очереди
🔘 Способы выполнения задач: async, sync
🔘 Deadlock
🔘 Упражнения для проверки знаний по GCD - весь код доступен на GitHub
Пообщавшись с Кириллом, было принято решение вынести некоторые задачи и в большую подборку.
📖 Оригинальную статью можно прочесть здесь.
Напомню, что доступ к этой и другим практическим темам можно получить💰 тут и ⭐️ прямо здесь.
😃 iOS Dev
Наш подписчик подготовил фундаментальный разбор GCD, и в отличие от многих аналогичных статей, наполнил его примерами, над которыми можно (и нужно) подумать.
Среди основных тем:
Пообщавшись с Кириллом, было принято решение вынести некоторые задачи и в большую подборку.
📖 Оригинальную статью можно прочесть здесь.
Напомню, что доступ к этой и другим практическим темам можно получить
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Симметричные и асимметричные эффекты в SwiftUI c добавлением модификатора Scroll Transition
📖 Делюсь неплохим гайдом с примерами кода по добавлению эффектов при скролле, важно помнить, что это доступно только с iOS 17.
А ещё напомню, что в канале есть несколько полезных постов:
🔗 Добавление растягиваемого заголовка в ScrollView с параллакс-эффектом для SwiftUI
🔗 Реализация эффектов ScrollView
🔗 Ещё один разбор ScrollTransitionConfiguration
А для UIKit можно чекнуть, как реализовать бесконечный скролл на базе UITableView + API HackerNews.
😃 iOS Dev
📖 Делюсь неплохим гайдом с примерами кода по добавлению эффектов при скролле, важно помнить, что это доступно только с iOS 17.
А ещё напомню, что в канале есть несколько полезных постов:
А для UIKit можно чекнуть, как реализовать бесконечный скролл на базе UITableView + API HackerNews.
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый инструмент анализа производительности: Processor Trace
Длительное выполнение операций в главном потоке может привести к самым различным проблемам: от подвисаний и проблем отображения вплоть до того, что приложение перестанет отзываться в целом.
🛠 В Xcode 16.3 Beta 2 появился новый инструмент для проверки нагрузки: Processor Trace.
С его помощью можно получить информацию о выполняемом коде, включая ветвления и инструкции.
Но, как обычно, есть и большое но: мы можем использовать его только на M4 и на устройствах iPhone 16 и выше.
И недостаток поменьше: при использовании трассировки девайс будет работать приблизительно на 1 % медленнее.
Благодаря новому инструменту можно проверять активность процессора (и уже затем мы можем решать, что реально вынести в фон с помощью Swift Concurrency или dispatch queue).
📖 Обратите внимание и на этот пост с советами по повышению производительности.
😃 iOS Dev
Длительное выполнение операций в главном потоке может привести к самым различным проблемам: от подвисаний и проблем отображения вплоть до того, что приложение перестанет отзываться в целом.
🛠 В Xcode 16.3 Beta 2 появился новый инструмент для проверки нагрузки: Processor Trace.
С его помощью можно получить информацию о выполняемом коде, включая ветвления и инструкции.
Но, как обычно, есть и большое но: мы можем использовать его только на M4 и на устройствах iPhone 16 и выше.
И недостаток поменьше: при использовании трассировки девайс будет работать приблизительно на 1 % медленнее.
Благодаря новому инструменту можно проверять активность процессора (и уже затем мы можем решать, что реально вынести в фон с помощью Swift Concurrency или dispatch queue).
📖 Обратите внимание и на этот пост с советами по повышению производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Музей науки Манчестера
В эти выходные нахожусь в Манчестере, и хотя красивых эпл сторов тут нет (кто давно читает канал, знает, что тут можно увидеть необычные магазины изнутри), я просто не мог не заглянуть в музей, посвященный знаковым изобретениям.
Вообще, локация этого музея сама по себе необычная, для этого выбрана территория бывшего первого в мире пассажирского вокзала (Манчестер—Ливерпуль-Роуд).
Понятен и акцент на исторические достижения в области промышленности. Но лично для меня было интересно посмотреть на реплику первого в истории компьютера, в котором можно было хранить инструкции выполнения программ в памяти.
И хотя он описан как маленький и примитивный (для своего времени), да и название у него символичное Малыш (или baby) сейчас эта махина выглядит просто огромной.
27 тонн, 15 на 7 метров с потребляемой мощностью в 150+ кВт. Вычислительная мощность — 357 операций умножения в секунду. При этом само умножение было реализовано очень любопытно и по факту 1 умножение равнялось 14 операциям сложения.
После такого задача писать мобильные приложения кажется немного проще 😌
😃 iOS Dev
В эти выходные нахожусь в Манчестере, и хотя красивых эпл сторов тут нет (кто давно читает канал, знает, что тут можно увидеть необычные магазины изнутри), я просто не мог не заглянуть в музей, посвященный знаковым изобретениям.
Вообще, локация этого музея сама по себе необычная, для этого выбрана территория бывшего первого в мире пассажирского вокзала (Манчестер—Ливерпуль-Роуд).
Понятен и акцент на исторические достижения в области промышленности. Но лично для меня было интересно посмотреть на реплику первого в истории компьютера, в котором можно было хранить инструкции выполнения программ в памяти.
И хотя он описан как маленький и примитивный (для своего времени), да и название у него символичное Малыш (или baby) сейчас эта махина выглядит просто огромной.
27 тонн, 15 на 7 метров с потребляемой мощностью в 150+ кВт. Вычислительная мощность — 357 операций умножения в секунду. При этом само умножение было реализовано очень любопытно и по факту 1 умножение равнялось 14 операциям сложения.
После такого задача писать мобильные приложения кажется немного проще 😌
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание UDP-сервера и клиента в Swift на базе фрейморка Network
Сетевая модель OSI описывает, каким образом устройства в локальных (и глобальных сетях) обмениваются данными.
Всего у неё 7 уровней и каждый из них выполняет определённую задачу (скорее всего вы и так это знаете, обычно это проходят на 2-3 курсе универа).
Так вот, на прикладном уровне чаще всего нам достаточно URLSession.
Но вот для сетевых задач более низкого уровня (работа с TCP и UDP), фреймворк Network предоставляет более полный контроль на транспортном уровне. Это обеспечивает большую гибкость и эффективность по сравнению с URLSession.
📖 В этом материале от нашего читателя Максима Егорова вы можете познакомиться с тем, как написать свой UDP-сервер и клиент на несложном, но любопытном примере.
🛠 Полный код проекта доступен здесь.
😃 iOS Dev
Сетевая модель OSI описывает, каким образом устройства в локальных (и глобальных сетях) обмениваются данными.
Всего у неё 7 уровней и каждый из них выполняет определённую задачу (скорее всего вы и так это знаете, обычно это проходят на 2-3 курсе универа).
Так вот, на прикладном уровне чаще всего нам достаточно URLSession.
Но вот для сетевых задач более низкого уровня (работа с TCP и UDP), фреймворк Network предоставляет более полный контроль на транспортном уровне. Это обеспечивает большую гибкость и эффективность по сравнению с URLSession.
📖 В этом материале от нашего читателя Максима Егорова вы можете познакомиться с тем, как написать свой UDP-сервер и клиент на несложном, но любопытном примере.
🛠 Полный код проекта доступен здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Кровь, пот и пиксели
Перед обратным перелётом из Манчестера вспомнил про вашу чудесную подборку книг и решил чем-нибудь занять 5 часов. Спасибо, что на пути оказался один из магазинов blackwells с прайсом за книгу в 12 фунтов.
Признаюсь, я ждал историй успешного успеха, и отчасти поэтому занизил изначальные ожидания. Но Джейсон Шрейер не стал описывать сказки, как сделать в гараже собственный GTA VI. Вместо этого он сосредоточился на реальных трудностях не только корпораций-гигантов вроде Blizzard, но и инди-разработчиков, например, целая глава выделена для истории Stardew Valley.
Конечно, я не буду делиться спойлерами, чтобы не уменьшать потенциальный интерес от чтения. Но не могу не вынести пару мыслей касаемо разработки ПО в целом, а не только игр.
Проблемы были и будут всегда, вопрос лишь в том, как именно на это реагировать не только в здесь и сейчас, но и в долгосрочной перспективе. Ведь часто бывает так, что у нас бывает только вектор развития (или как верно заметил Шрейер, работая в огромной корпорации вы как будто находитесь на корабле и плывёте куда-то на запад, но куда именно - неизвестно).
Порой крайне сложно (если вообще реально) добиться, чтобы изначально поставленные годовые планы были достигнуты в нужный срок и со всем объёмом.
И наша задача как разработчиков постараться описать как можно больше корнер-кейсов до начала реализации, чтобы наш корабль не превратился в призрак.
😃 iOS Dev
Перед обратным перелётом из Манчестера вспомнил про вашу чудесную подборку книг и решил чем-нибудь занять 5 часов. Спасибо, что на пути оказался один из магазинов blackwells с прайсом за книгу в 12 фунтов.
Признаюсь, я ждал историй успешного успеха, и отчасти поэтому занизил изначальные ожидания. Но Джейсон Шрейер не стал описывать сказки, как сделать в гараже собственный GTA VI. Вместо этого он сосредоточился на реальных трудностях не только корпораций-гигантов вроде Blizzard, но и инди-разработчиков, например, целая глава выделена для истории Stardew Valley.
Конечно, я не буду делиться спойлерами, чтобы не уменьшать потенциальный интерес от чтения. Но не могу не вынести пару мыслей касаемо разработки ПО в целом, а не только игр.
Проблемы были и будут всегда, вопрос лишь в том, как именно на это реагировать не только в здесь и сейчас, но и в долгосрочной перспективе. Ведь часто бывает так, что у нас бывает только вектор развития (или как верно заметил Шрейер, работая в огромной корпорации вы как будто находитесь на корабле и плывёте куда-то на запад, но куда именно - неизвестно).
Порой крайне сложно (если вообще реально) добиться, чтобы изначально поставленные годовые планы были достигнуты в нужный срок и со всем объёмом.
И наша задача как разработчиков постараться описать как можно больше корнер-кейсов до начала реализации, чтобы наш корабль не превратился в призрак.
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация пошаговой анимации в SwiftUI
На talk.objc.io вышел бесплатный эпизод, посвященный созданию анимации с комбинацией хэдера и нескольких ячеек (которые должны появляться в шахматном порядке и учитывать изменения прозрачности и градиента).
📖 Выпуск с видео и примерами кода доступен здесь.
😃 iOS Dev
На talk.objc.io вышел бесплатный эпизод, посвященный созданию анимации с комбинацией хэдера и нескольких ячеек (которые должны появляться в шахматном порядке и учитывать изменения прозрачности и градиента).
📖 Выпуск с видео и примерами кода доступен здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Примерно раз в год я прошу вас, читатели, помочь улучшить канал: подсветить недостатки, указать, что можно сделать иначе, поделиться идеями и мыслями в целом.
Сейчас как раз пятница, так что если у вас будет пара минут свободного времени, буду рад прочесть любые ваши отзывы.
По традиции, форма анонимная, ни один вопрос не обязательный, но все ответы совершенно точно будут прочитаны и каждое мнение будет иметь значение.
😎 Пройти опрос можно по этой ссылке.
😃 iOS Dev
Сейчас как раз пятница, так что если у вас будет пара минут свободного времени, буду рад прочесть любые ваши отзывы.
По традиции, форма анонимная, ни один вопрос не обязательный, но все ответы совершенно точно будут прочитаны и каждое мнение будет иметь значение.
Please open Telegram to view this post
VIEW IN TELEGRAM
Picker в SwiftUI: примеры кода
Это один из самых часто используемых элементов, который позволяет выбирать пользователям из набора значений. Возможно, наиболее известные стили это сегмент-контрол и меню-пикер.
📖 В этой статье на несложных примерах рассказано, как создать такой пикер и настроить нужное отображение.
😃 iOS Dev
Это один из самых часто используемых элементов, который позволяет выбирать пользователям из набора значений. Возможно, наиболее известные стили это сегмент-контрол и меню-пикер.
📖 В этой статье на несложных примерах рассказано, как создать такой пикер и настроить нужное отображение.
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Conf SG 2025: подборка докладов
В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уже доступен.
Рекомендую обратить внимание на эти доклады:
📺 Isolation, actors, sendable… Глубокое погружение в параллелизм
Donny Wals рассказывает об изоляции (кстати, напомню про этот пост), акторах и многом другом, чтобы наконец разобраться, что на самом деле пытается сказать нам компилятор, когда выдает загадочную ошибку.
📺 Заблуждения про тестирование и как использовать тесты для более быстрой разработки
В этом выступлении Krzysztof Zablocki делится лучшими подходами к тестированию при работе над Sourcery, New York Times и Arc Browser.
📺 Создание приложений, которые выделяются
Klemens Strasser, который получил 2 номинации Apple Design Award и даже победу, делится своим опытом.
📺 10 лет Swift: что произошло за это время
Swift, который мы пишем сегодня, почти не похож на Swift, который мы писали, когда он появился 10 лет назад. Чему мы научились за это время и какие изменения еще предстоят? В этом докладе на эти вопросы пробует ответить Пол Хадсон.
📺 За пределами программирования: необходимые софт-скиллы для успешной карьеры в iOS
Спикер делится советами, как строить более прочные отношения, преодолевать трудности на рабочем месте и как софт скиллы способствуют профессиональному росту
🔗 Эти и другие доклады доступны здесь.
😃 iOS Dev
В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уже доступен.
Рекомендую обратить внимание на эти доклады:
📺 Isolation, actors, sendable… Глубокое погружение в параллелизм
Donny Wals рассказывает об изоляции (кстати, напомню про этот пост), акторах и многом другом, чтобы наконец разобраться, что на самом деле пытается сказать нам компилятор, когда выдает загадочную ошибку.
📺 Заблуждения про тестирование и как использовать тесты для более быстрой разработки
В этом выступлении Krzysztof Zablocki делится лучшими подходами к тестированию при работе над Sourcery, New York Times и Arc Browser.
📺 Создание приложений, которые выделяются
Klemens Strasser, который получил 2 номинации Apple Design Award и даже победу, делится своим опытом.
📺 10 лет Swift: что произошло за это время
Swift, который мы пишем сегодня, почти не похож на Swift, который мы писали, когда он появился 10 лет назад. Чему мы научились за это время и какие изменения еще предстоят? В этом докладе на эти вопросы пробует ответить Пол Хадсон.
📺 За пределами программирования: необходимые софт-скиллы для успешной карьеры в iOS
Спикер делится советами, как строить более прочные отношения, преодолевать трудности на рабочем месте и как софт скиллы способствуют профессиональному росту
🔗 Эти и другие доклады доступны здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Структурная идентичность в SwiftUI
В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элементы интерфейса, SwiftUI автоматически выполняет перерисовку, когда это необходимо.
Однако перерисовывать все подряд — неэффективно.
И поэтому нам может помочь структурная идентичность — с её помощью SwiftUI решает, какие вью действительно нужно перерисовывать, сохранив производительность.
📖 В этой статье Наташа Фадеева на примерах объясняет, в чем особенности такого подхода и какую роль играет идентичность, например, в списках.
😃 iOS Dev
В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элементы интерфейса, SwiftUI автоматически выполняет перерисовку, когда это необходимо.
Однако перерисовывать все подряд — неэффективно.
И поэтому нам может помочь структурная идентичность — с её помощью SwiftUI решает, какие вью действительно нужно перерисовывать, сохранив производительность.
📖 В этой статье Наташа Фадеева на примерах объясняет, в чем особенности такого подхода и какую роль играет идентичность, например, в списках.
Please open Telegram to view this post
VIEW IN TELEGRAM
Обнаружение и устранение зависаний в приложениях для iOS
📖 В этой статье рассмотрена одна из самых частых причин снижения производительности в iOS-приложениях.
Спойлер: причина в сложных вычислениях в главном потоке.
Рассказано, как обнаружить зависание используя App Hangs Detection и Instruments, смоделирован сценарий зависания интерфейса в проекте SwiftUI и продемонстрированы шаги для устранения этой проблемы.
✅ Большой разбор возможных кейсов проблем с производительностью, причин зависаний и способов предотвращения такого поведения есть 💰 тут и ⭐️ прямо здесь.
😃 iOS Dev
📖 В этой статье рассмотрена одна из самых частых причин снижения производительности в iOS-приложениях.
Спойлер: причина в сложных вычислениях в главном потоке.
Рассказано, как обнаружить зависание используя App Hangs Detection и Instruments, смоделирован сценарий зависания интерфейса в проекте SwiftUI и продемонстрированы шаги для устранения этой проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Динамическая адаптация к доступному пространству с помощью ViewThatFits
Вкратце принцип работы следующий: ViewThatFits выбирает первое child view, чей идеальный размер по заданным осям впишется в предложенный размер.
Обычно это происходит в порядке от наибольшего к наименьшему, но, так как наше вью иногда может поместиться только вдоль одной оси, порядок может быть нарушен.
По умолчанию ViewThatFits ограничивается по горизонтальной и вертикальной осям.
📖 Неплохой пример использования ViewThatFits есть тут и в официальной документации.
😃 iOS Dev
ViewThatFits
- это компонент SwiftUI, доступный с iOS 16.Вкратце принцип работы следующий: ViewThatFits выбирает первое child view, чей идеальный размер по заданным осям впишется в предложенный размер.
Обычно это происходит в порядке от наибольшего к наименьшему, но, так как наше вью иногда может поместиться только вдоль одной оси, порядок может быть нарушен.
По умолчанию ViewThatFits ограничивается по горизонтальной и вертикальной осям.
📖 Неплохой пример использования ViewThatFits есть тут и в официальной документации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Стратегии, позволяющие избежать мерж-конфликтов в проектах Xcode
Каждый, кто работал в более-менее большой команде разработчиков (что уж там, даже двоих человек иногда достаточно), наверняка сталкивался с конфликтами при слиянии изменений.
📖 Tuist выпустили неплохой материал с разбором, почему такие проблемы вообще возникают, и как с этим может быть связан файл project.pbxproj в Xcode.
А ещё они описали несколько вариантов решения: от использования workspace и SwiftPM до buildable folders в Xcode 16.
🔗 Кстати, вот тут можно познакомиться и с другими возможными причинами мерж-конфликтов.
😃 iOS Dev
Каждый, кто работал в более-менее большой команде разработчиков (что уж там, даже двоих человек иногда достаточно), наверняка сталкивался с конфликтами при слиянии изменений.
📖 Tuist выпустили неплохой материал с разбором, почему такие проблемы вообще возникают, и как с этим может быть связан файл project.pbxproj в Xcode.
А ещё они описали несколько вариантов решения: от использования workspace и SwiftPM до buildable folders в Xcode 16.
🔗 Кстати, вот тут можно познакомиться и с другими возможными причинами мерж-конфликтов.
Please open Telegram to view this post
VIEW IN TELEGRAM