Как стать автором
Обновить
-0.49

Разработка под macOS *

Пишем под настольную ОС Apple

Сначала показывать
Порог рейтинга
Уровень сложности

sMock — Swift mocking framework для Unit-tests (спасибо gMock за идеи)

Время на прочтение5 мин
Количество просмотров4K

Проблема


Переходя в мир Swift из ObjC/C++, я столкнулся с проблемой при написании юнит-тестов: отсутствием инструментов для создания Mock-объектов.


При написании декомпозированного кода мы часто скрываем детали реализации за интерфейсами (протоколами). А также проверять функциональность того или иного объекта отдельно от других очень удобно, подменяя его составняе части моками.


Погуглив, я нашел несколько фреймворков Swift Mocking на github. Но ни один из них не явился мне ясным и очевидным в использовании (по одной или нескольким причинам):


  • имеет тучу зависимостей
  • не имеет интуитивного синтаксиса
  • требуется кодогенерация / написание вручную большого количества вспомогательного кода
  • не интегрирован с XCTest (позволяет мокать, но не тестировать)
  • иметь много возможностей, сваленых в кучу одного фреймворка (неразбериха что и зачем)
  • должен использоваться с ограниченным количеством предопределенных/встроенных типов

Эта ситуация была для меня неприятной, и напротяжении около года я использовал обходные пути и самописные моки.
Самописные Mock-объекты просты, но они


  • каждый раз разные (изобретаем велосипед)
  • или каждый раз одинаковые (копипаст)
  • неочевидные в использовании

Решение


В мире C ++ существует популярный и чудесный фреймворк gTest / gMock (от Google).
Он позволяет создавать Mock-объекты очень наглядно и компактно. Также он имеет интуитивно понятный синтаксис, который позволяет просто «читать» (не изучать) написанный тестовый код.

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии4

Производство Material иконок для MacOSX приложения Home Assistant на Electron

Время на прочтение3 мин
Количество просмотров8.4K
В первой серии я заварил умный дом на Home Assistant. В процессе я влюбился в Home Assistant и подумал, не написать ли десктопное приложение для этой системы. У Home Assitant есть прекрасный web-интерфейс и показалось разумным завернуть его в Electron, чтобы получить красивую иконку в доке, родные нотификации, menu bar для быстрого доступа и прочие zeroconf. Home Assistant для всего что можно использует Material Icons: для дашбордов, для состояний, для кнопок, для всего. Это значит, что надо подтянуть весь набор материальных иконок в приложение Electron.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Как защищать процессы и расширения ядра в macOS

Время на прочтение8 мин
Количество просмотров3.9K
Привет, Хабр! Сегодня мне хотелось бы поговорить о том, как можно защитить процессы от посягательств злоумышленников в macOS. Например, это полезно для антивируса или системы резервного копирования, особенно в свете того что под macOS существует сразу несколько способов “убить” процесс. Об этом и о методах защиты читайте под катом.

image
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии4

Создание desktop приложения с помощью Golang и Fyne

Время на прочтение3 мин
Количество просмотров28K

Сегодня мы будем разрабатывать desktop приложение на Golang


Разработка golang desktop приложения — не совсем типичная задача для golang программиста.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии7

Истории

Формируем View в SwiftUI, исходя из условий

Время на прочтение2 мин
Количество просмотров4K
Иногда нам нужно сформировать SwiftUI View, учитывая некоторые условия. Например, в приведенном коде мы определяем HomeView, который может содержать ProfileView, в случае если в LogInManager есть loggedInUser. Мы пытаемся это реализовать, используя стандартный оператор if:
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Во дни сомнений, во дни тягостных раздумий

Время на прочтение3 мин
Количество просмотров4.9K
В данной статье мне хочется рассказать, как я визуализировал статистику по происходящей пандемии, и поделиться с какими особенностями можно встретиться, используя для этого Avalonia UI.


Читать дальше →
Всего голосов 38: ↑16 и ↓22-6
Комментарии11

Используй время правильно: автоматизация процессов в Tinder

Время на прочтение8 мин
Количество просмотров8.3K

Думаю многие любят знакомиться в соц. сетях и пользуются приложениями (например Tinder),
но часто уходит много времени на то, что бы ставить лайки и отправлять первые
сообщения. Я считаю что это монотонные действия которые только отталкивают от
общения и знакомства. Если ты программист, зачем быть как все, давай вместе со
мной автоматизируем процесс монотонных действий и оставим свое внимание только
для приятного общения, но обо всём по порядку.
Читать дальше →
Всего голосов 16: ↑10 и ↓6+4
Комментарии14

Инструментарий фронтенд-специалиста: полезные утилиты и фичи для ускорения разработки

Время на прочтение4 мин
Количество просмотров8.8K


Прошли те времена, когда фронтендеру достаточно было открыть «Блокнот», написать несколько строк кода, проверить его в браузере и загрузить на сервер через FTP. Современная разработка пользовательского интерфейса сильно усложнилась. Экосистема JavaScript растет и изменяется настолько стремительно, что в ней легко запутаться. В этом посте я расскажу, что использует фронтенд-команда Parallels для оптимизации работы.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии0

Beta-тест C# анализатора PVS-Studio на Linux и macOS

Время на прочтение1 мин
Количество просмотров1.9K

Picture 1

Всё больше пользователей C# анализатора PVS-Studio интересуются возможностью его использования для проверки C# кода на Linux и macOS. И сегодня у нас хорошие новости.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии5

Улучшения специальных возможностей в Visual Studio 2019 for Mac

Время на прочтение4 мин
Количество просмотров2K
image

Выпуск Visual Studio 2019 for Mac версии 8.4.4 включает в себя многочисленные изменения в цветовой палитре значков, предупреждений и сообщений об ошибках. Новый внешний вид легко бросается в глаза, а новая цветовая гамма еще более заметна. В это статье я расскажу, почему эти изменения действительно важны и что именно было изменено.

В настоящее время более 1 миллиарда человек имеют ту или иную форму инвалидности. Людям практически ежедневно приходится сталкиваться с различными проблемами. К ним относятся ограничения подвижности, когнитивные и нервные нарушения, проблемы с речью и слухом. В связи с этим мы хотим рассказать об улучшениях визуальной доступности в самых последних версиях Visual Studio for Mac.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Управление Mac в мире Windows

Время на прочтение4 мин
Количество просмотров7.4K


Большинство организаций используют System Center Configuration Manager для автоматизации процессов системного администрирования. Одна незадача: базовая функциональность SCCM ограничена для macOS. Поскольку с каждым годом количество «яблочной» техники в компаниях растет, проблема становится все актуальнее. О том, как эффективно управлять Mac-устройствами в корпоративной среде, используя при этом существующую инфраструктуру, рассказывает руководитель команды разработки Parallels Mac Management Тимофей Фуряев.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии8

Swift 5.2 — что нового?

Время на прочтение3 мин
Количество просмотров8K
Первая бета Swift 5.2 только что появилась в Xcode 11.4 beta, и в ней произошли изменения в языке, наряду с сокращением размера кода и используемой памяти, а также появилась новая система диагностики, которая позволит быстрее выявлять ошибки.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии23

Протокольно-ориентированное программирование в Swift 5.1

Время на прочтение10 мин
Количество просмотров14K
Протоколы — фундаментальное свойство Swift. Они играют важную роль в стандартных библиотеках Swift и являются обычным способом абстракции кода. Во многом они похожи на интерфейсы в других языках программирования.

В этом руководстве мы представим вам подход к разработке приложений, называемый «протокольно-ориентированным программированием», который стал практически основным в Swift. Это действительно то, что вам необходимо уяснить при изучении Swift!

В этом руководстве вы:

  • поймёте разницу между объектно-ориентированным и протокольно-ориентированным программированием;
  • разберётесь со стандартной реализаций протоколов;
  • научитесь расширять функционал стандартной библиотеки Swift;
  • узнаете, как расширять протоколы при помощи дженериков.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии10

Ближайшие события

Использование перехватов операций для бэкапа файлов в macOS “на лету”

Время на прочтение6 мин
Количество просмотров4.1K
Привет, Хабр! Меня зовут Денис Копырин, и сегодня я хочу рассказать о том, как мы решали проблему бэкапа по требованию на macOS. На самом деле интересная задача, с которой я столкнулся в институте, выросла в итоге в большой исследовательский проект по работе с файловой системой. Все подробности – под катом.

image
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии5

Visual Studio for Mac: управляйте своей IDE с помощью клавиш

Время на прочтение3 мин
Количество просмотров4.1K
Великие дебаты в области вычислительной техники имеют одну общую тему. Будь то противостояние табов и пробелов или Vi и Emacs, поток, связывающий эти дебаты вместе, —эффективность использования клавиатуры. Правда в том, что, когда мы тратим массу часов, работая программах, использование горячих клавиш становится для нас чем-то автоматическим, такой же мышечной памятью, какой обладают великие пианисты или спортсмены.

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

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

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

Время на прочтение4 мин
Количество просмотров2.6K


Мы сделаем программу для запуска приложений из панели статуса.
Вам понадобится terminal, Swift версии 3.1 или выше и любой текстовый редактор.
Я проверял работу на macOS Sierra 10.12.6 и macOS Catalina 10.15.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии5

Делаем кроссплатформенное нативное десктоп приложение на Angular

Время на прочтение6 мин
Количество просмотров18K

angular-nodegui


Как вы уже наверно знаете, Angular уже есть во многих платформах:



Ну и, конечно, здесь не хватало десктопа (не будем пока про Electron).

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии12

Есть ли вирусы под Мас?

Время на прочтение7 мин
Количество просмотров31K


Есть ли «вирусы» под Mac? Если совсем коротко, то скорее да, чем нет. Хотите узнать, почему такой немного странный ответ?
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии16

Xcode 11 и XCFrameworks: новый формат упаковки фреймворков

Время на прочтение9 мин
Количество просмотров17K


В жизни многих компаний, которые имеют и развивают свой стек библиотек и компонентов, наступает момент, когда объёмы этого стека становится сложно поддерживать.


В случае разработки под платформу iOS, да и в целом, экосистему Apple, есть два варианта подключать библиотеки в качестве зависимостей:


  1. Собирать их каждый раз при сборке приложения.
  2. Собирать их заранее, используя уже собранные зависимости.

При выборе второго подхода становится логичным использовать CI/CD системы для сборки библиотек в готовые к употреблению артефакты.


Однако, необходимость собирать библиотеки под несколько платформ или архитектур процессора в экосистеме Apple, зачастую, требует проводить не всегда тривиальные операции, как при сборке библиотеки, так и конечного продукта, который её использует.


На этом фоне, было сложно не заметить и крайне интересно изучить, одно из нововведений от Apple, представленное на WWDC 2019 в рамках презентации Binary Frameworks in Swift — формат упаковки фреймворков — XCFramework.


XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:


  1. Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
  2. Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
  3. Отсутствие необходимости в сборке fat/universal фреймворка.
  4. Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.

В этой статье мы расскажем, зачем был внедрён этот новый формат, что он из себя представляет, а также, что он даёт разработчику.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Avalonia мои за и против

Время на прочтение3 мин
Количество просмотров11K
Я очень много пишу про Авалонию и часто восторгаюсь этим фреймворком, но, как и у любой технологии, у нее есть свои достоинства и недостатки, о них и хотелось бы поговорить.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии14

Вклад авторов