Swift Enums 🤝 Дизайн-системы
Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-системы).
По факту чаще всего это библиотека, которая объединяет дизайн в переиспользуемые компоненты, цвета, шрифты, иконки и так далее, помогая обеспечить единый стиль во всех ваших продуктах.
Или если ещё проще, они позволяют нам избежать изобретения велосипеда для каждого экрана.
Грамотно спроектированная дизайн-система сэкономит часы (или сотни часов в будущем).
📖 В этом материале Джейкоб Бартлетт рассказывает о своём опыте создания разных систем и объясняет, почему в итоге остановился на использовании перечислений.
🛠 А вот здесь можно посмотреть на код для этого проекта.
😃 iOS Dev • 🐱 Доступ к необычным эффектам
Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-системы).
По факту чаще всего это библиотека, которая объединяет дизайн в переиспользуемые компоненты, цвета, шрифты, иконки и так далее, помогая обеспечить единый стиль во всех ваших продуктах.
Или если ещё проще, они позволяют нам избежать изобретения велосипеда для каждого экрана.
Грамотно спроектированная дизайн-система сэкономит часы (или сотни часов в будущем).
📖 В этом материале Джейкоб Бартлетт рассказывает о своём опыте создания разных систем и объясняет, почему в итоге остановился на использовании перечислений.
🛠 А вот здесь можно посмотреть на код для этого проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня пятница, у многих выходной и я, надеюсь, что у вас будет две минуты свободного времени
Примерно раз в год я собираю обратную связь о своём канале и о том, что вам нравится или не нравится для того, чтобы прокачивать контент в правильном направлении.
К сожалению, за это время появилось множество тех, кто копирует материалы отсюда 1 в 1. Иногда удачно, иногда нет, но это касается не только подачи каких-то вещей, но и оформления канала.
Конечно, это ещё один повод искать правильные направления развития, но мне нужна ваша помощь.
🐾 Пройдите опрос (полностью анонимный) и помогите сделать выводы.
😃 iOS Dev • 🐱 Доступ к алгоритмам
Примерно раз в год я собираю обратную связь о своём канале и о том, что вам нравится или не нравится для того, чтобы прокачивать контент в правильном направлении.
К сожалению, за это время появилось множество тех, кто копирует материалы отсюда 1 в 1. Иногда удачно, иногда нет, но это касается не только подачи каких-то вещей, но и оформления канала.
Конечно, это ещё один повод искать правильные направления развития, но мне нужна ваша помощь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что скрывают сертификаты для Code Signing?
Подписание кода является основополагающей технологией для всех платформ Apple.
Например, знаете ли вы, что provisioning profile объединяет пять критериев:
Что касается вопроса «кто?», то в TN3125 описывается, как именно каждый профиль включает сертификат для каждого разработчика.
Но в нём нет подробного описания того, что такое сертификат.
Например, в реальном мире сертификат — это документ, в котором эмитент подтверждает некоторые факты о предмете.
Например, в свидетельстве о рождении:
🔘 Эмитентом является региональный орган регистрации.
🔘 Субъект (или же тема) — это вы.
🔘 Факты — это ваше имя, дата рождения, родители и так далее.
Эта система основана на том факте, что реальные сертификаты подделать непросто: они печатаются на красивой бумаге, используются специальные штампы, сургучные печати и так далее.
Цифровой сертификат преследует ту же цель, что и настоящий.
Однако он не может использовать красивую бумагу для предотвращения подделок, что логично.
Вместо этого цифровой сертификат основан на криптографии с открытым ключом.
Для подписи кода Apple используется стандарт цифровых сертификатов X.509.
Сертификат X.509 содержит пять частей информации:
🔘 Реквизиты эмитента.
🔘 Подробности темы.
🔘 Открытый ключ субъекта.
🔘 Обязательные факты, например действительный диапазон дат.
🔘 Необязательные факты, известные как расширения.
Эмитент подписывает эту информацию своим закрытым ключом, а затем объединяет ее в сертификат (более подробно - вот тут).
✅ У себя я также разобрал понятия .der и .pem, цепочку доверия,
😃 iOS Dev • 🐱 Разбор сертификатов
Подписание кода является основополагающей технологией для всех платформ Apple.
Например, знаете ли вы, что provisioning profile объединяет пять критериев:
кто
, что
, где
, когда
и как
. Что касается вопроса «кто?», то в TN3125 описывается, как именно каждый профиль включает сертификат для каждого разработчика.
Но в нём нет подробного описания того, что такое сертификат.
Например, в реальном мире сертификат — это документ, в котором эмитент подтверждает некоторые факты о предмете.
Например, в свидетельстве о рождении:
🔘 Эмитентом является региональный орган регистрации.
🔘 Субъект (или же тема) — это вы.
🔘 Факты — это ваше имя, дата рождения, родители и так далее.
Эта система основана на том факте, что реальные сертификаты подделать непросто: они печатаются на красивой бумаге, используются специальные штампы, сургучные печати и так далее.
Цифровой сертификат преследует ту же цель, что и настоящий.
Однако он не может использовать красивую бумагу для предотвращения подделок, что логично.
Вместо этого цифровой сертификат основан на криптографии с открытым ключом.
Для подписи кода Apple используется стандарт цифровых сертификатов X.509.
Сертификат X.509 содержит пять частей информации:
🔘 Реквизиты эмитента.
🔘 Подробности темы.
🔘 Открытый ключ субъекта.
🔘 Обязательные факты, например действительный диапазон дат.
🔘 Необязательные факты, известные как расширения.
Эмитент подписывает эту информацию своим закрытым ключом, а затем объединяет ее в сертификат (более подробно - вот тут).
Certificate signing request
, что происходит при переподписывании кода в App Store, а также путаницу в экосистеме Apple.Please open Telegram to view this post
VIEW IN TELEGRAM
Metal в Swift: как писать шейдеры
Использование Metal — весьма сложное, но в то же время захватывающее занятие, если научиться использовать его мощь.
Материалов по нему всё ещё немного, а лучшие эффекты доступны в двух или трёх репозиториях (в будущем и здесь будет подборка).
Сегодня я делюсь с вами фундаментальным исследованием Джейкоба Бартлетта.
Он обещает помочь написать собственные шейдеры Metal и использовать их в своих приложениях.
Поскольку многие раньше не сталкивались с C++ или графическим кодом, бонусом будет доступное и лаконичное объяснение сложных моментов.
Часть I: Введение
🔘Что такое Metal?
🔘Почему Metal такой быстрый?
🔘Настройка проекта.
Часть II: Эффект цвета
🔘Настройка нашего View.
🔘Шаблон Metal.
🔘Наша первая шейдерная функция.
🔘Понимание цвета.
🔘Понимание позиции.
🔘Понимание геометрии.
🔘Понимание времени.
🔘Понимание колебаний.
🛠 Проект: Создание диско-лучей.
Часть III: Эффект искажения
🔘Понимание искажения.
🔘Понимание Source и Destination.
🛠 Проект: Создание волнистого текста.
Часть IV: Эффект слоя
🔘Понимание эффекта слоя.
🔘SwiftUI::Layer и Sampling.
🛠 Проект: Создание ретро-фильтра.
Часть V: Свободный полет
🔘Книга о шейдерах.
🔘Случайный шум.
🔘Шум Перлина.
Если вы не хотите ждать подборку репозиториев, то кроме неё есть ещё и несколько интересных моментов, которые я описал в iOS IQ.
✅ Например, можно узнать, как использовать Metal в UIVIew.
😃 iOS Dev • 🐱 Разбор сертификатов
Использование Metal — весьма сложное, но в то же время захватывающее занятие, если научиться использовать его мощь.
Материалов по нему всё ещё немного, а лучшие эффекты доступны в двух или трёх репозиториях (в будущем и здесь будет подборка).
Сегодня я делюсь с вами фундаментальным исследованием Джейкоба Бартлетта.
Он обещает помочь написать собственные шейдеры Metal и использовать их в своих приложениях.
Поскольку многие раньше не сталкивались с C++ или графическим кодом, бонусом будет доступное и лаконичное объяснение сложных моментов.
Часть I: Введение
🔘Что такое Metal?
🔘Почему Metal такой быстрый?
🔘Настройка проекта.
Часть II: Эффект цвета
🔘Настройка нашего View.
🔘Шаблон Metal.
🔘Наша первая шейдерная функция.
🔘Понимание цвета.
🔘Понимание позиции.
🔘Понимание геометрии.
🔘Понимание времени.
🔘Понимание колебаний.
🛠 Проект: Создание диско-лучей.
Часть III: Эффект искажения
🔘Понимание искажения.
🔘Понимание Source и Destination.
🛠 Проект: Создание волнистого текста.
Часть IV: Эффект слоя
🔘Понимание эффекта слоя.
🔘SwiftUI::Layer и Sampling.
🛠 Проект: Создание ретро-фильтра.
Часть V: Свободный полет
🔘Книга о шейдерах.
🔘Случайный шум.
🔘Шум Перлина.
Если вы не хотите ждать подборку репозиториев, то кроме неё есть ещё и несколько интересных моментов, которые я описал в iOS IQ.
Please open Telegram to view this post
VIEW IN TELEGRAM
Архитектура приложений
Архитектура включает в себя способы организации и структурирования кода, который и помогает корректно функционировать всему приложению.
Вполне корректно сравнить её с фундаментом (практически как при строительстве домов).
Прежде всего, при проектировании архитектуры в крупных проектах нужно уделять внимание потенциальному масштабированию.
Бывает, что вместо этого внимание сосредоточено на синтаксисе или узких моментах. Но ведь без удобной в поддержке архитектуры не может быть гибкого кода.
А ведь у нас ещё есть безопасность, кэширование, автономность (и всё это можно проектировать в глубину на несколько уровней).
Несмотря на это, бывают заблуждения, некорректные практики и ложные направления.
В новой секции в iOS IQ я разобрал несколько фундаментальных вещей, о которых не напишут в каналах и о чём нельзя узнать, не столкнувшись на практике.
И почему тащить сторонние либы почти никогда не хорошая идея.
✅ Узнать больше можно здесь.
😃 iOS Dev • 🐱 iOS IQ
Архитектура включает в себя способы организации и структурирования кода, который и помогает корректно функционировать всему приложению.
Вполне корректно сравнить её с фундаментом (практически как при строительстве домов).
Прежде всего, при проектировании архитектуры в крупных проектах нужно уделять внимание потенциальному масштабированию.
Бывает, что вместо этого внимание сосредоточено на синтаксисе или узких моментах. Но ведь без удобной в поддержке архитектуры не может быть гибкого кода.
А ведь у нас ещё есть безопасность, кэширование, автономность (и всё это можно проектировать в глубину на несколько уровней).
Несмотря на это, бывают заблуждения, некорректные практики и ложные направления.
В новой секции в iOS IQ я разобрал несколько фундаментальных вещей, о которых не напишут в каналах и о чём нельзя узнать, не столкнувшись на практике.
И почему тащить сторонние либы почти никогда не хорошая идея.
Please open Telegram to view this post
VIEW IN TELEGRAM
Публикация iOS-фреймворка: SPM, CocoaPods, Carthage
Наверняка, многие создавали или планировали создать свои фреймворки.
Все на самом деле не так страшно, и у эпла, например, есть богатая документация на этот счёт.
📖 Но если нужна простая инструкция, то можно воспользоваться и этой статьёй.
✅ Кстати, если вы думаете, какую архитектуру использовать, то для этого есть целый раздел.
😃 iOS Dev • 🐱 iOS IQ
Наверняка, многие создавали или планировали создать свои фреймворки.
Все на самом деле не так страшно, и у эпла, например, есть богатая документация на этот счёт.
📖 Но если нужна простая инструкция, то можно воспользоваться и этой статьёй.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с датами в Swift
Каждый раз, когда предстоит работа с датами, некоторые считают, что это приключение на 20 минут.
В свою очередь, я вспоминаю этот отрывок из замечательного фильма «Феномен», снятый ещё до момента, когда Траволта решил воспользоваться обликом Кейджа.
Сегодня я хотел бы напомнить, что если вы путаетесь в форматах, то есть прекрасный ресурс, а ещё шпаргалка!
📖 И, кстати, можно попробовать воспользоваться собственной стратегией кодирования и декодирования дат в Swift.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
Каждый раз, когда предстоит работа с датами, некоторые считают, что это приключение на 20 минут.
В свою очередь, я вспоминаю этот отрывок из замечательного фильма «Феномен», снятый ещё до момента, когда Траволта решил воспользоваться обликом Кейджа.
Сегодня я хотел бы напомнить, что если вы путаетесь в форматах, то есть прекрасный ресурс, а ещё шпаргалка!
📖 И, кстати, можно попробовать воспользоваться собственной стратегией кодирования и декодирования дат в Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
🗓 С 13 марта: если загрузить в App Store Connect приложение с API, требующим причин использования, то разработчику будет отправлено соответствующее письмо.
Это будет дополнением к уведомлению в самом App Store Connect.
🗓 С 1 мая: Чтобы загрузить приложение в App Store Connect, будет необходимо указать причины использования перечисленных API, если они есть в коде.
Если причину найти не получится, то следует поискать альтернативу этому API.
Обязательно нужно использовать версию SDK, включающую манифест конфиденциальности, подписи также потребуются, когда SDK добавляется в качестве бинарной зависимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS IQ — обновление базы знаний
Продолжительное время я собираю свои исследования, код, статьи и лучшие посты, включая неопубликованные в этом канале воедино.
За это время поддержали канал около 100 человек, и я получил потрясающие и приятные отзывы. Благодаря опросу в том числе.
Вот что вы там можете увидеть (и это только верхний уровень):
🏅Подборки лучших материалов для подготовки к собеседованиям.
🧠 Подготовка к собеседованиям (задачи, разбор полётов).
👨💻 Личная эффективность (советы, мысли, опыт).
🔨 Код. Правила и необычные подходы.
🔮 Важные моменты при разработке.
📓 Алгоритмическая секция (если вы хотите узнать, что такое мемоизация или разобраться, наконец, с поиском в ширину).
💎 Архитектуры (без фундамента не построить дом, а без архитектуры не реализовать масштабируемое приложение).
🏄 Реализация эффектов (от анимации Wallet до эффектов в приложении Messages или NameDrop).
✅ Подпишись, чтобы узнать больше
Продолжительное время я собираю свои исследования, код, статьи и лучшие посты, включая неопубликованные в этом канале воедино.
За это время поддержали канал около 100 человек, и я получил потрясающие и приятные отзывы. Благодаря опросу в том числе.
Вот что вы там можете увидеть (и это только верхний уровень):
🏅Подборки лучших материалов для подготовки к собеседованиям.
🧠 Подготовка к собеседованиям (задачи, разбор полётов).
👨💻 Личная эффективность (советы, мысли, опыт).
🔨 Код. Правила и необычные подходы.
🔮 Важные моменты при разработке.
📓 Алгоритмическая секция (если вы хотите узнать, что такое мемоизация или разобраться, наконец, с поиском в ширину).
💎 Архитектуры (без фундамента не построить дом, а без архитектуры не реализовать масштабируемое приложение).
🏄 Реализация эффектов (от анимации Wallet до эффектов в приложении Messages или NameDrop).
Please open Telegram to view this post
VIEW IN TELEGRAM
Понятие Изоляции в Swift: определение и виды
Изоляцию можно назвать механизмом, который Swift использует для того, чтобы сделать гонки данных невозможными.
С помощью этого механизма компилятор понимает, как осуществляется доступ к данным и когда можно и нельзя делать это гарантированно безопасным способом.
Стоит также отметить, что речь идет именно о небезопасном доступе к изменяемому состоянию, но не обо всех видах гонок в целом.
Изоляция при этом может быть одной из следующих:
1️⃣ Статической.
2️⃣ Динамической.
3️⃣ Отсутствующей (или, если сказать по другому, без неё). По умолчанию как раз все не изолировано, и нам нужно предпринять явные действия, чтобы это изменить.
Типы акторов, глобальные акторы и изолированные параметры — все это формы статической изоляции.
Может случиться так, что система типов не описывает или не может описать фактически используемую изоляцию. Это регулярно случается с системами, реализованными до появления параллелизма.
Один из инструментов, который решает эту проблему — динамическая изоляция.
Это API, которые позволяют нам выразить изоляцию таким образом, что она не видна при простом просмотре определений.
✅ В базе знаний я добавил расширенный материал не только с примерами изоляции, но и отличную подборку для работы с протоколами и параллелизмом.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
Изоляцию можно назвать механизмом, который Swift использует для того, чтобы сделать гонки данных невозможными.
С помощью этого механизма компилятор понимает, как осуществляется доступ к данным и когда можно и нельзя делать это гарантированно безопасным способом.
Стоит также отметить, что речь идет именно о небезопасном доступе к изменяемому состоянию, но не обо всех видах гонок в целом.
Изоляция при этом может быть одной из следующих:
1️⃣ Статической.
2️⃣ Динамической.
3️⃣ Отсутствующей (или, если сказать по другому, без неё). По умолчанию как раз все не изолировано, и нам нужно предпринять явные действия, чтобы это изменить.
Типы акторов, глобальные акторы и изолированные параметры — все это формы статической изоляции.
Может случиться так, что система типов не описывает или не может описать фактически используемую изоляцию. Это регулярно случается с системами, реализованными до появления параллелизма.
Один из инструментов, который решает эту проблему — динамическая изоляция.
Это API, которые позволяют нам выразить изоляцию таким образом, что она не видна при простом просмотре определений.
Please open Telegram to view this post
VIEW IN TELEGRAM
Task и structured concurrency в swift
Влад Яндола на хабре проделал монументальную работу и разобрал в серии статей инструменты и механизмы structured concurrency, преимущества по сравнению с GCD и привел несколько примеров.
Например, вы можете узнать, что такое иерархия тасок, какие могут быть тонкости при работе и многое другое.
1️⃣ Swift async/await. Чем он лучше GCD?
2️⃣ Swift async/await на примерах.
3️⃣ Task и structured concurrency в Swift.
✅ Напоминаю, что в базе знаний уже есть огромный раздел по Swift Concurrency, в том числе с разбором подводных камней.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
Влад Яндола на хабре проделал монументальную работу и разобрал в серии статей инструменты и механизмы structured concurrency, преимущества по сравнению с GCD и привел несколько примеров.
Например, вы можете узнать, что такое иерархия тасок, какие могут быть тонкости при работе и многое другое.
1️⃣ Swift async/await. Чем он лучше GCD?
2️⃣ Swift async/await на примерах.
3️⃣ Task и structured concurrency в Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Swift 5.10 уже доступен!
В Swift 5.10 реализована полная изоляция данных.
Эта важная веха заняла годы активной разработки в течение многих релизов.
Модель параллелизма была представлена в Swift 5.5, включая
В Swift 5.7 был представлен
А теперь, в Swift 5.10, полная изоляция данных обеспечивается во время компиляции во всех областях языка, когда включена соответствующая опция.
Swift 5.10 будет выдавать предупреждения о гонках данных в некоторых случаях, когда код может быть признан безопасным с помощью дополнительного анализа компилятора.
📖 Больше изменений в официальном ченджлоге свифта здесь.
✅ Узнать больше о Swift Concurrency и познакомиться с возможными кейсами вы можете здесь.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
В Swift 5.10 реализована полная изоляция данных.
Эта важная веха заняла годы активной разработки в течение многих релизов.
Модель параллелизма была представлена в Swift 5.5, включая
async/await
, actors
и структурированный параллелизм. В Swift 5.7 был представлен
Sendable
как фундаментальная концепция для потокобезопасных типов, значения которых могут совместно использоваться в произвольных параллельных контекстах без риска возникновения гонок данных. А теперь, в Swift 5.10, полная изоляция данных обеспечивается во время компиляции во всех областях языка, когда включена соответствующая опция.
Swift 5.10 будет выдавать предупреждения о гонках данных в некоторых случаях, когда код может быть признан безопасным с помощью дополнительного анализа компилятора.
📖 Больше изменений в официальном ченджлоге свифта здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
🎉 Swift 5.10 уже доступен! В Swift 5.10 реализована полная изоляция данных. Эта важная веха заняла годы активной разработки в течение многих релизов. Модель параллелизма была представлена в Swift 5.5, включая async/await, actors и структурированный параллелизм.…
Бонус к релизу Swift: протоколы теперь могут быть вложены в перечисления, классы, структуры и акторы
На практике это означает, что протоколы могут быть размещены в определенном контексте, что совершенно точно повысит читабельность, поскольку им больше не нужно быть сложными определениями верхнего уровня.
📖 Ссылка на принятый пропозал.
😃 iOS Dev • 🐱 Узнать о важном
На практике это означает, что протоколы могут быть размещены в определенном контексте, что совершенно точно повысит читабельность, поскольку им больше не нужно быть сложными определениями верхнего уровня.
📖 Ссылка на принятый пропозал.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Повторение эффекта конфетти из iMessage
Я люблю анимации в iOS и иногда ищу (или реализую сам), как именно инженеры реализуют те или иные вещи.
✅ Например, целый раздел в ноушне я посвятил подборке клёвых эффектов и их реализации.
iMessage имеет одну из самых красивых реализаций конфетти на iOS.
Но как это работает?
Краткий ответ: недокументированная функциональность и недокументированная функциональность.
📖 Хорошо, что есть энтузиасты, как, например, Брайс Паукен, которые тратят свои силы на объяснение и показывают, как можно реализовать такие вещи.
🔗А вот и пример кода для реализации этого эффекта.
Если вам нравятся такие темы, то напомню, что есть способ поддержки канала.
😃 iOS Dev • 🐱 Узнать о важном
Я люблю анимации в iOS и иногда ищу (или реализую сам), как именно инженеры реализуют те или иные вещи.
iMessage имеет одну из самых красивых реализаций конфетти на iOS.
Но как это работает?
Краткий ответ: недокументированная функциональность и недокументированная функциональность.
📖 Хорошо, что есть энтузиасты, как, например, Брайс Паукен, которые тратят свои силы на объяснение и показывают, как можно реализовать такие вещи.
🔗А вот и пример кода для реализации этого эффекта.
Если вам нравятся такие темы, то напомню, что есть способ поддержки канала.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Поздравляю всех девушек с праздником!
Хотя красота и страшная сила, но она нужна для того, чтобы спасать мир.
В мире IT много талантливых женщин, и пусть большинство вспомнит Аду Лавлейс, я хотел бы рассказать пару фактов о Грейс Хоппер.
Она была одной из первых, кто писал программы для гарвардского компьютера Марк I, развила концепцию машинно-независимых языков программирования, что привело к созданию Кобола.
Команда с её участием выпустила первый компилятор, а ещё в некоторых источниках считается, что именно благодаря ей сейчас женщины могут работать в IT. Ах да, кстати она получила звание контр-адмирала.
Она была математиком, поэтому я решил посмотреть, какие есть формулы для рисования сердец (и решил одну из них реализовать).
И пусть приложения для iOS создавать проще, чем пилить компилятор, но и это важно.
🌷С праздником!
📖 А вот тут есть несложный гайд по анимации UIBezierPath.
😃 iOS Dev • 🐱 Больше эффектов!
Хотя красота и страшная сила, но она нужна для того, чтобы спасать мир.
В мире IT много талантливых женщин, и пусть большинство вспомнит Аду Лавлейс, я хотел бы рассказать пару фактов о Грейс Хоппер.
Она была одной из первых, кто писал программы для гарвардского компьютера Марк I, развила концепцию машинно-независимых языков программирования, что привело к созданию Кобола.
Команда с её участием выпустила первый компилятор, а ещё в некоторых источниках считается, что именно благодаря ей сейчас женщины могут работать в IT. Ах да, кстати она получила звание контр-адмирала.
Она была математиком, поэтому я решил посмотреть, какие есть формулы для рисования сердец (и решил одну из них реализовать).
И пусть приложения для iOS создавать проще, чем пилить компилятор, но и это важно.
🌷С праздником!
📖 А вот тут есть несложный гайд по анимации UIBezierPath.
Please open Telegram to view this post
VIEW IN TELEGRAM
Массивы в Swift: стартовые и продвинутые техники
Среди отзывов к базе знаний читатели просили рассмотреть не только хардкорные вещи, но и более базовые.
Я решил начать с одной из основных тем, и разобрать не только вводные техники по использованию массивов, но и некоторые особенности.
Кстати, это будет полезно не только новичкам, например, вы можете ещё узнать больше об
Уже сейчас можно почитать следующие темы:
1️⃣ Введение.
2️⃣ Проверка границ массива.
3️⃣ Методы удаления последнего элемента.
4️⃣ Разбор базовых техник.
5️⃣ ArraySlice и его особенности.
6️⃣ Различные способы сортировки.
7️⃣ 23 стратегии использования массивов.
➡️ Получить доступ можно здесь.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
Среди отзывов к базе знаний читатели просили рассмотреть не только хардкорные вещи, но и более базовые.
Я решил начать с одной из основных тем, и разобрать не только вводные техники по использованию массивов, но и некоторые особенности.
Кстати, это будет полезно не только новичкам, например, вы можете ещё узнать больше об
ArraySlice
и, например, рассмотреть использование метода elementsEqual(_:)
.Уже сейчас можно почитать следующие темы:
1️⃣ Введение.
2️⃣ Проверка границ массива.
3️⃣ Методы удаления последнего элемента.
4️⃣ Разбор базовых техник.
5️⃣ ArraySlice и его особенности.
6️⃣ Различные способы сортировки.
7️⃣ 23 стратегии использования массивов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Бинарные деревья и очереди с приоритетом в Swift
В серии из двух статей рассматриваются свойства очереди с приоритетом и то, как она может быть реализована с помощью массива для хранения структуры бинарного дерева.
За основу взята книга: «Алгоритмы и структуры данных» Марчелло Ла Рокка.
1️⃣ В первой части описаны необходимые операции для очереди с приоритетом. Показано, как ее можно представить в виде двоичного дерева и как можно использовать массив для управления очередью.
2️⃣ Во втором блоке демонстрируется swift-код для реализации очереди с приоритетом. API полагается на две внутренние функции (bubbleUp и pushDown), чтобы вернуть очередь в приоритетный порядок после выполнения операции.
🐱 Напомню, что в бусти есть специальный раздел 📓 Алгоритмическая секция, в котором я рассматриваю разные подходы к решению задач, в том числе и на реальных примерах.
😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше
В серии из двух статей рассматриваются свойства очереди с приоритетом и то, как она может быть реализована с помощью массива для хранения структуры бинарного дерева.
За основу взята книга: «Алгоритмы и структуры данных» Марчелло Ла Рокка.
1️⃣ В первой части описаны необходимые операции для очереди с приоритетом. Показано, как ее можно представить в виде двоичного дерева и как можно использовать массив для управления очередью.
2️⃣ Во втором блоке демонстрируется swift-код для реализации очереди с приоритетом. API полагается на две внутренние функции (bubbleUp и pushDown), чтобы вернуть очередь в приоритетный порядок после выполнения операции.
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple анонсировали эту новость сегодня.
Благодаря функции Web Distribution, разработчики смогут распространять свои приложения для iOS среди пользователей ЕС непосредственно со своих веб-сайтов
Это будет реализовано с помощью специального доступа к API (подробнее на официальном сайте).
Please open Telegram to view this post
VIEW IN TELEGRAM
Основы UIKit за 2 часа
На своём лайстриме Винсент дал вводный материал со следующими этапами разработки:
1️⃣ Структура проекта UIKit.
2️⃣ Создание экрана с использованием Storyboard.
3️⃣ Создание экрана с помощью кода (без использования Interface Builder).
4️⃣ Настройка запуска приложения.
✅ Кстати, если вы не знаете, какую архитектуру выбрать при начале разработки, то в базе есть несколько примеров (и разборов заблуждений).
😃 iOS Dev
На своём лайстриме Винсент дал вводный материал со следующими этапами разработки:
1️⃣ Структура проекта UIKit.
2️⃣ Создание экрана с использованием Storyboard.
3️⃣ Создание экрана с помощью кода (без использования Interface Builder).
4️⃣ Настройка запуска приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Основы анимации в SwiftUI
Анимации и эффекты — это одна из тем, за которую все мы любим iOS. Возможности, и то, как они ощущаются при правильной реализации выгодно отличает систему Apple от других.
Сегодня хочу поделиться тремя масштабными блоками, которые могут сделать жизнь в SwiftUI немного приятнее.
1️⃣ Демистификация анимации SwiftUI — исчерпывающее руководство
Про механизм анимации SwiftUI и приводится большое количество кода.
2️⃣ Секрет безупречной анимации: глубокое погружение в транзакции
О принципах, функциях, создании Transaction + примеры управления анимацией в SwiftUI.
3️⃣ Руководство по SwiftUI geometryGroup(): от теории к практике
Разбор концепции и использовании geometryGroup(), а также о том, как быть со старыми версиями.
📖 А тут можно узнать ещё больше не только об анимациях, но и многом другом.
😃 iOS Dev • 🐱 Разбор эффектов
Анимации и эффекты — это одна из тем, за которую все мы любим iOS. Возможности, и то, как они ощущаются при правильной реализации выгодно отличает систему Apple от других.
Сегодня хочу поделиться тремя масштабными блоками, которые могут сделать жизнь в SwiftUI немного приятнее.
1️⃣ Демистификация анимации SwiftUI — исчерпывающее руководство
Про механизм анимации SwiftUI и приводится большое количество кода.
2️⃣ Секрет безупречной анимации: глубокое погружение в транзакции
О принципах, функциях, создании Transaction + примеры управления анимацией в SwiftUI.
3️⃣ Руководство по SwiftUI geometryGroup(): от теории к практике
Разбор концепции и использовании geometryGroup(), а также о том, как быть со старыми версиями.
📖 А тут можно узнать ещё больше не только об анимациях, но и многом другом.
Please open Telegram to view this post
VIEW IN TELEGRAM
По поводу вчерашних апдейтов в аппстор коннекте, что есть к этой минуте
Вчера все разработчики получили не самое однозначное обновление аппстора.
Внимание, я не юрист, а разработчик, и информация ниже не является юридической консультацией или советом.
Эти изменения касаются не только аппстора, но и затрагивает другие диджитал-сервисы, например, jetbrains тоже писали.
Здесь и далее термин плагин для нас означает приложение.
Мне кажется, можно провести параллель. Вот из их примеров:
1️⃣ Если вы являетесь физическим лицом, действующим не в рамках своего бизнеса (не предприниматель), и предлагаете плагины бесплатно, вы можете быть квалифицированы как неторговец.
Проводим аналогию, бесплатно == нет прибыли, не торговец.
2️⃣ Если вы являетесь физическим лицом (разработчиком программного обеспечения), работающим в компании, но разрабатываете плагины в свободное время в качестве хобби, предлагаете их бесплатно и предоставляете пользователям средства для поддержки ваших разработок на добровольной основе (добровольный финансовый взнос), вы можете быть квалифицированы как неторговец.
Если фулл-тайм работаем, есть приложения, в которых чаевые (или другой вид саппорта), не торговец.
3️⃣ Если вы являетесь коммерческим юридическим лицом, независимо от того, являетесь ли вы частной или публичной компанией, вы будете напрямую квалифицированы как трейдер.
Тут без вариантов, ставим выбор trader.
4️⃣ Если вы являетесь физическим лицом, действующим в профессиональных целях (связанных с вашей торговлей, бизнесом, ремеслом или профессией), вы являетесь трейдером, и не имеет значения, предлагаете ли вы некоторые или все свои плагины бесплатно.
Если у нас только приложения (нет другого ремесла), мы получаем доход с них не в виде чаевых, то видимо, только трейдер.
Если вы создаете плагин в сотрудничестве с другими лицами, вы подаете декларацию как индивидуальный продавец, т. е. декларацию подает тот, кто загружает плагин.
К нам это не относится. Скорее к тем, кто работает в компании, а статус должен выбирать аккаунтхолдер.
Ещё из комментариев:
Вы по-прежнему можете продавать товары и услуги как частное лицо. Но с принятием нового закона ЕС клиенты будут проинформированы о том, что они, возможно, не ожидают такого же уровня защиты прав потребителей.
Вот этот пункт самый интересный. Возможно, в эпл будет баннер или плашка при покупке непосредственно в приложении. Если, например, текст в алерте, то ладно (может быть). Мы и так при выкладке приложения про встроенные покупки обязаны писать условия всегда и без вариантов.
Ещё есть инфа вот тут и вот тут.
Я бы ещё подождал информации от самих Apple и посмотрел на изменения внутри самого приложения AppStore (и алертов, связанных с покупками).
😃 iOS Dev
Вчера все разработчики получили не самое однозначное обновление аппстора.
Внимание, я не юрист, а разработчик, и информация ниже не является юридической консультацией или советом.
Эти изменения касаются не только аппстора, но и затрагивает другие диджитал-сервисы, например, jetbrains тоже писали.
Здесь и далее термин плагин для нас означает приложение.
Мне кажется, можно провести параллель. Вот из их примеров:
1️⃣ Если вы являетесь физическим лицом, действующим не в рамках своего бизнеса (не предприниматель), и предлагаете плагины бесплатно, вы можете быть квалифицированы как неторговец.
Проводим аналогию, бесплатно == нет прибыли, не торговец.
2️⃣ Если вы являетесь физическим лицом (разработчиком программного обеспечения), работающим в компании, но разрабатываете плагины в свободное время в качестве хобби, предлагаете их бесплатно и предоставляете пользователям средства для поддержки ваших разработок на добровольной основе (добровольный финансовый взнос), вы можете быть квалифицированы как неторговец.
Если фулл-тайм работаем, есть приложения, в которых чаевые (или другой вид саппорта), не торговец.
3️⃣ Если вы являетесь коммерческим юридическим лицом, независимо от того, являетесь ли вы частной или публичной компанией, вы будете напрямую квалифицированы как трейдер.
Тут без вариантов, ставим выбор trader.
4️⃣ Если вы являетесь физическим лицом, действующим в профессиональных целях (связанных с вашей торговлей, бизнесом, ремеслом или профессией), вы являетесь трейдером, и не имеет значения, предлагаете ли вы некоторые или все свои плагины бесплатно.
Если у нас только приложения (нет другого ремесла), мы получаем доход с них не в виде чаевых, то видимо, только трейдер.
Если вы создаете плагин в сотрудничестве с другими лицами, вы подаете декларацию как индивидуальный продавец, т. е. декларацию подает тот, кто загружает плагин.
К нам это не относится. Скорее к тем, кто работает в компании, а статус должен выбирать аккаунтхолдер.
Ещё из комментариев:
Вы по-прежнему можете продавать товары и услуги как частное лицо. Но с принятием нового закона ЕС клиенты будут проинформированы о том, что они, возможно, не ожидают такого же уровня защиты прав потребителей.
Вот этот пункт самый интересный. Возможно, в эпл будет баннер или плашка при покупке непосредственно в приложении. Если, например, текст в алерте, то ладно (может быть). Мы и так при выкладке приложения про встроенные покупки обязаны писать условия всегда и без вариантов.
Ещё есть инфа вот тут и вот тут.
Я бы ещё подождал информации от самих Apple и посмотрел на изменения внутри самого приложения AppStore (и алертов, связанных с покупками).
Please open Telegram to view this post
VIEW IN TELEGRAM