Рубрика «iOS» - 60

ABBYY представила технологию ABBYY Real-Time Recognition, которая способна считывать текст не только из печатных документов, но и с поверхностей различных предметов, говорится в сообщении компании. Например, решение позволяет распознавать текст на этикетках, счётчиках, автомобильных номерах, экранах мониторов, паспортах и т. д.Читать полностью »

На этой неделе вышла предварительная версия Android O, новый iPad и старый, но красный iPhone, мы учились различать UI и UX, разрабатывать на React Native, рассуждать про игры и искусственный интеллект. Добро пожаловать в новый дайджест!

Дайджест интересных материалов для мобильного разработчика #196 (20-26 марта) - 1Читать полностью »

image

В компании Apple заявили, что опубликованные сайтом WikiLeaks уязвимости iOS, которые использовались для взлома Mac и iPhone, давно закрыты, сообщает TechCrunch.

Согласно опубликованным Wikileaks документам, несколько лет назад ЦРУ имело возможность взламывать iPhone и Mac при условии наличия прямого доступа к устройству. В Apple оперативно отреагировали на очередную публикацию сайта и заявили, что эксплоиты имели место быть, но уже давно устранены.
Читать полностью »

image

Более половины из 1,4 млрд Android-устройств не получали обновления системы более одного года, сообщается в официальном блоге Google. Статистика относится к концу 2016 года и отражает действия компании по развитию своей экосистемы.

Всего обновления получили 735 млн устройств двухсот различных производителей. Сейчас Google выпускает обновления (в том числе и критические в плане безопасности) для устройств под управлением Android 4.4.4 и выше. По статистике компании, они составляют 86,3% всех действующих Android-устройств в мире. Обновления, однако, получили только чуть более половины владельцев смартфонов.
Читать полностью »

WikiLeaks опубликовал подборку из 12 документов ЦРУ о взломе iPhone и Mac в 2008-2013 гг - 1
Изготовленный в 2012 году в ЦРУ адаптер Apple Thunderbolt-to-Ethernet, в прошивке которого записан код Sonic Screwdriver (как звуковая отвёртка из «Доктора Кто») для запуска программы с периферийного устройства, даже если Mac защищён паролем. Так можно загрузиться с флешки/CD/DVD и установить инструменты на компьютер, не снимая пароль с Mac

Хотя Джулиан Ассанж говорил, что первая порция Year Zero представляет собой менее 1% от общей подборки документов ЦРУ Vault 7, но пока не торопится публиковать продолжение. Сегодня WikiLeaks выложил скромную подборку из 12 документов Dark Matter. Эта подборка датируется 2008-2009 годом плюс два документа за 2012-2013 годы и эксклюзивно посвящена инструментам для взлома компьютеров Mac и телефонов iPhone. В основном, это руководства пользователя по использованию программ.
Читать полностью »

Google разрешил скачивать предварительную версию Android O (окончательная сборка появится в третьем квартале 2017). Будущая операционная система установит автоматические ограничения на фоновую активность приложений. Даже плохо написанные приложения, за счёт автоматической остановки, больше не смогут потреблять значительное количество запасённой аккумулятором энергии,Читать полностью »

Вчера Apple выпустила свой самый доступный iPad (от $329 в США) и красный iPhone 7. Новая линейка планшетов пришла на замену Air 2, потеснив мимоходом и младшие модели iPad Mini. Бандеролька разбирает характеристики нового iPad и делится другими новостями от Apple ➜

Новый iPad, красный iPhone. Пора обновляться? - 1
Читать полностью »

Apple представила приложении Clips для создания видео с текстом, графикой и другими эффектами. Сервис содержит различные фильтры для видео, например позволяет поставить смайлик, стрелку или облако с текстом. Можно добавить музыку, которая автоматически подстраивается под длину видео. Также Clips распознает лица в видеороликах и предлагает подставить имена из списка контактов.

Читать полностью »

Коллекции

Разработчики, перешедшие на Swift с Objective-C, не могли не заметить удобнейший функционал, который предоставляет Swift для работы с коллекциями. Использование диапазонов в индексах

let slice = array[1..<10]

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

Filter

Самой часто используемой функцией для коллекций, пожалуй, является filter

let alex = Person(name: "Alex", age: 23)
let jenny = Person(name: "Jenny", age: 20)
let jason = Person(name: "Jason", age: 35)
let persons = [alex, jenny, jason]
let jNamedPersons = persons.filter { $0.name.hasPrefix("J") } // [jenny, jason]

Reduce

Реже используемой, но при этом крайне выразительной и удобной является функция reduce


let ages = persons.map{ Float($0.age) }
let average = ages.reduce(0, +) / Float(persons.count)

Можно писать свои функции высшего порядка и это довольно увлекательно:

func divisible(by numbers: Int...) -> (Int) -> Bool {
    return { input -> Bool in
        return numbers.reduce(true) { divisible, number in
            divisible && input % number == 0
        }
    }
}

let items = [6, 12, 24, 13]
let result = items.filter(divisible(by: 2, 3, 4)) // [12, 24]

Map

Функциональные понятия функторов и монад пришли к нам из языка Haskell. Говорят, невозможно просто взять и понять, что такое монада, а уж тем более невозможно это объяснить. Тем не менее мы можем временно отбросить все сложности и объяснить себе только то, что действительно необходимо, а те, кто захочет закопаться поглубже, могут начать с изучения Haskell.

Итак, для простоты мы можем считать, что функтор это контейнер, к которому применима функция map, а монада это функтор, к которому применима функция flatMap.

Поскольку коллекции это контейнеры, и в Swift для них определена функция map, они могут выступать в роли функторов:
для того, чтобы трансформировать коллекцию одного типа в коллекцию другого типа, возьмем наш массив persons и получим из него массив возрастов типа [Int]

let ages = array.map{ $0.age } // [23, 20, 35]

FlatMap

И в роли монад:
для того, чтобы из массива oprtional типов вернуть массив не опциональных значений

let optionalStrings: [String?] = ["a", nil, "b", "c", nil]
let strings = optionalStrings.flatMap { $0 } // ["a", "b", "c"]

для того, чтобы расширить первоначальную коллекцию

let odds = [1,3,5,7,9]
let evensAndOdds = odds.flatMap { [$0, $0 + 1] } // [1,2,3,4,5,6,7,8,9,10]

Читать полностью »

В последние несколько лет я встретил множество проектов, разработчиков и статей, которые обвиняют Model-ViewController архитектуру во многих, если не во всех бедах, которые происходят в iOS-сообществе.

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js