[Из песочницы] Проблемы локализации iOS и macOS

image


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


К сожалению, у Apple с локализацией наблюдаются реальные проблемы. В этой статье я хочу рассмотреть ряд примеров, на которых становится очевидным недостаточно качественный подход компании к адаптации iOS и macOS под российского пользователя. Я бы даже сказал, местами откровенно наплевательский.


Это моя первая публикация на Хабре, надеюсь, вам понравится. Не откажусь от инвайта.

Читать дальше →

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

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

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


Читать дальше →

Avito iOS Winter Edition — видео, фото, слайды, отзывы

Прошёл четвёртый по счёту традиционный iOS Meetup в Avito. Мы обсуждали Data Driven подход к разработке, практическое применение Mach-O, lldb и dSYM, возможности расширения lldb, методологию Type Driven и концептуальные различия архитектур. Если же вы не успели к нам на доклады и глинтвейн, или просто были не в Москве, то под катом мы выложили видеозаписи выступлений, слайды от докладчиков и немного фидбэка от участников встречи.


Читать дальше →

Распознавание лиц. Создаем и примеряем маски



Пока сообщество iOS-разработчиков спорит, как писать проекты, пока пытается решить, использовать ли MVVM или VIPER, пока пытается подSOLIDить проект или добавить туда реактивную турбину, я попытаюсь оторваться от этого и рассмотреть, как работает под капотом еще одна технология с графика Hype-Driven-Development.


В 2017 году на вершине графика хайпа — машинное обучение. И понятно почему:


  • Появилось больше открытых наборов данных.
  • Появились соответствующее аппаратные средства. В том числе облачные решения.
  • Технологии из этой области стали применяться в production-проектах.

Машинное обучение — широкая тема, остановлюсь на распознавании лиц и попытаюсь разобраться, какие технологии были до рождества христова CoreML, и что появилось после релиза фреймворка Apple.

Читать дальше →

[Из песочницы] От «Hello World» до приложения в App Store: советы новичкам от новичка

После переезда в солнечный Будапешт я осознал, что изучать новый язык по карточкам или с помощью онлайн-курсов — не для такого прокрастинатора, как я. А что если сделать приложение без карточек, курсов и механического заучивания, в таком контексте, который был бы мне интересен? Так родилась идея приложения, о котором я рассказывать не буду, но расскажу о том, с какими сложностями пришлось столкнуться, изучая программирование практически с нуля. Материал может быть полезен для людей, которые хотели бы развиваться в сфере мобильной разработки на iOS.

Читать дальше →

Дневник техлида: полгода разработки мобильного PvP



В марте 2017 года мы собрали небольшую команду и взялись за разработку нового перспективного проекта. Без особых деталей могу сказать, что задача стояла интересная и соблазнительная — мобильный, синхронный, командный PvP. Спустя 7 месяцев активной разработки мне захотелось рассказать коллегам из других проектов и отделов Pixonic технические детали и я подготовил для них презентацию, которая в дальнейшем превратилась в эту статью.

Как техлид команды, я расскажу, с какими задачами и проблемами мы успели столкнуться, как их решаем и почему. Мы используем итеративный подход добавления функционала в проект и в данный момент у нас реализованы: PvP на iOS и Android (обе платформы играют на одних серверах); набор персонажей, три десятка игровых механик, боты; матчмейкинг; набор мета-фич (кастомизация персонажей, прокачка и другие); решена задача масштабируемости на весь мир.

Итак, поехали. Читать дальше →

Swift Generics: cтили для UIView и не только #2

Данная публикация является продолжением выпуска, где была затронута тема декорирования объектов. Ознакомление с первой публикацией поможет лучше вникнуть в текущий контекст, т.к. упомянутые ранее термины и решения буду описываться с упрощениями.


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


Напомню, что основным элементом представленного способа задания стилей является обобщенное замыкание:


typealias Decoration<T> = (T) -> Void

Использовать данное замыкание для придания свойств UIView можно следующим образом:

Читать дальше →

Больше сюрпризов от Apple: обновленные правила размещения на App Store

Для разработчиков на iOS настала эпоха перемен: новые девайсы, новые инструменты, новые требования маркета. О технических особенностях обновленной платформы и о том, как следует оформлять и продвигать свое детище на новой версии App Store, было сказано уже немало. Сегодня мы хотим обратиться к еще одной перемене, которая обсуждается сейчас менее широко — изменениям в правилах публикации.



В последние месяцы Apple корректировали и дополняли список официальных требований к продуктам, размещаемым на сторе уже дважды. Первая порция правок пришлась на июнь, как заблаговременная подготовка почвы для осеннего релиза; вторая была опубликована совсем недавно. За каждой следовала массовая зачистка — удаление тысяч приложений с маркета без предупреждений и надежды на амнистию. Раз уж все так серьезно, пожалуй, стоит поподробнее разобрать, что именно изменилось и стоит ли уже начинать бояться. Мы изучили июньское и сентябрьское соглашения и собрали все значительные нововведения здесь, под катом.
Читать дальше →

Kак Microsoft пытается отправить мобильную почту к себе



Хранит ли Outlook-iOS-Android копию почтового ящика на сервере микрософт?


В подвешенном состоянии очутились многие корпоративные пользователи, которые недавно обновились до iOS 11. Дело в том, что после обновления перестает работать стандартный клиент (Mail.app) с ресурсами на Exchange Server 2016, Office 365 или Outlook.com
Отправка сообщения заканчивается ошибкой «Cannot Send Mail. The message was rejected by the server.»
Проблема заключается в том, что Exchange 2016 использует HTTPS / 2 TLS-соединения для своих клиентов. Когда почтовое приложение iOS пытается подключиться к Exchange с помощью ActiveSync, оно неправильно согласовывает соединение.
Читать дальше →

CGLayout — новая система автоматического layout'а в iOS

Привет Хабр!
Хочу представить мою последнюю open-source разработку — CGLayout — вторая система разметки в iOS после Autolayout, основанная на ограничениях.



"Очередная система автолайаута… Зачем? Для чего?" — наверняка подумали вы.
Действительно iOS сообществом создано уже немало layout-библиотек, но ни одна так и не стала по-настоящему массовой альтернативой ручному layout`у, не говоря уже про Autolayout.


CGLayout работает с абстрактными сущностями, что позволяет одновременно использовать UIView, CALayer и not rendered объекты для построения разметки. Также имеет единое координатное пространство, что позволяет строить зависимости между элементами, находящимися на разных уровнях иерархии. Умеет работать в background потоке, легко кешируется, легко расширяется и многое-многое другое.
CGLayout функциональный продукт, у которого есть хорошие перспективы развиться в большой проект.

Читать дальше →
  • Новее
  • 1


Последние посты