По компаниям: самой щедрой компанией считается Авито — медиана 351 000 ₽. Также в пятерке лидеров — Райффайзенбанк, Холдинг Т1, Иннотех и VK.
🔗 Вся статистика доступна на хабре.
💰 Сравнить динамику можно с этим постом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышло мощнейшее интервью с Крисом Латтнером
Такие видео появляются крайне редко. Поэтому если у вас найдется время, обязательно постарайтесь взглянуть на диалог с создателем Swift, LLVM, Clang и других продуктов.
Интересно, что Крис отвечает не только на очевидные вопросы, но и делится инсайдами, а также рассказывает, как проект из потенциально интересного лишь паре сотен человек с 2010 до 2016 года прошел огромный путь и стал опенсорсным. Кстати, затрагиваются и интересные моменты, когда приходилось рассказывать профессионалам с годами опыта на Objective-C о преимуществах нового языка и какие сложности были на этом пути.
📺 Сохраняйте видео, чтобы посмотреть на ответы и комментарии одного из самых знаковых программистов нашего поколения.
😃 iOS Dev
Такие видео появляются крайне редко. Поэтому если у вас найдется время, обязательно постарайтесь взглянуть на диалог с создателем Swift, LLVM, Clang и других продуктов.
Интересно, что Крис отвечает не только на очевидные вопросы, но и делится инсайдами, а также рассказывает, как проект из потенциально интересного лишь паре сотен человек с 2010 до 2016 года прошел огромный путь и стал опенсорсным. Кстати, затрагиваются и интересные моменты, когда приходилось рассказывать профессионалам с годами опыта на Objective-C о преимуществах нового языка и какие сложности были на этом пути.
📺 Сохраняйте видео, чтобы посмотреть на ответы и комментарии одного из самых знаковых программистов нашего поколения.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
I Interviewed The Creator Of LLVM, Clang, Swift, and Mojo
Recorded live on twitch, GET IN
### Guests
Chris Lattner
https://x.com/clattner_llvm?s=21&t=-sv4MdpmLrRuMIhARbLk-g
https://www.modular.com
TJ DeVries
https://youtube.com/@teej_dv?si=AIrpF3SWJYZqlboU
### My Stream
https://twitch.tv/ThePrimeagen
###…
### Guests
Chris Lattner
https://x.com/clattner_llvm?s=21&t=-sv4MdpmLrRuMIhARbLk-g
https://www.modular.com
TJ DeVries
https://youtube.com/@teej_dv?si=AIrpF3SWJYZqlboU
### My Stream
https://twitch.tv/ThePrimeagen
###…
❤🔥26 12👍7🤩4💯3 3🔥2☃1🆒1
Как решить проблему missing package product
🔨 Один из самых неприятных багов в Xcode возникает, когда случайно удаляется файл
Это возможно, например, при изменении веток в гите, а в зависимости от размера проекта — таких ошибок могут быть десятки (иногда даже сотни).
Большинство возможных решений на форумах сводятся к магической комбинации очистки проекта (
📖 Все это занимает время, но Джесси Сквайрс советует проверить настройки git, или даже автоматизировать это с помощью Makefile.
📖 Напомню, что в канале есть разбор того, почему загрузка пакетов с помощью Swift Package Manager занимает слишком много времени.
А про основы Git для iOS-разработчиков можно почитать вот тут.
✅ И, конечно, подписывайтесь на iOS IQ — там ещё больше полезного контента.
😃 iOS Dev
Package.resolved
, что и приводит к ошибке missing package product
.Это возможно, например, при изменении веток в гите, а в зависимости от размера проекта — таких ошибок могут быть десятки (иногда даже сотни).
Большинство возможных решений на форумах сводятся к магической комбинации очистки проекта (
cmd-shift-K
), удаления DerivedData/
, или использования File > Packages > Reset Package Caches
(или закрытия и повторного открытия Xcode). 📖 Все это занимает время, но Джесси Сквайрс советует проверить настройки git, или даже автоматизировать это с помощью Makefile.
📖 Напомню, что в канале есть разбор того, почему загрузка пакетов с помощью Swift Package Manager занимает слишком много времени.
А про основы Git для iOS-разработчиков можно почитать вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Миграция проекта на Swift 6: неполное руководство
Наверняка, многие проходили несколько итераций апгрейда кодовой базы (кто-то даже с Objective-C, и до сих пор какой-то процент кода может быть написан на нём и в ваших текущих проектах).
Задача миграции всегда стоит особняком, это кропотливая, тяжёлая и совсем не быстрая работа, а одна из сложностей при оптимизации — показать ценность для бизнеса. Бывает непросто объяснить, почему нам нужно что-то менять, если и так всё работает. Но иногда это просто необходимо.
Конечно, при переходе на Swift 6 могут быть проблемы, да и что говорить, часто мы не всё можем контролить напрямую (те же зависимости CocoaPods или SPM), поэтому приходится искать варианты.
📖 В этом материале есть ответы на вопросы, возникающие при миграции, разбор ошибок и даже описание багов в самом Swift.
📖 А шаги, которые можно предпринять уже сейчас — описаны в этом посте.
😃 iOS Dev
Наверняка, многие проходили несколько итераций апгрейда кодовой базы (кто-то даже с Objective-C, и до сих пор какой-то процент кода может быть написан на нём и в ваших текущих проектах).
Задача миграции всегда стоит особняком, это кропотливая, тяжёлая и совсем не быстрая работа, а одна из сложностей при оптимизации — показать ценность для бизнеса. Бывает непросто объяснить, почему нам нужно что-то менять, если и так всё работает. Но иногда это просто необходимо.
Конечно, при переходе на Swift 6 могут быть проблемы, да и что говорить, часто мы не всё можем контролить напрямую (те же зависимости CocoaPods или SPM), поэтому приходится искать варианты.
📖 В этом материале есть ответы на вопросы, возникающие при миграции, разбор ошибок и даже описание багов в самом Swift.
📖 А шаги, которые можно предпринять уже сейчас — описаны в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Способы проверки доступности новой версии приложения в AppStore
У многих пользователей может быть выключена опция автообновления, но часто нам необходимо как-то сообщить, что наше приложение пора обновлять. Что делать?
Пол Пиелла делится двумя популярными способами в своей статье:
1. Использовать iTunes Lookup:
Вариант, который можно использовать не только для получения версии, но и для других параметров.
2. Использовать App Store Connect API
Можно использовать свою обёртку или использовать SDK, которую, например, я применил для Starly.
3. От себя бы я добавил, что весьма популярный способ — держать файл с обновлениями где-то ещё (или иметь собственное API для запроса актуальной версии в сторе).
4. Можно использовать ещё Firebase Remote Config (по сути повторение третьего способа, просто от Google).
После того, как мы получим данные приложения, сравнить новую версию можно с локальной:
Если вы знаете другие способы (может быть, более элегантные), поделитесь, пожалуйста, в комментариях.
😃 iOS Dev
У многих пользователей может быть выключена опция автообновления, но часто нам необходимо как-то сообщить, что наше приложение пора обновлять. Что делать?
Пол Пиелла делится двумя популярными способами в своей статье:
1. Использовать iTunes Lookup:
Вариант, который можно использовать не только для получения версии, но и для других параметров.
import Foundation
struct LookUpResponse: Decodable {
let results: [LookUpResult]
struct LookUpResult: Decodable {
let version: String
let minimumOsVersion: String
let trackViewUrl: URL
}
}
struct LatestAppStoreVersion {
let version: String
let minimumOsVersion: String
let upgradeURL: URL
}
final class LookUpAPI {
private let session: URLSession
private let jsonDecoder: JSONDecoder
init(session: URLSession = .shared, jsonDecoder: JSONDecoder = .init()) {
self.session = session
self.jsonDecoder = jsonDecoder
}
func getLatestAvailableVersion(for appID: String) async throws -> LatestAppStoreVersion? {
let url = URL(string: "https://itunes.apple.com/lookup?appId=\(appID)")!
let request = URLRequest(url: url)
let (data, _) = try await session.data(for: request)
let response = try jsonDecoder.decode(LookUpResponse.self, from: data)
print(response)
return response.results.first.map {
.init(version: $0.version,
minimumOsVersion: $0.minimumOsVersion,
upgradeURL: $0.trackViewUrl)
}
}
}
2. Использовать App Store Connect API
Можно использовать свою обёртку или использовать SDK, которую, например, я применил для Starly.
3. От себя бы я добавил, что весьма популярный способ — держать файл с обновлениями где-то ещё (или иметь собственное API для запроса актуальной версии в сторе).
4. Можно использовать ещё Firebase Remote Config (по сути повторение третьего способа, просто от Google).
После того, как мы получим данные приложения, сравнить новую версию можно с локальной:
extension LatestAppStoreVersion {
var shouldUpdate: Bool {
guard let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else {
return false
}
let systemVersion = ProcessInfo().operatingSystemVersion
let versionString = "\(systemVersion.majorVersion).\(systemVersion.minorVersion).\(systemVersion.patchVersion)"
let isRemoteVersionHigherThanLocal = currentVersion.compare(self.version, options: .numeric) == .orderedAscending
let isSystemVersionAllowed = versionString.compare(self.minimumOsVersion, options: .numeric) == .orderedDescending
return isRemoteVersionHigherThanLocal && isSystemVersionAllowed
}
}
Если вы знаете другие способы (может быть, более элегантные), поделитесь, пожалуйста, в комментариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Компилятор Swift: архитектура, оптимизации, флаги, ресурсы
Конечно, любой компилятор отвечает за трансляцию исходного кода в эффективный исполняемый машинный код. Но компилятор Swift поддерживает и множество других инструментов (далеко не только подсветка синтаксиса).
Я уже писал небольшую статью с разбором. Пришло время расширить её вопросами и дополнить другими важными источниками.
✅ Доступ уже можно получить на бусти и в телеграм-боте (можно даже на год).
Кстати, на хабре есть великолепный разбор устройства компилятора, который стоит добавить в закладки:
📖 Устройство компилятора Swift. Часть 1 (общий обзор компонентов).
📖 Устройство компилятора Swift. Часть 2 (разбор частей, отвечающих за анализ исходного кода).
📖 Устройство компилятора Swift. Часть 3 (разбор Swift Intermediate Language).
📖 Устройство компилятора Swift. Часть 4 (генерация LLVM IR из AST и что выдаёт настоящий фронтенд).
😃 iOS Dev
Конечно, любой компилятор отвечает за трансляцию исходного кода в эффективный исполняемый машинный код. Но компилятор Swift поддерживает и множество других инструментов (далеко не только подсветка синтаксиса).
Я уже писал небольшую статью с разбором. Пришло время расширить её вопросами и дополнить другими важными источниками.
🧠 Что вы получите, подписавшись сегодня:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки✅ А также доступ в закрытый чат, ранние релизы приложения iOS IQ, тонну теории и многое другое.
Кстати, на хабре есть великолепный разбор устройства компилятора, который стоит добавить в закладки:
📖 Устройство компилятора Swift. Часть 1 (общий обзор компонентов).
📖 Устройство компилятора Swift. Часть 2 (разбор частей, отвечающих за анализ исходного кода).
📖 Устройство компилятора Swift. Часть 3 (разбор Swift Intermediate Language).
📖 Устройство компилятора Swift. Часть 4 (генерация LLVM IR из AST и что выдаёт настоящий фронтенд).
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор Grid View в SwiftUI: LazyVGrid, LazyHGrid, Grid, GridRow
Для создания нужного лэйаута в SwiftUI можно использовать
Начиная с iOS 16, нам также доступен вариант создания Grid с использованием
📖 В этой статье разбираются не только виды лэйаутов, но и опции кастомизации, включая интервалы, выравнивание и многое другое.
😃 iOS Dev
Для создания нужного лэйаута в SwiftUI можно использовать
LazyVGrid
, если нужно вертикальное отображение, и LazyHGrid
(если горизонтальное). Тем самым мы сможем добиться нужного эффекта, при этом адаптируемого к различным ориентациям и размерам экрана.Начиная с iOS 16, нам также доступен вариант создания Grid с использованием
GridRow
.📖 В этой статье разбираются не только виды лэйаутов, но и опции кастомизации, включая интервалы, выравнивание и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
Async await в Swift: набор инструментов
📖 В блоге Emerge Tools вышла объёмная статья, в которой рассмотрено множество методов из
Из важного: для каждого инструмента приведены примеры кода и рассмотрена теория.
😃 iOS Dev
📖 В блоге Emerge Tools вышла объёмная статья, в которой рассмотрено множество методов из
Swift Concurrency
. Из важного: для каждого инструмента приведены примеры кода и рассмотрена теория.
Больше материалов по Swift Concurrency:
🔗 Практические решения проблем с помощью Swift Concurrency
🔗 Изучение Swift Concurrency за 2 часа
🔗 Task и structured concurrency в swift (серия статей на хабре)
🔗 Swift Concurrency — вещи, о которых вам не говорят✅ В приложении доступен целый блок вопросов (который будет расширяться).🧠 А на бусти и в боте вы можете познакомиться с реальными задачами и кейсами использования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Загрузка UIImage с диска: разбор сценариев и импакт на память
🔼 Конечно, потребление памяти может расти очень быстро, если грузить большое количество изображений.
Важно определиться, что именно нам нужно хранить в памяти: насколько часто мы показываем картинки, нужна ли предварительная обработка и так далее.
На основе этого уже можно принимать решение, как именно стоит работать с картинками, и нужен ли, например, тут кэш.
📖 Антуан в своей статье описал несколько таких сценариев и привёл пример использования кэширования в этих ситуациях.
😃 iOS Dev
Важно определиться, что именно нам нужно хранить в памяти: насколько часто мы показываем картинки, нужна ли предварительная обработка и так далее.
На основе этого уже можно принимать решение, как именно стоит работать с картинками, и нужен ли, например, тут кэш.
📖 Антуан в своей статье описал несколько таких сценариев и привёл пример использования кэширования в этих ситуациях.
📖 А в этом посте вы можете узнать некоторые причины и способы правкиout of memory exception
при работе с изображениями.
📖 Кстати, вот тут можно почитать про эффективный способ загрузки больших изображений в основном потоке.
Больше интересных кейсов и ситуаций доступно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Развёрнутый гайд по работе с App Store Connect API
Выполнение действий вручную на сайте App Store Connect, вероятно, наиболее распространенный способ для разработчиков управлять и отслеживать состояние приложений в App Store.
Но некоторые задачи могут занимать неоправданно много времени, поскольку для их выполнения нужно постоянно повторять одни и те же действия. Да и не всегда сайт показывает корректное описание ошибок (при заливке скриншотов, например).
Вот библиотеки, которые могут помочь при работе с App Store Connect API:
🔗 appstoreconnect-swift-sdk (c её помощью я написал собственное решение для управления отзывами и частичной автоматизации обновлений в аппсторе)
🔗 Bagbutik
🔗 asc-swift
Ниже перечислил статьи, демонстрирующие способы создания собственных средств автоматизации с помощью App Store Connect API
1️⃣ Как отправлять запросы к App Store Connect API.
2️⃣ Расчет среднего рейтинга отзывов.
3️⃣ Работа с provisioning profiles.
4️⃣ Создание и удаление сертификатов.
Кстати, если вы хотите узнать, что скрывается за сертификатами для Code Signing, в канале есть общий пост, а здесь большой разбор.
✅ Например, вы можете узнать подробнее про понятия .der и .pem, цепочку доверия, Certificate signing request, что происходит при переподписывании кода в App Store и многое другое.
😃 iOS Dev
Выполнение действий вручную на сайте App Store Connect, вероятно, наиболее распространенный способ для разработчиков управлять и отслеживать состояние приложений в App Store.
Но некоторые задачи могут занимать неоправданно много времени, поскольку для их выполнения нужно постоянно повторять одни и те же действия. Да и не всегда сайт показывает корректное описание ошибок (при заливке скриншотов, например).
Вот библиотеки, которые могут помочь при работе с App Store Connect API:
Ниже перечислил статьи, демонстрирующие способы создания собственных средств автоматизации с помощью App Store Connect API
1️⃣ Как отправлять запросы к App Store Connect API.
2️⃣ Расчет среднего рейтинга отзывов.
3️⃣ Работа с provisioning profiles.
4️⃣ Создание и удаление сертификатов.
Кстати, если вы хотите узнать, что скрывается за сертификатами для Code Signing, в канале есть общий пост, а здесь большой разбор.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Swift Translation API: примеры реализации
Для перевода до анонса этого фреймворка в пет-проектах я использовал или Google Translate API, или DeepL (знаю, что многие юзают решение от OpenAI).
📶 Но для них нужно интернет-соединение (что логично), и деньги (DeepL, например, имеет премиум-акк, на котором нужно платить за объём знаков).
Поэтому анонс решения Apple выглядит криптонитом для многих проектов, и одновременно возможностью реализации своих решений.
Посмотрим, что будет после выхода в прод, будет ли перевод на платную модель, как с Weather API или оставят все фичи, как есть.
📖 А уже сейчас можно посмотреть на пример создания приложений с новым фреймворком и почитать прекрасный разбор API здесь.
😃 iOS Dev
Для перевода до анонса этого фреймворка в пет-проектах я использовал или Google Translate API, или DeepL (знаю, что многие юзают решение от OpenAI).
📶 Но для них нужно интернет-соединение (что логично), и деньги (DeepL, например, имеет премиум-акк, на котором нужно платить за объём знаков).
Поэтому анонс решения Apple выглядит криптонитом для многих проектов, и одновременно возможностью реализации своих решений.
Посмотрим, что будет после выхода в прод, будет ли перевод на платную модель, как с Weather API или оставят все фичи, как есть.
📖 А уже сейчас можно посмотреть на пример создания приложений с новым фреймворком и почитать прекрасный разбор API здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22 10👍5💯2☃1⚡1✍1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Анимации в SwiftUI — подборка репозиториев на Github
Реализация эффектов в приложениях может быть и интересной, и сложной задачей одновременно.
В этой подборке добавил несколько популярных репозиториев на Github, где можно посмотреть на анимации и поискать вдохновение:
🔗 Open SwiftUI Animations — 4 000⭐
🔗 SwiftUI-Animations — 1 800⭐
🔗 kavsoft-swiftui-animations — 460⭐
😃 iOS Dev
Реализация эффектов в приложениях может быть и интересной, и сложной задачей одновременно.
В этой подборке добавил несколько популярных репозиториев на Github, где можно посмотреть на анимации и поискать вдохновение:
🔗 Open SwiftUI Animations — 4 000
🔗 SwiftUI-Animations — 1 800
🔗 kavsoft-swiftui-animations — 460
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерны навигации в SwiftUI
NavigationStack улучшил навигацию, обеспечив динамическую и программную маршрутизацию, вместе с тем появились способы централизации маршрутов для всего приложения.
📖 В этой статье рассмотрены общие варианты навигации, которые можно использовать при создании приложений:
🔘 Базовая навигация при использовании List
🔘 Динамическая программная маршрутизация
🔘 Глобальная маршрутизация в SwiftUI
🔘 Реализация навигации c использованием Environment Values.
🔘 Реализация навигации для TabView.
📖 А вот тут можно почитать про особенности NavigationPath, принципы работы и отличия от UINavigationController в UIKit.
😃 iOS Dev
NavigationStack улучшил навигацию, обеспечив динамическую и программную маршрутизацию, вместе с тем появились способы централизации маршрутов для всего приложения.
📖 В этой статье рассмотрены общие варианты навигации, которые можно использовать при создании приложений:
🔘 Базовая навигация при использовании List
🔘 Динамическая программная маршрутизация
🔘 Глобальная маршрутизация в SwiftUI
🔘 Реализация навигации c использованием Environment Values.
🔘 Реализация навигации для TabView.
📖 А вот тут можно почитать про особенности NavigationPath, принципы работы и отличия от UINavigationController в UIKit.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё один шаг вперёд
При изучении новой темы сложнее всего возвращаться к ней в случае, когда область неизведанного кажется непреодолимой, когда кажется, что с первого взгляда задачи не то что решить, а даже понять невозможно.
К такому можно отнести работу с криптографией, для кого-то многопоточку, а для кого-то сложную вёрстку.
Когда я делал приложение, то изначально преследовал две цели: во-первых, заюзать как можно больше фишек из новых версий iOS, во-вторых, что гораздо более прозаично — сделать инструмент, который будет интересно не только изучать, но и соревноваться.
Саморазвитие через дополнительные задачи может казаться не лучшим времяпрепровождением, особенно, когда результат неясен, а область сама по себе размыта.
Но оно жизненно необходимо, ведь умение тренировать переполненный мозг — это большая проблема современного общества эпохи тик-тока, рилсов, шортсов.
Когда-то я читал любопытное мнение, что программист переходит на новый уровень, когда изучает второй язык. Мне оно кажется справедливым (и может пригодиться в неожиданные моменты).
Этот канал — способ поделиться самыми разными областями знаний мобильного сообщества.
🎆 Сегодня я хотел бы анонсировать новый раздел для тех, кто саппортит развитие канала.
Кроме подборок материалов по Metal, я буду делиться и своими опытами, пусть не всегда удачными или «правильными», но совершенно точно необычными.
✅ Сделайте ещё один шаг вперёд уже сегодня, подпишитесь на бусти или в телеграме (код шейдера с видео уже там).
😃 iOS Dev
При изучении новой темы сложнее всего возвращаться к ней в случае, когда область неизведанного кажется непреодолимой, когда кажется, что с первого взгляда задачи не то что решить, а даже понять невозможно.
К такому можно отнести работу с криптографией, для кого-то многопоточку, а для кого-то сложную вёрстку.
Когда я делал приложение, то изначально преследовал две цели: во-первых, заюзать как можно больше фишек из новых версий iOS, во-вторых, что гораздо более прозаично — сделать инструмент, который будет интересно не только изучать, но и соревноваться.
Саморазвитие через дополнительные задачи может казаться не лучшим времяпрепровождением, особенно, когда результат неясен, а область сама по себе размыта.
Но оно жизненно необходимо, ведь умение тренировать переполненный мозг — это большая проблема современного общества эпохи тик-тока, рилсов, шортсов.
Когда-то я читал любопытное мнение, что программист переходит на новый уровень, когда изучает второй язык. Мне оно кажется справедливым (и может пригодиться в неожиданные моменты).
Этот канал — способ поделиться самыми разными областями знаний мобильного сообщества.
Кроме подборок материалов по Metal, я буду делиться и своими опытами, пусть не всегда удачными или «правильными», но совершенно точно необычными.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Одна из наиболее приятных (если не топовых) фич в новом Xcode — новая возможность рефакторинга (и не только).
Например, можно буквально за пару секунд скопировать любой кусок кода и создать из этого файл с помощью хоткея для вставки.
При этом Xcode ещё и сам подберёт и задаст подходящее название (например, как на гифке).
Please open Telegram to view this post
VIEW IN TELEGRAM
Барбара Лисков — об абстракции данных и ООП
Барбара — профессор MIT, автор языков Клу и Argus, лауреат премии Тьюринга, и вы все наверняка её знаете из-за изучения SOLID.
Рекомендую посмотреть интересное видео, в котором Барбара отвечает на необычные вопросы не только о прошлом, но и о будущем ООП. А ещё затрагивает технические нюансы принципа подстановки Лисков в контексте SOLID.
🤩 Ведь как известно, лучше всего — получать ответы на свои вопросы из первоисточников.
😃 iOS Dev
Барбара — профессор MIT, автор языков Клу и Argus, лауреат премии Тьюринга, и вы все наверняка её знаете из-за изучения SOLID.
Рекомендую посмотреть интересное видео, в котором Барбара отвечает на необычные вопросы не только о прошлом, но и о будущем ООП. А ещё затрагивает технические нюансы принципа подстановки Лисков в контексте SOLID.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
MIT Professor on Data Abstraction & Object-Oriented Programming
Barbara Liskov, MIT EECS Institute Professor: https://www.csail.mit.edu/person/barbara-liskov
Programming Methodology Group: https://pmg.csail.mit.edu
Videographer: Mike Grimmett
Director: Rachel Gordon
PA: Alex Shipps
Programming Methodology Group: https://pmg.csail.mit.edu
Videographer: Mike Grimmett
Director: Rachel Gordon
PA: Alex Shipps
В iOS IQ добавлен новый раздел с практическими вопросами по работе с массивами.
Не всегда операции над ними очевидны, а некоторые могут вызвать сложности даже у продвинутых разработчиков.
Кроме этого, в отдельной секции внутри уникальной базы знаний уже сегодня доступны:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки
Также вы получите доступ в закрытый чат, ранние релизы приложения iOS IQ, тонну теории, разбор крутых эффектов и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Navigation: инструменты навигации от PointFree
PointFree выкатили в опенсорс либу Swift Navigation — набор мощных инструментов для всех платформ Swift (в качестве вдохновения использовались принципы SwiftUI).
С помощью библиотеки можно управлять навигацией в SwiftUI, UIKit и AppKit. Более того, её можно использовать и для платформ, отличных от Apple, таких как Windows, Linux, Wasm и т.д..
🛠 Инструментарий уже доступен на GitHub (1 800⭐ )
Примеры работы доступны здесь:
📖 Case Studies — коллекция примеров SwiftUI и UIKit, демонстрирующих API этой библиотеки.
📖 Inventory — многоэкранное приложение со списками, всплывающими окнами и алертами.
😃 iOS Dev
PointFree выкатили в опенсорс либу Swift Navigation — набор мощных инструментов для всех платформ Swift (в качестве вдохновения использовались принципы SwiftUI).
С помощью библиотеки можно управлять навигацией в SwiftUI, UIKit и AppKit. Более того, её можно использовать и для платформ, отличных от Apple, таких как Windows, Linux, Wasm и т.д..
🛠 Инструментарий уже доступен на GitHub (1 800
Примеры работы доступны здесь:
📖 Case Studies — коллекция примеров SwiftUI и UIKit, демонстрирующих API этой библиотеки.
📖 Inventory — многоэкранное приложение со списками, всплывающими окнами и алертами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16 8👍4❤🔥2👏2🎉1🤩1💯1🆒1
Как решить проблему с констрэинтами или как быть с ошибками вида «will attempt to recover by breaking constraint»?
Многие уже используют SwiftUI в проде или пет-проектах. Несмотря на это, UIKit никуда не уходит, а проблемы с автолэйаутом встречаются довольно часто.
Хотел бы напомнить про трюк, а если быть точнее, мастхэв-навык при поиске подобных проблемных вьюх с помощью стандартных инструментов Xcode.
Если вы встретите такую ошибку (или её вариации):
Запустите View Debugger и вставьте айдишник проблемной вьюхи в поле поиска слева внизу. Xcode автоматически подсветит её и уже после вы спокойно сможете устранить эту проблему.
⭐️ А ещё есть полезнейший сайт, который часто может помочь в таких ситуациях.
⭐️ Кстати, в базе знаний я делюсь своим опытом, и стараюсь наполнять разные разделы, один из которых — разбор различных проблем в разработке.
😃 iOS Dev
Многие уже используют SwiftUI в проде или пет-проектах. Несмотря на это, UIKit никуда не уходит, а проблемы с автолэйаутом встречаются довольно часто.
Хотел бы напомнить про трюк, а если быть точнее, мастхэв-навык при поиске подобных проблемных вьюх с помощью стандартных инструментов Xcode.
Если вы встретите такую ошибку (или её вариации):
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xb82d450 H:[UIButton:0xb82ad50]-(NSSpace(20))-| (Names: '|':UIView:0xb82f360 )>
Запустите View Debugger и вставьте айдишник проблемной вьюхи в поле поиска слева внизу. Xcode автоматически подсветит её и уже после вы спокойно сможете устранить эту проблему.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как автоматически обнаруживать утечки памяти с помощью UI-тестов
📖 Пол Пиелла написал отличную развёрнутую статью о том, как можно юзать функциональность, доступную нам аж с Xcode 13 (тогда появилась опция xcodebuild, генерирующая memory graph всякий раз, когда фэйлится тест XCTMemoryMetrics).
Эта фича так и осталась незамеченной многими, хотя при правильном использовании это мощнейший инструмент для обнаружения утечек памяти в приложениях.
Саму статью можно разбить на несколько важных частей:
1️⃣ Написание самого теста, чекающего использование памяти.
2️⃣ Генерация memory graph.
3️⃣ Разбор результатов и анализ графа.
Тут пригодится ещё один материал про разбор содержимого XCResult.
✅ Напомню, что в ноушне есть целый раздел по теории и вопросы по управлению памятью (в том числе и про шаги для предотвращения утечек).
😃 iOS Dev
📖 Пол Пиелла написал отличную развёрнутую статью о том, как можно юзать функциональность, доступную нам аж с Xcode 13 (тогда появилась опция xcodebuild, генерирующая memory graph всякий раз, когда фэйлится тест XCTMemoryMetrics).
Эта фича так и осталась незамеченной многими, хотя при правильном использовании это мощнейший инструмент для обнаружения утечек памяти в приложениях.
Саму статью можно разбить на несколько важных частей:
1️⃣ Написание самого теста, чекающего использование памяти.
2️⃣ Генерация memory graph.
3️⃣ Разбор результатов и анализ графа.
Тут пригодится ещё один материал про разбор содержимого XCResult.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё одно приятное нововведение в Xcode 16
🚀 Теперь в ассетах можно найти все места в проекте, где используется картинка за пару мгновений.
Использование:
Легко можно найти лишние ресурсы + избежать потенциальных опечаток (ну и сэкономить немного времени).
😃 iOS Dev
Использование:
щелчок правой кнопкой мыши + Find References to Item
.Легко можно найти лишние ресурсы + избежать потенциальных опечаток (ну и сэкономить немного времени).
Please open Telegram to view this post
VIEW IN TELEGRAM