Структурированный параллелизм (structured concurrency) в Swift
Пообщался в твиттере с Тайбором (Tibor Bödecs), который ведёт свой блог о разработке и пишет полезные статьи. И решил поделиться с вами одной из них.
Верю, что у вас найдется время и возможность её прочесть и вынести для себя что-то полезное.
Прочитать статью по традиции можно тут.
Пообщался в твиттере с Тайбором (Tibor Bödecs), который ведёт свой блог о разработке и пишет полезные статьи. И решил поделиться с вами одной из них.
Верю, что у вас найдется время и возможность её прочесть и вынести для себя что-то полезное.
Прочитать статью по традиции можно тут.
Когда шутка вышла из-под контроля
Первого апреля завирусилась история, что Apple якобы выпускает сканер отпечатка пальца Touch ID отдельно.
🛠 А один из пользователей взял да и сделал собственный аксессуар.
Для этого ему, правда, пришлось разобрать клавиатуру Magic Keyboard, а затем, убрав все элементы - соединить сам сканер с оригинальной платой.
Но оно того стоило, а сам результат пусть и не в фирменном дизайне, можно посмотреть на фото 😉
Первого апреля завирусилась история, что Apple якобы выпускает сканер отпечатка пальца Touch ID отдельно.
🛠 А один из пользователей взял да и сделал собственный аксессуар.
Для этого ему, правда, пришлось разобрать клавиатуру Magic Keyboard, а затем, убрав все элементы - соединить сам сканер с оригинальной платой.
Но оно того стоило, а сам результат пусть и не в фирменном дизайне, можно посмотреть на фото 😉
Обновление приложения Apple Developer
Теперь можно будет использовать приложение Apple Developer iOS и iPadOS для продления своего аккаунта в программе Apple Developer Program, если сама регистрация была через web. Продление аккаунта будет осуществляться в виде автоматически возобновляемой подписки с поддержкой многих местных валют и способов оплаты.
P.S. Вероятнее всего, можно будет платить мобильным счётом, что в текущих условиях кажется выходом.🤔
Теперь можно будет использовать приложение Apple Developer iOS и iPadOS для продления своего аккаунта в программе Apple Developer Program, если сама регистрация была через web. Продление аккаунта будет осуществляться в виде автоматически возобновляемой подписки с поддержкой многих местных валют и способов оплаты.
P.S. Вероятнее всего, можно будет платить мобильным счётом, что в текущих условиях кажется выходом.🤔
This media is not supported in your browser
VIEW IN TELEGRAM
Пятничный туториал
Многие из нас делали змейку в универе или в качестве эксперимента. Но делали ли вы её, используя SwiftUI?
Mark Lucking, к слову, не только сделал, но и поделился шагами для реализации. Что у него получилось - можно прочесть здесь.
При этом он цитирует Конфуция, который не был программистом:
Скажи мне, и я забуду;
Покажи мне, и я запомню;
Сделай вместе со мной, и я пойму.
🛠 Код, который Марк разрешает использовать для своей собственной змейки — можно посмотреть по этой ссылке.
Многие из нас делали змейку в универе или в качестве эксперимента. Но делали ли вы её, используя SwiftUI?
Mark Lucking, к слову, не только сделал, но и поделился шагами для реализации. Что у него получилось - можно прочесть здесь.
При этом он цитирует Конфуция, который не был программистом:
Скажи мне, и я забуду;
Покажи мне, и я запомню;
Сделай вместе со мной, и я пойму.
🛠 Код, который Марк разрешает использовать для своей собственной змейки — можно посмотреть по этой ссылке.
Туториал по Core Data
Как признаётся автор, его основная цель заключается в том, чтобы показать, как Core Data работает под капотом, а не в решении какой-то конкретной задачи.
Реализация инкрементных и атомарных хранилищ - одна из увлекательных тем, которые необходимо изучить при погружении в Core Data.
Это отличная возможность расширить свое видение на разработку iOS и посмотреть со стороны, например, в роли создателя фреймворка.
Как признаётся автор, его основная цель заключается в том, чтобы показать, как Core Data работает под капотом, а не в решении какой-то конкретной задачи.
Реализация инкрементных и атомарных хранилищ - одна из увлекательных тем, которые необходимо изучить при погружении в Core Data.
Это отличная возможность расширить свое видение на разработку iOS и посмотреть со стороны, например, в роли создателя фреймворка.
В этом канале я также планирую делиться качественными опенсорсными решениями.
Сегодня вашему вниманию две либы для создания графиков (диаграмм и так далее).
Charts (CocoaPods/Carthage/Swift Package Manager)
⭐️ 25.2k
SwiftUICharts (SPM - минимальная версия Xcode 11 и iOS 13)
⭐️ 4.2k
Сегодня вашему вниманию две либы для создания графиков (диаграмм и так далее).
Charts (CocoaPods/Carthage/Swift Package Manager)
⭐️ 25.2k
SwiftUICharts (SPM - минимальная версия Xcode 11 и iOS 13)
⭐️ 4.2k
Ресурс, на котором можно сравнить среднее время проверки приложений
Иногда можно заглядывать на эту страницу, если вдруг появится вопрос, неужели у всех так долго? Или, например, а они вообще проверяют сейчас?
Сами же Apple заявляют, что в среднем 50% приложений рассматриваются в течение 24 часов, а более 90% - в течение 48 часов. Если ваша заявка неполная, время рассмотрения может еще больше затянуться или ваше приложение может быть отклонено.
Но мы можем и сами проверить!
Иногда можно заглядывать на эту страницу, если вдруг появится вопрос, неужели у всех так долго? Или, например, а они вообще проверяют сейчас?
Сами же Apple заявляют, что в среднем 50% приложений рассматриваются в течение 24 часов, а более 90% - в течение 48 часов. Если ваша заявка неполная, время рассмотрения может еще больше затянуться или ваше приложение может быть отклонено.
Но мы можем и сами проверить!
Всё, что нужно знать об утечках памяти
В статье c громким названием автор старается ответить на следующие вопросы.
— Что такое утечка памяти в iOS?
— Почему происходит утечка памяти?
— Из-за чего ARC не может освободить память?
— Утечки памяти в closure?
— Возможные решения.
— Некоторые особые сценарии (утечки памяти в синглтонах и статических классах).
— Closures без эскейпинга.
— Разница между weak и unowned памятью.
— Идентификация утечек с помощью отладчика.
— Некоторые правила.
👏 1.1K
@iOS Dev
В статье c громким названием автор старается ответить на следующие вопросы.
— Что такое утечка памяти в iOS?
— Почему происходит утечка памяти?
— Из-за чего ARC не может освободить память?
— Утечки памяти в closure?
— Возможные решения.
— Некоторые особые сценарии (утечки памяти в синглтонах и статических классах).
— Closures без эскейпинга.
— Разница между weak и unowned памятью.
— Идентификация утечек с помощью отладчика.
— Некоторые правила.
👏 1.1K
@iOS Dev
Какое там разрешение у iPhone 13 Pro Max?
Если вы иногда забываете, какие скриншоты нужны для App Store или ваш дизайнер, например, спрашивает, какое разрешение у Apple Watch, чтобы реализовать новое приложение, то могу порекомендовать крутой ресурс со сравнением девайсов по огромному количеству характеристик.
Устройства
iPhone, iPad, iPod Touch, Apple Watch, Apple TV.
В общем, достаточно один раз взглянуть, чтобы сохранить себе в закладки.
Кстати, тут есть наглядное сравнение, на каком девайсе какая максимальная ось, что может быть полезно, если вы поддерживаете широкую линейку устройств.
Если вы иногда забываете, какие скриншоты нужны для App Store или ваш дизайнер, например, спрашивает, какое разрешение у Apple Watch, чтобы реализовать новое приложение, то могу порекомендовать крутой ресурс со сравнением девайсов по огромному количеству характеристик.
Устройства
iPhone, iPad, iPod Touch, Apple Watch, Apple TV.
В общем, достаточно один раз взглянуть, чтобы сохранить себе в закладки.
Кстати, тут есть наглядное сравнение, на каком девайсе какая максимальная ось, что может быть полезно, если вы поддерживаете широкую линейку устройств.
Работа с Diffable data source и table views с использованием UIKit
🛠 В этом туториале автор приводит пример использования на примере таблицы с двумя секциями.
Несложное руководство, которое точно можно использовать в качестве знакомства и инструмента альтернативного подхода к созданию таблиц. Хотя не исключаю, что у вас оно уже давно в используется в проде)
📖Свой перевод статьи (уже по традиции) опубликовал тут.
🛠 В этом туториале автор приводит пример использования на примере таблицы с двумя секциями.
Несложное руководство, которое точно можно использовать в качестве знакомства и инструмента альтернативного подхода к созданию таблиц. Хотя не исключаю, что у вас оно уже давно в используется в проде)
📖Свой перевод статьи (уже по традиции) опубликовал тут.
А вы используете dump()?
Например, в данном случае print() выведет только имя класса.
А вот dump() покажет всю иерархию.
На самом деле, у него гораздо больше возможностей (и параметров).
value
Значение для вывода в целевой поток.
name
Метка, которую следует использовать при записи значения. По умолчанию используется nil.
indent
Количество пробелов, используемых в качестве отступа для каждой строки вывода. По умолчанию равно 0.
maxDepth
Максимальная глубина, на которую следует опускаться при записи содержимого значения, имеющего вложенные компоненты. По умолчанию Int.max.
maxItems
Максимальное количество элементов, для которых следует записывать всё содержимое. По умолчанию Int.max.
#dump #print
Например, в данном случае print() выведет только имя класса.
А вот dump() покажет всю иерархию.
На самом деле, у него гораздо больше возможностей (и параметров).
value
Значение для вывода в целевой поток.
name
Метка, которую следует использовать при записи значения. По умолчанию используется nil.
indent
Количество пробелов, используемых в качестве отступа для каждой строки вывода. По умолчанию равно 0.
maxDepth
Максимальная глубина, на которую следует опускаться при записи содержимого значения, имеющего вложенные компоненты. По умолчанию Int.max.
maxItems
Максимальное количество элементов, для которых следует записывать всё содержимое. По умолчанию Int.max.
#dump #print
Про мощь SF Symbols
Наверняка, многие из вас уже довольно давно используют SF Symbols.
Но использовали ли вы, например, foregroundStyle(), который позволяет добавлять градиенты индивидуальным компонентам внутри?
На скриншоте выше как раз пример использования этого подхода для символа
А ещё больше информации и возможностей можно узнать в этой статье.
Наверняка, многие из вас уже довольно давно используют SF Symbols.
Но использовали ли вы, например, foregroundStyle(), который позволяет добавлять градиенты индивидуальным компонентам внутри?
На скриншоте выше как раз пример использования этого подхода для символа
person.3.sequence.fill
А ещё больше информации и возможностей можно узнать в этой статье.
‼️Сбер Онлайн в App Store - всё.
Используйте веб-версию.
Вышло официальное заявление Сбербанка:
⚡️В связи с введенными санкциями с 12 апреля мобильное приложение СберБанк Онлайн на платформе iOS недоступно для скачивания и обновления в магазине App Store.
Для клиентов, у которых уже установлено приложение, нет поводов для волнений — все ранее установленные приложения работают, никаких ограничений по их использованию нет, удалять установленные приложения не нужно.
Кроме того, для проведения всех необходимых операций клиенты могут использовать веб-версию СберБанк Онлайн, которая адаптирована для мобильных устройств.
Используйте веб-версию.
Вышло официальное заявление Сбербанка:
⚡️В связи с введенными санкциями с 12 апреля мобильное приложение СберБанк Онлайн на платформе iOS недоступно для скачивания и обновления в магазине App Store.
Для клиентов, у которых уже установлено приложение, нет поводов для волнений — все ранее установленные приложения работают, никаких ограничений по их использованию нет, удалять установленные приложения не нужно.
Кроме того, для проведения всех необходимых операций клиенты могут использовать веб-версию СберБанк Онлайн, которая адаптирована для мобильных устройств.
Apple всё ещё следит за вами. Без вашего согласия
В текущей версии macOS Monterey, при каждом обновлении системы на системе, содержащей чип M1, такой же как и все новые блестящие/быстрые маки с ARM ("Apple Silicon"), процесс обновления обращается в Apple, чтобы получить специальную подпись загрузки, известную на жаргоне Apple как "билет" (он же ticket).
Это делается абсолютно незашифрованным способом, через стандартный открытый 80 порт HTTP (точно такой же протокол, который запрещен для использования сторонними разработчиками приложений в App Store при передаче приватных данных, таких как уникальные идентификаторы, служащие PII) на хост
А какую в себе опасность это несёт - поделился здесь.
В текущей версии macOS Monterey, при каждом обновлении системы на системе, содержащей чип M1, такой же как и все новые блестящие/быстрые маки с ARM ("Apple Silicon"), процесс обновления обращается в Apple, чтобы получить специальную подпись загрузки, известную на жаргоне Apple как "билет" (он же ticket).
Это делается абсолютно незашифрованным способом, через стандартный открытый 80 порт HTTP (точно такой же протокол, который запрещен для использования сторонними разработчиками приложений в App Store при передаче приватных данных, таких как уникальные идентификаторы, служащие PII) на хост
gs.apple.com
.А какую в себе опасность это несёт - поделился здесь.
This media is not supported in your browser
VIEW IN TELEGRAM
Мне сложно в это поверить, но мы преодолели рубеж в 500 человек 🥳🥳🥳
Для меня это очень важно, и я хочу сказать спасибо каждому из вас за то, что вы здесь.
Как и прежде, я продолжу писать о разных интересных вещах из нашей с вами области разработки.
Кроме этого, конечно, продолжу делиться кодом (как говорится, лучше раз попробовать, чем 100 раз увидеть), а также какими-то необычными подходами.
Кстати, если вам понравилась анимация, то она сделана не в стороннем редакторе, а на Swift, а сам проект доступен здесь (в качестве картинки Spark можете использовать любую.
Верю, что кому-то из вас пригодятся эти знания, а про сам CAEmitterLayer постараюсь потом написать отдельно.
Для меня это очень важно, и я хочу сказать спасибо каждому из вас за то, что вы здесь.
Как и прежде, я продолжу писать о разных интересных вещах из нашей с вами области разработки.
Кроме этого, конечно, продолжу делиться кодом (как говорится, лучше раз попробовать, чем 100 раз увидеть), а также какими-то необычными подходами.
Кстати, если вам понравилась анимация, то она сделана не в стороннем редакторе, а на Swift, а сам проект доступен здесь (в качестве картинки Spark можете использовать любую.
Верю, что кому-то из вас пригодятся эти знания, а про сам CAEmitterLayer постараюсь потом написать отдельно.
This media is not supported in your browser
VIEW IN TELEGRAM
Необычная анимация, эмулирующая поведение Wallet
Разработчик постарался полностью повторить поведение эффекта для Apple Pay без сторонних зависимостей.
Используется CMMotionManager, поэтому особенно круто это анимация выглядит в движении.
Впрочем, попробуйте сами собрать проект и понаклонять девайс.
#animation
Разработчик постарался полностью повторить поведение эффекта для Apple Pay без сторонних зависимостей.
Используется CMMotionManager, поэтому особенно круто это анимация выглядит в движении.
Впрочем, попробуйте сами собрать проект и понаклонять девайс.
#animation
Про визуализацию графа билда
Как известно, встроенных инструментов этого в Xcode нет. Выше я рассказывал о простом способе для измерения времени, но к сожалению, сам лог мало о чём говорит, хотя его и можно попробовать разобрать вручную.
Вчера в сессии вопросов-ответов с Михаилом Рубановым (iOS Mobile Head в Dodo Engineering) посчастливилось выиграть промокод на его продукт, о котором он рассказывал в своей статье на хабре.
Так вот, очень полезная штука, скажу я вам, наглядно видно, какой модуль сколько занимает по времени, порядок этих самых модулей, да ещё и зависимости.
Плюс можно отфильтровать настройки, и измерить влияние каждого из модулей на общее время.
Моё пожелание — сделать отчёты более наглядными, улучшить макродизайн. В общем, чтобы этот отчёт можно было показать менеджерам, объясняя, почему нам нужно время на рефакторинг (если вы понимаете, о чём я 😏).
Михаил делится триалом, чтобы продуктом можно было попользоваться пару месяцев и решить, стоит ли его покупать.
Как известно, встроенных инструментов этого в Xcode нет. Выше я рассказывал о простом способе для измерения времени, но к сожалению, сам лог мало о чём говорит, хотя его и можно попробовать разобрать вручную.
Вчера в сессии вопросов-ответов с Михаилом Рубановым (iOS Mobile Head в Dodo Engineering) посчастливилось выиграть промокод на его продукт, о котором он рассказывал в своей статье на хабре.
Так вот, очень полезная штука, скажу я вам, наглядно видно, какой модуль сколько занимает по времени, порядок этих самых модулей, да ещё и зависимости.
Плюс можно отфильтровать настройки, и измерить влияние каждого из модулей на общее время.
Моё пожелание — сделать отчёты более наглядными, улучшить макродизайн. В общем, чтобы этот отчёт можно было показать менеджерам, объясняя, почему нам нужно время на рефакторинг (если вы понимаете, о чём я 😏).
Михаил делится триалом, чтобы продуктом можно было попользоваться пару месяцев и решить, стоит ли его покупать.