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
Как улучшить архитектуру кода с помощью принципов SOLID (с примерами на Swift)
Эти принципы помогают сократить количество хаоса на проекте с течением времени. Да и следование SOLID облегчает в целом сопровождение кода, тестирование и потенциальное масштабирование.
Наш читатель Максим Егоров (уже знакомый вам по примеру работы с Network-фреймворком) в этот раз решил затронуть базу и показал на несложных примерах потенциальные ошибки, которые могут нарушать принципы, сформулированные Робертом Мартином, а ещё привёл варианты их исправления.
📖 Прочитать статью целиком можно здесь.
🧠 Напомню, что в приложении вы можете проверить себя не только в знании этих принципов, но и в других важных темах.
😃 iOS Dev
Эти принципы помогают сократить количество хаоса на проекте с течением времени. Да и следование SOLID облегчает в целом сопровождение кода, тестирование и потенциальное масштабирование.
Наш читатель Максим Егоров (уже знакомый вам по примеру работы с Network-фреймворком) в этот раз решил затронуть базу и показал на несложных примерах потенциальные ошибки, которые могут нарушать принципы, сформулированные Робертом Мартином, а ещё привёл варианты их исправления.
📖 Прочитать статью целиком можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Spectrum ring — реализация на Metal в iOS
В рамках экспериментов по изучению возможностей шейдеров попробовал разложить несколько цветов в непрерывный ряд (и дополнил парой красивых эффектов).
Варианты использования спектра вообще довольно значительны (от стандартного colorPicker в iOS до реализации самых разных волн и анимаций в музыкальных плеерах).
✅ Реализация, референсы и код на SwiftUI+Metal уже доступен 💰 тут и ⭐️ в телеграм.
🎆 В канале доступны и другие красивые эффекты.
😃 iOS Dev
В рамках экспериментов по изучению возможностей шейдеров попробовал разложить несколько цветов в непрерывный ряд (и дополнил парой красивых эффектов).
Варианты использования спектра вообще довольно значительны (от стандартного colorPicker в iOS до реализации самых разных волн и анимаций в музыкальных плеерах).
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift init() - особенности, примеры использования и подводные камни
📖 Статья, на первый взгляд полезная новичкам, на самом деле описывает несколько проблем, с которыми могут столкнуться разработчики.
Кирилл, который уже делился своим разбором Grand Central Dispatch, акцентирует внимание на нескольких важных аспектах.
Например, почему
Статья разбита на следующие логические блоки:
Работа со структурами:
- Memberwise initializer.
- Optionals, var vs let.
- Retaining a memberwise initializer.
Работа с классами:
- Designated initializer.
- Convenience initializer.
- Уменьшаем количество override.
- Помощь компилятора.
- required initializer: дженерики, протоколы, Self(), final.
- UIView() и что скрывает документация.
😃 iOS Dev
📖 Статья, на первый взгляд полезная новичкам, на самом деле описывает несколько проблем, с которыми могут столкнуться разработчики.
Кирилл, который уже делился своим разбором Grand Central Dispatch, акцентирует внимание на нескольких важных аспектах.
Например, почему
UIView.init()
всегда вызывается без параметров, а init(frame:)
и init(coder:)
переопределяются. Или, например, когда именно нужен required
-инициализатор. Статья разбита на следующие логические блоки:
Работа со структурами:
- Memberwise initializer.
- Optionals, var vs let.
- Retaining a memberwise initializer.
Работа с классами:
- Designated initializer.
- Convenience initializer.
- Уменьшаем количество override.
- Помощь компилятора.
- required initializer: дженерики, протоколы, Self(), final.
- UIView() и что скрывает документация.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разделение или работа в команде
Удивительно, как в нескольких компаниях сразу идеи о том, как важно отделять рабочее от всего остального, вышли буквально на мировой уровень.
📺 Несколько лет назад появился сериал Разделение, о котором я даже написал пару строк (и по случайному совпадению он завершал один из небольших квестов в нашем канале).
К слову, линия мистера Милчека с его перфоманс-ревью и последующей рефлексией возможно найдет ответ и у некоторых разработчиков.
🎮 А ведь кроме этого вышла сначала it takes two, а в этом году не менее чудесная Split Fiction, в которой, к слову, секретное послание оставил и геймдизайнер.
Пожалуй, крайне важная часть — умение работать в команде, ведь далеко не всегда всё зависит от мобильного клиента, или конкретно от разработчика.
Тесное взаимодействие команд дизайна, тестирования, реализации на сервере и формирование продуктовых задач, которые попадают в спринт достигается за счёт синергии всех участников процесса.
Кроме этого, одна из основных составляющих нашей работы состоит как раз в сложности разделения.
Тяжело перестать думать о баге или какой-нибудь важной фиче, которую вот-вот и вы выкатите на прод, особенно перед релизом.
И это может влиять и на менталку, и на какие-то дела вне работы. Поэтому довольно важно научиться разделять рабочие моменты и все, что находится за пределами, какой бы сложной и важной та или иная не казалась на первый взгляд.
🔄 Главное помнить, что умение переключать контекст - важнейший скилл. Не только в работе, но и в жизни.
И это далеко не самый простой навык.
😃 iOS Dev
Удивительно, как в нескольких компаниях сразу идеи о том, как важно отделять рабочее от всего остального, вышли буквально на мировой уровень.
📺 Несколько лет назад появился сериал Разделение, о котором я даже написал пару строк (и по случайному совпадению он завершал один из небольших квестов в нашем канале).
К слову, линия мистера Милчека с его перфоманс-ревью и последующей рефлексией возможно найдет ответ и у некоторых разработчиков.
🎮 А ведь кроме этого вышла сначала it takes two, а в этом году не менее чудесная Split Fiction, в которой, к слову, секретное послание оставил и геймдизайнер.
Пожалуй, крайне важная часть — умение работать в команде, ведь далеко не всегда всё зависит от мобильного клиента, или конкретно от разработчика.
Тесное взаимодействие команд дизайна, тестирования, реализации на сервере и формирование продуктовых задач, которые попадают в спринт достигается за счёт синергии всех участников процесса.
Кроме этого, одна из основных составляющих нашей работы состоит как раз в сложности разделения.
Тяжело перестать думать о баге или какой-нибудь важной фиче, которую вот-вот и вы выкатите на прод, особенно перед релизом.
И это может влиять и на менталку, и на какие-то дела вне работы. Поэтому довольно важно научиться разделять рабочие моменты и все, что находится за пределами, какой бы сложной и важной та или иная не казалась на первый взгляд.
И это далеко не самый простой навык.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотя актуальный релиз Swift по дефолту включен в Xcode, иногда может понадобиться другая версия для создания сервисов или, например, каких-либо инструментов командной строки.
Установка надежной версии Swift (с нужными зависимостями) требовала действий вручную, которые, очевидно, могли приводить к ошибкам.
🛠 В этом релизе swiftly стал частью Swift toolchain.
Кроме этого, добавлена и поддержка macOS для того, чтобы сделать возможной установку Swift отдельно от Xcode.
Среди базовых фич:
📖 Официальная новость на сайте Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
Архитектура SwiftData: паттерны и практики
SwiftData ознаменовала важный шаг вперёд в области хранения данных. Она была призвана заменить Core Data чем-то более интуитивным: тем, что будет проще интегрировать в SwiftUI.
Однако осталось несколько важных вопросов.
Как именно мы должны проектировать приложение на её основе?
Должны ли мы целиком полагаться на
📖 В этой масштабной статье можно узнать ответы на эти и другие вопросы:
🔘 Как структурировать модели данных
🔘 Где разместить бизнес-логику
🔘 Как писать модульные тесты
🔘 Как настроить работу Preview в Xcode
🔘 Как интегрировать CloudKit
🔘 Как работать с изменениями в слоях в будущем.
😃 iOS Dev
SwiftData ознаменовала важный шаг вперёд в области хранения данных. Она была призвана заменить Core Data чем-то более интуитивным: тем, что будет проще интегрировать в SwiftUI.
Однако осталось несколько важных вопросов.
Как именно мы должны проектировать приложение на её основе?
Должны ли мы целиком полагаться на
@Model
и @Query
, или можно абстрагировать их за протоколами для обеспечения гибкости? Как быть с бизнес-логикой? Да и как в целом нужно структурировать код для обеспечения надёжности и тестируемости в будущем.📖 В этой масштабной статье можно узнать ответы на эти и другие вопросы:
Please open Telegram to view this post
VIEW IN TELEGRAM