Pull to refresh
10
0

iOS Разработчик

Send message

UI тесты в Xcode с Embassy и Succulent

Reading time 3 min
Views 2.5K
Всем привет!

Очередная новинка в списке наших курсов: «Разработчик iOS», а значит пришло время интересных штук, которые мы находили за время подготовки курса. В этой заметке автор разбирает как записывать и воспроизводить запросы API для работы UI тестов.



Поехали.

Недавно я интегрировал Embassy и Succulent в свои UI тесты. Если вам нужно запустить UI тесты для приложения, использующего данные API, это руководство может предложить альтернативу mock / stub.

Проблемы:

  • Приложение использует данные API для заполнения UI ;
  • Использование stub’ов может потребовать написания и поддержки большого количества файлов;
  • При использование mock’ов, логика приложения может отличаться от фактического сетевого вызова;
  • Использование настоящего API соединения — СОВЕРШЕННО ИСКЛЮЧЕНО, слишком много переменных и сбоев

Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 0

Protocol-Oriented Programming

Reading time 17 min
Views 33K
На WWDC 2015 Apple объявила, что Swift — первый протокол-ориентированный язык программирования (видео сессии «Protocol-Oriented Programming in Swift»).

На этой сессии и ряде других (Swift in Practice, Protocol and Value Oriented Programming in UIKit Apps) Apple демонстрирует хорошие примеры использования протоколов, однако не даёт формального определения, что же такое Protocol-Oriented Programming.

В интернете множество статей о Protocol-Oriented Programming (POP), которые демонстрируют примеры использования протоколов, но и в них я не нашёл ясного определения POP.

Я попытался проанализировать примеры использования протоколов и сформировать принципы, которых стоит придерживаться, чтобы код можно было назвать протокол-ориентированным.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 5

Коротко о Shadowsocks, или OpenVPN не нужен (в каждом доме)

Reading time 6 min
Views 261K
В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.
Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Comments 77

Как стать GPU-инженером за час

Reading time 20 min
Views 25K
Нужно ли iOS-разработчику, не занимающемуся играми, уметь работать с GPU? Нужно ли ему вообще знать о том, что в айфоне есть GPU? Многие успешно работают в iOS-разработке, никогда не задумываясь об этой теме. Но GPU может быть полезен как для 3D-графики, так и для других задач, в ряде случаев оставляя CPU позади.

Когда на конференции Mobius 2017 Moscow Андрей Володин (Prisma AI) рассказал об использовании GPU в iOS, его доклад стал одним из фаворитов конференции, получив высокие оценки зрителей. А теперь на основе этого доклада мы подготовили хабрапост, позволяющий получить всю ту же информацию текстом. Интересно будет даже тем, кто не работает с iOS: доклад начинается с вещей, не привязанных конкретно к этой платформе.
Осторожно, трафик: под катом очень много изображений со слайдов.

Читать дальше →
Total votes 47: ↑42 and ↓5 +37
Comments 18

Что нового в Swift 4.1?

Reading time 13 min
Views 7K
Xcode 9.3 и Swift 4.1, наконец-то, уже не являются бета! Данный релиз содержит долгожданные улучшения стандартной библиотеки и самого языка. Если вы не следите за процессом Swift Evolution, то эта статья для Вас.

Swift 4.1

В этой статье вы узнаете о наиболее значительных изменениях, внесенных в Swift 4.1.

Эта статья требует наличия Xcode 9.3, поэтому убедитесь, что данная версия Xcode установлена.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 3

Дайджест интересных материалов для мобильного разработчика #247 (26 марта — 1 апреля)

Reading time 3 min
Views 7.4K
В нашем новом дайджесте статьи о порхающих велосипедах, собеседованиях и резюме, тестировании и учебных проектах, технологиях и ключевых метриках приложений. Все это и многое другое — под катом!

Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 0

Айфончик, не лагай. Часть 1: многопоточность для практиков

Reading time 7 min
Views 15K

Меня зовут Максим, и я алкоголик занимаюсь iOS разработкой уже более 7 лет.

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

Среди кандидатов попадаются кадры, которые курят кальян прямо на Skype собеседовании, пытаются гуглить вопросы на ходу, хотят ЗП 180к за 3 месяца опыта, ведут себя так, как будто гоп-стопнули меня на улице (с соответствующей терминологией) и так далее.

Но в большинстве случаев, даже у адекватных middle специалистов, есть общий пробел: непонимание принципов асинхронного выполнения задач и работы аппаратного ускорения в iOS.

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

(Если лень читать, то прилагается видео)
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 24

Шпаргалка для технического собеседования

Reading time 8 min
Views 205K


Эта шпаргалка поможет вам подготовиться к техническому собеседованию, чтобы вы могли освежить в памяти ключевые вещи. По сути, это содержание курса по информатике безо всяких подробностей.

Читать дальше →
Total votes 81: ↑68 and ↓13 +55
Comments 85

Параллельное программирование в Swift: Operations

Reading time 10 min
Views 11K
В параллельном программировании в Swift: Основы Я представил множество низкоуровневых способов для управления параллелизмом в Swift. Первоначальная идея состояла в том, чтобы собрать все различные подходы, которые мы можем использовать в iOS в одном месте. Но при написании этой статьи я осознал, что их слишком много, чтобы перечислить в одной статье. Поэтому я решил сократить методы более высокого уровня.

image

Я упомянул Operations в одной из моих статей, но давайте рассмотрим их более внимательно.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 0

Синглтон, локатор сервисов и тесты в iOS

Reading time 8 min
Views 11K
Привет, Хабр! Я Богдан, работаю в мобильной команде Badoo iOS-разработчиком.

В этой статье мы рассмотрим использование паттернов «Синглтон» и «Локатор сервисов» (service locator) в iOS и обсудим, почему их часто называют антипаттернами. Я расскажу, как и где их стоит применять, сохраняя код пригодным для тестирования.


Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 4

Дизайн под iPhone X. Гайдлайны для iOS 11

Reading time 11 min
Views 165K


Вместе с iOS 11 появился новый iPhone X, айфон с самой большой диагональю экрана, который фактически не имеет границ. 5.8 дюймовый OLED экран даже больше чем экран 5.5 дюймов iPhone 8 Plus, в то время как размер самого корпуса примерно такой же как у iPhone 8. Для дизайнеров это означает большую свободу в макетах.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 21

Последний отсчёт — Гугл развлекается

Reading time 2 min
Views 41K
Некоторое время назад я писал о смешном методе-проверке «А не козёл ли ты, пользователь?». Сегодня обнаружил ещё один забавный метод для новенькой Android 8.0.
Читать дальше →
Total votes 100: ↑97 and ↓3 +94
Comments 38

Concurrency в Swift 3 и 4. Operation и OperationQueue

Reading time 31 min
Views 79K



Если вы хотите добиться UI отзывчивости вашего iOS приложения, выполняя такие затратные по времени куски кода, как загрузка данных из сети или обработка изображений, то вам нужно использовать продвинутые паттерны, связанные с многопоточностью (сoncurrency), иначе работа вашего пользовательского интерфейса (UI) начнет сильно замедляться и даже может привести к полной его «заморозке». Вам нужно убрать ресурсо-затратные задачи с main thread (главного потока), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI).

В текущей версии Swift 3 и ближайшей Swift 4 (осень 2017) это можно сделать двумя способами, которые пока не связаны с встроенными языковыми конструкциями Swift, начало реализации которых будет только в Swift 5 (конец 2018).

Один из них использует GCD (Grand Central Dispatch) и ему посвящена предыдущая статья. В этой статье мы покажем, как достичь отзывчивости UI в iOS приложениях с помощью таких абстрактных понятий, как операция Operation и очередь операций OperationQueue. Мы также покажем в чем различие этих двух подходов и какой из них в каких ситуациях лучше использовать.

Код для этой статьи можно посмотреть на Github.
Читать дальше →
Total votes 18: ↑14 and ↓4 +10
Comments 9

IT-meetup Superjob «iOS — архитектура дизайна, кода, деплоя»

Reading time 1 min
Views 3K

26 января приглашаем iOS-разработчиков на встречу «iOS — архитектура дизайна, кода, деплоя» в новый офис Superjob на Малой Дмитровке. Приходите обмениваться опытом!


Superjob продолжает серию IT-митапов. В этом году мы сделаем акцент на мобильной разработке и Data Science.image


Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 0

Анимации в iOS для начинающих. Модели, классы от Core Animation, блоки

Reading time 10 min
Views 66K
Думаю, всем разработчикам хочется в той или иной степени украсить свои приложения различными эффектами. Android-отдел компании Live Typing уже выпустил две статьи на эту тему: про тип классов Animator и собственную библиотеку CannyViewAnimation, заменяющую им несовершенный ViewAnimator. Я представляю отдел iOS-разработки нашей компании и тоже хочу высказаться на тему, которая важнее, чем кажется.

Эта статья — введение в мир анимаций для iOS-приложений. Рекомендуется тем, кто никода не работал с анимациями, либо не понимает некоторые моменты в стандартных iOS-анимациях.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 3

SwiftLint — чистота и порядок в iOS проекте

Reading time 6 min
Views 54K
image

Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 17

Разгоняем сборку Swift проекта в Xcode

Reading time 6 min
Views 16K

image
Статья о том как починить инкрементальную компиляцию в Xcode для Swift проектов и ускорить build phases для Cocoapods и Carthage, ничего не поломав.


Небольшой спойлер: на трех разных проектах получилось сократить время инкрементальной сборки в 9 раз!


Туториал несет сугубо практический характер с минимумом воды. Обязательно к прочтению для действующих iOS разработчиков.


Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 21

Vapor — быстрый и безопасный REST на Swift?

Reading time 3 min
Views 26K
Я как iOS разработчик всегда хотел получить возможность окунуться в мир бэкенда, не прибегая к изучению других языков. Теперь благодаря Vapor мои мечты сбылись и каждый желающий имеет возможность использовать один язык на сервере и клиенте.

image
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 20

Симметрическая разность возможностей Swift и Objective-C

Reading time 24 min
Views 23K

image


В этой статье я расскажу о различии возможностей, которые предоставляют iOS-разработчикам языки Swift и Objective-C. Безусловно, разработчики, которые интересовались новым языком от Apple, уже видели немало подобных статей, поэтому я решил акцентировать внимание на тех отличиях, которые действительно влияют на процесс разработки и на архитектуру приложения. То есть, те отличия, которые следует знать, чтобы использовать язык максимально эффективно. Я попытался составить наиболее полный список, удовлетворяющий этим критериям.


Кроме того, рассказывая о новых возможностях, которые Swift привнёс в разработку, я постарался не забыть упомянуть то, что он потерял по сравнению с Objective-C.


Для каждого пункта я попытался кратко изложить суть отличия, не вдаваясь в детали, а примеры кода — наоборот сделать подробными. В них я прокомментировал все нюансы, даже те, которые не имеют непосредственного отношения к рассматриваемому отличию.


На момент написания статьи текущая версия Swift — 3.0.1.


Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 12

По итогам Rambler.iOS #8

Reading time 2 min
Views 5.4K

Splash Screen


Две недели назад, 5 октября, состоялась восьмая встреча Rambler.iOS, которую мы предварительно анонсировали на Хабре. В этот раз основной акцент был сделан на контенте самой конференции — мы подготовили четыре крутых доклада, в том числе один от иностранного докладчика.


Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 1
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity