Как стать автором
Обновить
-29
SomeName @RomanBamburaread⁠-⁠only

User

Отправить сообщение

Как UIView мешал слоям анимироваться

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

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

Заодно разберемся с таким понятием, как неявные анимации.

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

Чек-лист по работе с издателями для инди-разработчика

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

Я работаю в сфере локализации игр, и среди наших клиентов много инди-разработчиков. Нередко они обращаются к нам с вопросом, к какому издателю лучше обратиться (потому что издателей среди наших клиентов тоже много). В этой статье мы с коллегами собрали рекомендации, которые помогут инди-девелоперу найти того самого издателя и выстроить с ним отношения по системе win-win.

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

Async/await для существующих iOS-приложений

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


Ранее я писал статью о работе оффлайн с веб-контентом. С того времени команда Apple выпустила Xcode 13.2 и Swift 5.5. Прочитав книгу о современной модели многопоточности в Swift, я понял, что это лучшее время для обновления моих примеров с async/await!
Перед прочтением моей статьи очень рекомендую прочитать материал о многопоточности в Swift Language Guide.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии2

Swift. Протоколы

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

Если разобраться поглубже, язык Swift, является крайне продуманным и собрал в себе все лучшее из многообразия языков. Он быстрый, продуманный и очень оптимизированный. Каждый его инструмент, всегда преследует определенную цель и не всегда понятно с первого раза, какую же такую цель преследует изучаемый инструмент, но поверьте, цель есть всегда. Так и у протоколов есть масса возможностей и перекочевали они с Objective-C не просто так. Начнем мы с простого и плавно перейдем к более сложному (хотя протоколы весьма просты в усвоении и очень функциональны).

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

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

Гайд по UIKeyboardLayoutGuide

Время на прочтение2 мин
Количество просмотров4K
image
Обработка показа клавиатуры – это распространенная задача при создании интерфейса приложения. С выходом iOS 14 это работает автоматически для SwiftUI компонентов. Но что со старым-добрым UIKit? Раньше мы использовали нотификации клавиатуры, проверяли ее высоту и обновляли необходимые constraints. В iOS 15 появился новый гайд — UIKeyboardLayoutGuide. Если вы уже знакомы с такими гайдами, как safeAreaLayoutGuide и readableContentGuide, новый покажется вам супер интуитивным. Давайте попробуем использовать его на простом примере — экране авторизации с текстовыми полями и кнопкой логина, закрепленной внизу.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Идеальный наблюдатель на Swift

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

В этой статье речь пойдёт о шаблоне проектирования «Наблюдатель» (Observer) и его реализации на Swift. Точнее — о его идеальной реализации.

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

Swift: локализация строк, содержащих формы множественного числа

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

Задумывались ли вы когда-нибудь, зачем нужен файл .stringsdict?

Приходилось ли вам сталкиваться с грамматическими правилами для множественного числа в приложениях для iOS?

Если вы ответили утвердительно на любой из этих вопросов или вам просто интересно узнать что-то новое о локализации в Swift, то эта статья для вас. Здесь я постараюсь объяснить, чем полезен этот мощный инструмент, предоставленный нам компанией Apple.

Читать далее
Всего голосов 10: ↑7 и ↓3+5
Комментарии3

iOS in-app purchases, часть 3: серверная валидация покупок

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

Серверная валидация (server-side receipt validation) — это способ проверить подлинность покупки. В отличие от проверки покупки на устройстве, серверная валидация происходит, внимание, на сервере. Валидация означает, что устройство или сервер обращаются к серверам Apple и спрашивают, действительно ли была покупка и валидная ли она.

Познакомьтесь с остальными статьями по ссылке:
1. iOS in-app purchases часть 1: конфигурация и добавление в проект.

2. iOS in-app purchases часть 2: инициализация и обработка покупок.

3. iOS in-app purchases часть 3: серверная валидация покупок. - Вы тут.

4. iOS in-app purchases часть 4: локальное тестирование покупок в XCode.

5. iOS in-app purchases часть 5: обработка ошибок SKErrors.

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

Как построить свою систему поиска похожих изображений

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

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

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

Читать далее
Всего голосов 35: ↑34 и ↓1+49
Комментарии33

Тестирование StoreKit в Xcode 12 и iOS 14

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

Привет, Хабр!


Меня зовут Сэм, я разработчик в сервисе Qonversion. В этой статье описаны новые возможности для тестирования подписок, представленные Apple во время сессии Introducing StoreKit Testing in Xcode на WWDC 2020.


Рынок подписок в мобильных приложениях быстро растет, но набор инструментов тестирования до iOS 14 был скудным. Вдобавок всё усложнялось нестабильностью песочницы Apple.
Нововведения в Xcode 12 и iOS 14 сильно меняют ситуацию.


image

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

Swift 5.3: Что нового?

Время на прочтение3 мин
Количество просмотров7.8K
Привет Хабр! Язык программирования Swift обладает большой популярностью ввиду его использования в написании приложений под iOS, поэтому его развитие представляет интерес для всех занятых в этой области.

Давайте посмотрим что нового приготовил разработчикам Swift версии 5.3.

Multiple trailing closures


Новая версия (SE-0279) предлагает новый синтаксис для конечных замыканий, который позволяет вызывать несколько замыканий в качестве параметров функции более читаемым способом. Это сводит к минимуму использование слишком большого количества скобок в сигнатуре функции.

import Foundation

func load(url: String, success: (Data) -> Void, failure: (Error) -> Void) {
    
}

// old  version

load(url: "someURL", success: { data in }, failure: { error in })

// new multiple trailing closures

load(url: "someURL") { (data) in
    // do smth
} failure: { (error) in
    // do smth
}

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

Multi-Pattern Catch Clauses


В настоящее время каждый пункт catch в операторе do-catch может содержать только один шаблон. Чтобы обойти эту проблему, разработчики будут использовать возможности вариантов коммутаторов для включения сопоставления шаблонов в тело операторов catch, тем самым увеличивая вложенный и дублированный код (SE-0276).
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии15

YOLOv4 – самая точная real-time нейронная сеть на датасете Microsoft COCO

Время на прочтение9 мин
Количество просмотров80K
Darknet YOLOv4 быстрее и точнее, чем real-time нейронные сети Google TensorFlow EfficientDet и FaceBook Pytorch/Detectron RetinaNet/MaskRCNN.

Эта же статья на medium: medium
Код: github.com/AlexeyAB/darknet
Статья: arxiv.org/abs/2004.10934
Обсуждение YOLOv4-tiny 1770 FPS: www.reddit.com/r/MachineLearning/comments/hu7lyt/p_yolov4tiny_speed_1770_fps_tensorrtbatch4
Обсуждение: www.reddit.com/r/MachineLearning/comments/gydxzd/p_yolov4_the_most_accurate_realtime_neural


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

Нашей целью было разработать алгоритм обнаружения объектов для использования в реальных продуктах, а не только двигать науку вперед. Точность нейросети YOLOv4 (608x608) – 43.5% AP / 65.7% AP50 Microsoft-COCO-testdev.

62 FPS – YOLOv4 (608x608 batch=1) on Tesla V100 – by using Darknet-framework
400 FPS – YOLOv4 (320x320 batch=4) on RTX 2080 Ti – by using TensorRT+tkDNN
32 FPS – YOLOv4 (416x416 batch=1) on Jetson AGX Xavier – by using TensorRT+tkDNN


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

Как мы в Parallels покоряли Sign In with Apple

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


Думаю у многих уже после WWDC 2019 на слуху Sign In with Apple (кратко SIWA). В материале я расскажу с какими конкретно подводными камнями пришлось столкнуться при интеграции этой штукенции в наш лицензионный портал. Данная статья не совсем для тех, кто только решил разобраться с SIWA (для них я дал ряд ознакомительных ссылочек в конце текста). В этом материале, скорее всего, многие найдут ответы на вопросы, которые могут возникнуть при интеграции нового сервиса Apple.
Всего голосов 27: ↑26 и ↓1+25
Комментарии0

Добавляем Sign in with Apple на back-end

Время на прочтение2 мин
Количество просмотров11K
На WWDC 2019 Apple представила новую систему авторизации пользователей — Sign in with Apple. Возникла задача интегрировать её в наш back-end и синхронизировать её с уже существующими методами авторизации при помощи email, Google и Facebook. За задачу взялся наш коллега kurenkoff, он и является автором данной статьи. Заинтересовавшихся просим под кат.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Внедряем Sign in with Apple в свое iOS приложение

Время на прочтение2 мин
Количество просмотров11K
На WWDC 2019 Apple в очередной раз нарушила покой iOS разработчиков — представила новую систему авторизации пользователей Sign in with Apple. Теперь все iOS приложения, которые используют сторонние системы авторизации (Facebook, Twitter, etc.), должны в обязательном порядке реализовать Sign in with Apple, иначе выгонят из AppStore. Мы решили не испытывать судьбу и побежали внедрять эту фичу. Как именно мы это сделали — узнаете под катом.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии15

Внедряем Sign in with Apple — систему авторизации от Apple

Время на прочтение6 мин
Количество просмотров50K
Привет, Хабр!

Этим летом на конференции WWDC 2019 Apple представила собственную систему авторизации Sign in with Apple  и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, правительственные и бизнес-приложения, использующие собственную авторизацию. К Sign in with Apple Apple сделала качественную документацию, и в этой статье мы на примере ЦИАН расскажем, как внедрить ее в свой сервис.


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

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

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

Swift Property Wrappers

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

Если вы использовали SwiftUI, то наверняка обращали внимание на такие ключевые слова, как @ObservedObject, @EnvironmentObject, @FetchRequest и так далее. Property Wrappers (далее «обёртки свойств») — новая возможность языка Swift 5.1. Эта статья поможет вам понять, откуда же взялись все конструкции с @, как использовать их в SwiftUI и в своих проектах.



Автор перевода: Евгений Заволожанский, разработчик FunCorp.


Прим.пер.: К моменту подготовки перевода часть исходного кода оригинальной статьи потеряла свою актуальность из-за изменений в языке, поэтому некоторые примеры кода намеренно заменены.

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

Обход SSL Pinning в iOS-приложении

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


Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt. В предыдущей статье мы говорили, как можно сниффить трафик нашего мобильного приложения с помощью HTTPS-прокси. В этой обсудим, как обходить SSL Pinning. На всякий случай, рекомендую прочитать первую статью, если вы ее еще не читали: это понадобится для понимания приведенного ниже текста.

Собственно, на практике SSL Pinning применяют, чтобы описанный способ инспекции и модификации трафика мобильного приложения не был доступен плохим парням или любопытному шефу.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии10

Работа под давлением

Время на прочтение11 мин
Количество просмотров18K
Кто из нас не ронял продакшн, не обнаруживал, что база побилась, а бэкапов нет, не обваливал работу системы перед демо коммитом «ну сейчас рюшечку поправлю только, она же точно ничего не поломает», не выкатывал на всю аудиторию мобильное приложение со 100%-воспроизводящимся критичным багом, не обнаруживал продакшн-сервер взломанным, да мало ли бывает замечательных действий… Некомфортная ситуация влияет на наше состояние, не дает принимать взвешенные решения, заставляет поступать так, как в спокойной обстановке мы бы не поступили — только диву даешься, как же вот этого не увидел или вот этого не сделал. И хочется разобраться, что же происходит, понять, как лучше в следующий раз и вообще научиться с ним справляться. Как? В статье мы с AlbinoKoala систематизировали свой опыт и даже прочитали митап перед коллегами.

image

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

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность