
macOS *
Настольная ОС компании Apple
Протокольно-ориентированное программирование в Swift 5.1
В этом руководстве мы представим вам подход к разработке приложений, называемый «протокольно-ориентированным программированием», который стал практически основным в Swift. Это действительно то, что вам необходимо уяснить при изучении Swift!
В этом руководстве вы:
- поймёте разницу между объектно-ориентированным и протокольно-ориентированным программированием;
- разберётесь со стандартной реализаций протоколов;
- научитесь расширять функционал стандартной библиотеки Swift;
- узнаете, как расширять протоколы при помощи дженериков.
Использование перехватов операций для бэкапа файлов в macOS “на лету”

Visual Studio for Mac: управляйте своей IDE с помощью клавиш
Если вы вдруг дадите виртуозному пианисту пианино, где клавиши вдвое шире, а клавиши диез/бемоль находятся ниже, а не выше естественных клавиш, то ему придется постараться, чтобы воспроизвести даже самые простые мелодии, пока он изучает новую аранжировку. Аналогично, когда речь заходит о сочетаниях клавиш в вашей любимой IDE, любое изменение может быстро дезориентировать. К счастью, Visual Studio for Mac предлагает обширные возможности настраивания привязок клавиш, которые позволяют настраивать сочетания клавиш по своему вкусу.

Чистим Dock и делаем приложение без xCode

Мы сделаем программу для запуска приложений из панели статуса.
Вам понадобится terminal, Swift версии 3.1 или выше и любой текстовый редактор.
Я проверял работу на macOS Sierra 10.12.6 и macOS Catalina 10.15.
Делаем кроссплатформенное нативное десктоп приложение на Angular
Как вы уже наверно знаете, Angular уже есть во многих платформах:
- Ionic (https://ionicframework.com/)
- NativeScript (https://www.nativescript.org/)
- NestJs (https://nestjs.com/)
- Universal (https://github.com/angular/universal)
- Platform-terminal, консольное приложение (https://github.com/Tibing/platform-terminal)
Ну и, конечно, здесь не хватало десктопа (не будем пока про Electron).
Есть ли вирусы под Мас?

Есть ли «вирусы» под Mac? Если совсем коротко, то скорее да, чем нет. Хотите узнать, почему такой немного странный ответ?
Xcode 11 и XCFrameworks: новый формат упаковки фреймворков
В жизни многих компаний, которые имеют и развивают свой стек библиотек и компонентов, наступает момент, когда объёмы этого стека становится сложно поддерживать.
В случае разработки под платформу iOS, да и в целом, экосистему Apple, есть два варианта подключать библиотеки в качестве зависимостей:
- Собирать их каждый раз при сборке приложения.
- Собирать их заранее, используя уже собранные зависимости.
При выборе второго подхода становится логичным использовать CI/CD системы для сборки библиотек в готовые к употреблению артефакты.
Однако, необходимость собирать библиотеки под несколько платформ или архитектур процессора в экосистеме Apple, зачастую, требует проводить не всегда тривиальные операции, как при сборке библиотеки, так и конечного продукта, который её использует.
На этом фоне, было сложно не заметить и крайне интересно изучить, одно из нововведений от Apple, представленное на WWDC 2019 в рамках презентации Binary Frameworks in Swift — формат упаковки фреймворков — XCFramework.
XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:
- Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
- Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
- Отсутствие необходимости в сборке fat/universal фреймворка.
- Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.
В этой статье мы расскажем, зачем был внедрён этот новый формат, что он из себя представляет, а также, что он даёт разработчику.
Avalonia мои за и против

Как подписывать приложения для macOS Catalina 10.15

[Прим. пер.: переведя вызвавший широкое обсуждение на Хабре пост, я заинтересовался новыми правилами для разработчиков ПО, введёнными компанией Apple. В этой статье рассказывается о личном опыте освоения правил одним из разработчиков игр.]
Введение
В новой версии macOS Apple сделала обязательными некоторые требования к приложениям, которые раньше были рекомендациями: 64-битные исполняемые файлы, подписывание и нотаризация. Не удовлетворяющие этим требованиям приложения больше запускаться не будут.
Это сделано для того, чтобы обезопасить работу пользователей и предотвратить распространение зловредных программ, но в то же время это сильно усложняет жизнь, особенно тем людям, для которых Mac не является основной платформой разработки, но которые тем не менее хотели бы начать или продолжить поддержку Mac.
Особенно актуально это для разработчиков игр, публикующих игры для Mac в Steam. До недавних изменений игры, запущенные из Steam, не нужно было подписывать и подвергать нотаризации, но теперь они должны подчиняться тем же правилам, что и все остальные.
Я только что закончил разбираться с тем, как реализовать соответствие этим требованиям для моей игры Airships: Conquer the Skies. Airships работают на Java, а потому требуют ещё и JVM, но в целом всё остальное будет применимо для большинства разработчиков.
Вот что я узнал о подписывании и нотаризации приложения для Mac, которое не было скомпилировано непосредственно Xcode. Учтите, что информация получена из моих собственных исследований и может быть точной не на 100%. Вопросы и поправки приветствуются.
Как я не смог включить MacBook из-за удаления TeamViewer

Тем кому лень читать полностью, в конце я добавил простое решение.
Вчера я столкнулся с совершенно неожиданным стечением обстоятельств во время очередного обновления MacOS. Я вообще очень люблю обновления ПО, всегда хочется посмотреть на новые возможности той или иной программы. Когда летом я увидел, что можно скачать и поставить MacOS 10.15 Catalina Beta, я сознательно не стал этого делать, понимая, что beta может содержать значительное количество багов, а MacBook мне нужен ежедневно по работе. И вот вчера я увидел долгожданное уведомление.

Я с радостью нажал кнопку «Обновить сейчас» и стал ждать загрузки. Пока у меня скачивалось обновление, я решил сделать что-нибудь «полезное», а именно поудалять какой-нибудь ненужный хлам с ноута. И в этот раз под категорию хлам у меня попал TeamViewer.
Проблема тут вовсе не в TeamViewer.
Представляем управление пакетами NuGet на уровне решения в Visual Studio для Mac
Мы внесли улучшения, чтобы помочь вам легче находить пакеты. Это включает в себя улучшенный функционал при поиске новых пакетов, понимание того, какие пакеты уже установлены в вашем проекте, и поиск пакетов с доступными обновлениями. В этом посте мы сосредоточимся на функционале управления пакетами для решения. Однако большая часть функционала, включая установку, обновление и просмотр установленных пакетов, имеет аналогичный новый функционал и на уровне проекта.

Visual Studio for Mac: 5 новых крутых функций
Чтобы отпраздновать это достижение, я хочу поделиться некоторыми подробностями, касающимися дизайна и реализации новых редакторов, а также моими пятью любимыми новыми функциями в редакторах кода Visual Studio для Mac.
В основе обновленных редакторов в Visual Studio для Mac лежит служба общего языка с Visual Studio для Windows. Это означает, что тот же самый бэкэнд, который поддерживает версию Visual Studio для Windows, теперь также поддерживает версию macOS. Все это включает в себя IntelliSense, Roslyn, текстовую логику и все языковые сервисы за кулисами. Единственная часть, не общая в Windows и macOS, это слой пользовательского интерфейса, который остается нативным для каждой платформы.
В случае macOS это означает использование фреймворков macOS, таких как Cocoa и CoreText, для расширения возможностей пользовательского интерфейса. Благодаря использованию нативного пользовательского интерфейса, а также возможности использования нативных методов ввода, есть поддержка языков с написанием справа налево, лигатур шрифтов и других расширенных графических функций.

Ближайшие события
Простите, пользователи macOS, но Apple зашла слишком далеко

Несколько лет назад, когда был выпущен первый релиз Cogmind, я без предрассудков относился к выпуску официальной версии под Mac. В конце концов, Cogmind — моя первая коммерческая игра, раньше я выпускал только хобби-проекты в статусе freeware и только под Windows, поэтому не был уверен, какие результаты даст поддержка дополнительных платформ. Поэтому я решил подождать и посмотреть стоит ли в каком-то виде реализовывать официальную поддержку на Mac.
Тем временем я убедился, что Cogmind (и другое моё ПО) идеально работает через Wine и подобные ему пакеты. Разумеется, в Steam я никогда не говорил о поддержке Mac, потому что это не был отдельный скачиваемый файл, работающий сам по себе. Я готовился к выпуску версии 1.0, и откладывал решение о том, стоит ли принимать меры для реализации полной поддержки платформы, на будущее.
На текущий момент я уже достаточно прождал и увидел, чтобы прийти к осмысленному решению: официальная поддержка macOS просто недостижима для меня.
Почему такое решение было принято именно сейчас: если вы следите за разработчиками инди-игр, сообществами или новостями, то должны были слышать о шумихе, связанной с Apple. К сожалению, мой голос тоже присоединится к этому хору.
Как мы в Parallels покоряли Sign In with Apple

Думаю у многих уже после WWDC 2019 на слуху Sign In with Apple (кратко SIWA). В материале я расскажу с какими конкретно подводными камнями пришлось столкнуться при интеграции этой штукенции в наш лицензионный портал. Данная статья не совсем для тех, кто только решил разобраться с SIWA (для них я дал ряд ознакомительных ссылочек в конце текста). В этом материале, скорее всего, многие найдут ответы на вопросы, которые могут возникнуть при интеграции нового сервиса Apple.
Монтируем iOS под OSX с помощью ifuse
Failed to connect to lockdownd service on the device.
Try again. If it still fails try rebooting your device.
Данная статья написана чтобы сэкономить время тем у кого возникнет та же задача.
Знакомство с HealthKit
HealthKit — это API, которое было представлено в iOS 8. HealthKit служит как центральный репозиторий для всех данных, связанных со здоровьем, позволяя пользователям создавать биологический профиль и хранить данные о тренировках.
По ходу прочтения статьи о HealthKit, вы создадите простейшее приложение для отслеживания тренировок и узнаете:
- Как запросить разрешение и получить доступ к данным HealthKit
- Как читать данные HealthKit и отображать их в UITableView
- Как записать данные в центральный репозиторий HealthKit
Готовы начать знакомство с HealthKit? Читайте дальше!
Архитектурные подходы в iOS-приложениях
Сегодня поговорим об архитектурных подходах в iOS-разработке, про некоторые нюансы и наработки реализации отдельных вещей. Расскажу, каких подходов придерживаемся мы и немного углубимся в детали.
Архитектурный шаблон «Строитель» во вселенной «Swift» и «iOS»/«macOS»
В этот раз я бы хотел немного поговорить о еще одном порождающем шаблоне проектирования из арсенала «Банды четырех» – «Строителе» («Builder»). Так вышло, что в ходе получения своего (пусть и не слишком обширного) опыта, я довольно часто видел, чтобы паттерн использовался в «Java»-коде вообще и в «Android»-приложениях в частности. В «iOS» же проектах, будь они написаны на «Swift» или «Objective-C», шаблон встречался мне довольно редко. Тем не менее, при всей своей простоте, в подходящих случаях он может оказаться довольно удобным и, как модно говорить, мощным.
Процедура нотаризации Electron приложения для macOS 10.14.5
С выходом macOS 10.14.5, Apple добавила обязательную процедуру нотаризации (Notarization process) приложений перед их распространением. Что это и какие сложности возникли с этим обновлением при разработке на Electron.js я и хотел бы рассказать.