Pull to refresh
47
0
Григорий Усков @guskov

User

Send message

От прототипа до прототипа, от прототипа до прототипа, от прототипа до… мусорки

Reading time18 min
Views10K
Захотел разработать небольшое приложение — Qtty. Приложение должно уметь делать снимок и применять набор фильтров к нему, после чего публиковать этот самый снимок в качестве основной фотографии в профиле ВКонтакте.
Автор будет пробовать делать всё через прототипы, так как это делали в 223 сессии WWDC 2014.

Много картинок. Осторожно!

Создание игры на движке Sprite Kit (Часть 1)

Reading time71 min
Views159K
С появлением iOS 7 мир узрел новый игровой движок от Apple — SpriteKit. В свете того, что он появился совсем недавно об этом движке еще мало что написано, конечно в сети можно найти несколько tutorial -ов по нему но в основном все они на Английском языке. И по этому я задалась целью написать подробный Туториал об этом замечательном движке.

Итак, что же такое SpriteKit?


SpriteKit — это 2D движок, оптимизированный для создание игр для устройств от компании Apple. В его основе лежит популярный физический движок Box 2D. Поскольку разработчики создавали его заточенным специально для устройств Apple он существенно выигрывает в скорости у остальных движков.
В SpriteKit всю роль по оптимизации и рисованию графики берет на себя OpenGl, это все происходит на низком уровне и по этому вы можете сосредоточить свои усилия на решении проблем более высокого уровня и создание больших 2D игр. Для создание игр на SpriteKit используется язык Objective-c, но с выходом iOS 8 и нового языка Swift, игры также можно создавать и на нем.
От себя хотела бы добавить, что в некотором роде на Swift писать даже легче, так что если вы только начинаете и думаете какой язык выбрать то советую выбрать Swift.

Ниже, я предоставила видео с демонстрацией игрового процесса SpriteKit, если вам стало интересно то милости прошу.



Подробности

Решение проблемы с циклическими ссылками в блоках ObjC

Reading time12 min
Views30K
О блоках в ObjC и правильной работе с ними написано очень много, в том числе и на хабре. Вопрос о том, как правильно работать с self в блоках, чтобы избежать циклических ссылок, регулярно задается на собеседованиях. При использовании таких фреймворков, как ReactiveCocoa количество блоков в коде сильно возрастает, при этом увеличивается шанс допустить ошибку и потерять в памяти объекты. Про попытку окончательно решить эту проблему, метапрограммирование для с99 с экстеншнами и блоками + хипстерсткие макросы с @ под катом.
Читать дальше →

Ниндзюцу Xcode

Reading time7 min
Views24K
Если ты много времени проводишь в одном и том же окружении — рано или поздно возникает желание начать как-то экономить свое время и оптимизировать свои действия. В этой статье речь пойдет о некоторых рабочих инструментах и подходах, которые накопились у меня за время программирования под iOS в IDE XCode от очевидных и часто применимых, до редких и довольно тяжеловесных.

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

Проверка PIN кода банковских карт

Reading time7 min
Views71K
В связи с появлением статьи «Путешествия банковской транзакции», в рамках которой стали появляться вопросы по механизму проверке PIN, хотелось бы несколько уточнить данный вопрос. В данной статье будет рассмотрен только вопрос проверки т.н. online PIN, т.е. PIN, который вводится на терминале и передается для дальнейшей проверки в систему, которая выполняет авторизацию транзакции.

Прежде чем приступать непосредственно к вопросу прокерки PIN'а карты, остановимся на некоторых теоретических вопросах.
Читать дальше →

Работа c JSON в Swift

Reading time8 min
Views30K

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

Собственно с задачей прямого и обратного преобразования JSON из текстового представления в объектную модель отлично справляется стандартный Foundation API – NSJSONSerialization. В Apple проделали серьезную работу для обеспечения прямого и обратного взаимодействия Swift и Objective-C кода (Using Swift with Cocoa and Objective-C), поэтому использование привычных Cocoa API не только возможно на практике, но и удобно и не выглядит неестественно:

let jsonString = "{\"name\":\"John\",\"age\":32,\"phoneNumbers\":[{\"type\":\"home\",\"number\":\"212 555-1234\"}]}"
let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
let jsonObject: AnyObject! = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions(0), error: nil)

Но работать с полученным результатом в статически типизированном Swift неудобно – требуется цепочка проверок и приведений типов для получения любого значения. Далее я рассмотрю варианты решения этой проблемы, а заодно мы познакомимся с некоторыми особенностями Swift.
Читать дальше →

Особенности Swift

Reading time13 min
Views44K
В рамках Mobile Camp Яндекса наш коллега Денис Лебедев представил доклад о новом языке программирования Swift. В своем докладе он затронул особенности взаимодействия с Objective-C, рассказал про фичи языка, которые показались ему наиболее интересными. А также про то куда сходить на Github, и какие репозитории посмотреть, чтобы понять, что со Swift можно делать в реальном мире.

Разработка Swift началась в 2010 году. Занимался ей Крис Латтнер. До 2013 процесс шел не очень активно. Постепенно вовлекалось все больше людей. В 2013 году Apple сфокусировалась на разработке этого языка. Перед презентацией на WWDC о Swift знало порядка 200 человек. Информация о нем хранилась в строжайшем секрете.


Презентация и конспект доклада

Реактивное программирование под Android

Reading time10 min
Views90K
Отказоустойчивость, отзывчивость, ориентированность на события и масштабируемость — четыре принципа нынче популярного реактивного программирования. Именно следуя им создаётся backend больших систем с одновременной поддержкой десятков тысяч соединений.

Отзывчивость, простота, гибкость и расширяемость кода — принципы, которые можно закрепить за реактивным UI.

Наверняка, если совместить реактивные backend и UI, то можно получить качественный продукт. Именно его мы и попытались сделать, разрабатывая 2GIS Dialer — звонилки, которая работает через API и при этом должна оставаться быстрой и удобной.


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

Multiple Delegate

Reading time4 min
Views10K
В Cocoa очень популярен паттерн делегирование. Стандартный способ реализации этого паттерна — добавление к делегатору weak свойства, которое хранит ссылку на делегат.

У делегирования много различных применений. Например, реализация какого-то поведения в другом классе без наследования. Еще делегирование используется как способ передачи уведомлений. Например, UITextField вызывает у делегата метод textFieldDidEndEditing:, который информирует его о том, что редактирование закончено, и т.д.

А теперь представьте задачу: надо сделать так, чтобы делегатор посылал сообщения не одному делегату, а нескольким, причем делегирование реализовано стандартным методом через свойство.
Читать дальше →

Activité: фитнес-трекер, который не похож на все остальные трекеры

Reading time2 min
Views37K
The Withings Activité aims to be both a functional activity tracker and a fashionable acce...
Фотография часов попала сюда по ошибке? Ах да, это и есть фитнес-трекер, первое впечатление обманчиво.

Подавляющая часть гаджетов из мира носимой электроники выглядят весьма технологично и стильно. Это — гаджеты с софт-тач покрытием, из металла и пластика, которые выглядят… ну, как гаджеты. Можно даже говорить о стиле «hi-tech», который очень многим нравится.

Многим, но не всем. Те же умные часы Pebble всем хороши, но человек, у которого есть любимые механические часы, не всегда откажется от своих часов в пользу такого устройства. Что делать, если хочется приобрести умный гаджет, например, фитнес-трекер, но не нравится то, как он выглядит? Теперь выход есть, и этим выходом можно назвать Activité, механические часы фитнес-трекер стильный гибрид механических часов и фитнес-трекера, созданный компанией Withings.

Activité — первое устройство, созданное компанией, с уклоном в мир моды, весьма технологичной моды.

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

Как бросить кости без OpenGL

Reading time3 min
Views24K
image

Необязательное вступление
Разработчики приложений под iOS зарабатывают не на собственных творениях, а на сторонних заказах. Создав себе имя славного парня, который творит чудеса с iPad-ом, рано или поздно Вы будете получать предложения от знакомых своих знакомых.
-Алло! Напиши что-нибудь под iOS.


Позвольте несколько советов.
Если, по Вашему мнению, работы более чем на две недели, отказывайтесь.
Если на неделю — соглашайтесь за $5000.
Если на 2 дня — за $1000.

Еще одно правило — чем ближе круг знакомств с заказчиком — тем выше гонорар. С близкими друзьями — 100% предоплата.
Поверьте, в этом случае число мусорных проектов резко уменьшится, а уважение к Вам резко возрастет.


Один хороший человек захотел сделать электронную книгу под iOS, коллекцию афоризмов. Фразы вылетают случайно, данные предоставлены в формате комма сепарейтед валью. С флешкой и устным ТЗ он пришел к другу-программисту. Программист оценил примерный объем работы
  • Конвертируем данные в sqlite;
  • Заводим три UIView (левый, правый и центральный);
  • В каждый UIView добавляем UITextView и UILabel;
  • Обрабатываем нажатие touchesBegin для листания афоризмов вправо-влево;
  • Добавляем кнопку — показать случайный афоризм.
  • Добавляем закладки.
  • Получаем 1000 долларов США


Работы на 2 дня, программист согласился.
Однако в ТЗ было еще одно условие — при случайном выборе афоризма по экрану должен кататься игральный кубик. Самый обыкновенный, из шести граней.
Читать дальше →

Устройство блоков в Objective-C

Reading time6 min
Views19K
image
В Objective-C есть такая штука, как блоки, которая является реализацией концепции замыканий.

Есть много статей о том, как правильно использовать блоки (когда вызывать copy, как избавиться от retain циклов и т. д.), но при этом устройства блоков обычно не затрагивают. Собственно, давайте восполним этот пробел.
Читать дальше →

AndroidSocialNetworks — удобная работа с социальными сетями

Reading time6 min
Views8.7K

AndroidSocialNetworks — это библиотека для Android, которая делает работу с соц. сетями проще. Если вы когда-либо пробовали работать с соц. сетями, то знаете насколько это тяжело. Нужно прочитать документацию для каждой соц. сети, скачать и подключить SDK или стороннюю библиотеку, позаботиться о жизненном цикле http запросов. AndroidSocialNetwork должна сделать вашу жизнь проще, она содержит общий интерфейс для Facebook, Twitter, LinkedIn и Google Plus — просто сбилдите SocialNetworkManager с помощью SocialNetworkManager.Build -> добавьте его в FragmentManager -> настройте AndroidManifest.xml -> работайте с настроенными соц. сетями. Вы сможете делать login, постить обновление статуса, постить фотки, добавлять / удалять друзей.
Читать дальше →

Мобильная аналитика. Теперь бесплатно!

Reading time3 min
Views13K
Друзья, мы рады поделиться с вами хорошей новостью — официальный запуск сервиса автоматизированного продвижения приложений Appintop состоялся! Кроме того, мы приготовили для вас отличный подарок, на который ушло несколько месяцев кропотливого труда. Это модуль рыночной аналитики SPY, который доступен абсолютно бесплатно! Подписка на подобные сервисы стоит около $10 000 в месяц.

Модуль SPY позволяет:
— просматривать, сколько зарабатывают ТОП-400 приложений по 25 странам;
— подсматривать за конкурентами (выручку и установки);
— выбрать нишу для приложения;
— узнать, сколько нужно установок, чтобы выйти на любую позицию по любому региону;
— узнать, сколько вы будете зарабатывать на определенной позиции;
— выбрать страны для продвижения;
— искать объекты для инвестирования;
— и многое другое.

Каким образом мы собираем данные?

Доступ к модулю SPY бесплатен, но с одним условием: взамен вам необходимо предоставить iTunes connect вашего приложения. Это позволяет нам делать аналитику еще более точной. В системе насчитывается уже более 5000 iTunes connect’ов приложений, которые отдают нам свои данные по установкам и заработку. Большинство аналитических сервисов работают по такой же схеме, и только мы предоставляем все аналитические данные абсолютно бесплатно!

Подключая свой iTunes connect, вы получаете доступ к удобной системе аналитики по 25 самым крупным странам и по ТОП-400 позиций по каждой из них:

image

Как создавался модуль SPY

Создание подобного модуля было очень непростой задачей как с технической стороны, так и со стороны получения iTunes connect’ов. Несколько крупных аналитических компаний, собрав приличный пул приложений, стали монополистами на рынке мобильной аналитики. Но мы верили, что можно создать технически более совершенный сервис, и главное, сделать его бесплатным! Разработчики не должны платить за аналитику, тем более по $10 000 в месяц.
Читать дальше →

Auto Layout и UIScrollView. Как его готовить?

Reading time2 min
Views55K

В iOS 6 Apple представили замечательную возможность для вёрстки UI для iOS-приложений — Auto Layout. Но вот что удивительно, до сих пор очень немногие проекты используют эту возможность. А ведь это очень сильный инструмент, если с умом подойти к вёрстке UI, можно сэкономить очень много времени на подстраивании элементов для 3,5” и 4” экранов, портретно-ландшафтном расположении экрана и даже на универсальной вёрстке для iPhone и iPad.

И это всё не считая того, что скоро представят iPhone 6 и никто до сих пор точно не знает, какое там будет разрешение и какой экран. Лучше бы заранее подстраховаться.

В основном, тема Auto Layout довольно простая, и изучить её несложно. Но лично я столкнулся с большой проблемой при расположении элементов в UIScrollView. Я потратил немало времени и нервов на изучение того, как же правильно расположить элементы и указать размер контента для того чтобы ScrollView начал пролистываться.

Хоть и решение довольно простое, но на него не так просто выйти. В данной статье я бы хотел рассказать, как же всё-таки правильно готовить UIScrollView в Auto Layout.

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

О правомерности работы физического лица с магазином App Store в РФ

Reading time3 min
Views69K
Эта статья предназначена в первую очередь для программистов-одиночек, желающих попробовать свои силы на рынке платных мобильных приложений. Статья не претендует на истину первой инстанции, поэтому любые ваши замечания крайне приветствуются.

Итак, суть статьи заключается в том, чтобы понять: можно ли в РФ физическому лицу законно получать прибыль от продаж программ в App Store? Просмотр тематических форумов с подобными вопросами привел к выводу: мнения людей на этот счет расходятся. Одни считают, что можно, другие — что такая деятельность будет квалифицироваться как незаконная предпринимательская деятельность, т.к. договор от Apple — это агентский договор и в нем нет ни слова про авторские вознаграждения, и, как следствие, нужно регистрироваться в качестве индивидуального предпринимателя (ИП).
Читать дальше →

Защита баз данных в iOS

Reading time4 min
Views19K


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

Кросскомпиляция библиотек под iOS, делаем это правильно

Reading time4 min
Views11K
Во время разработки большого проекта наступает такой момент, когда надо встроить в приложение библиотеку из мира open source с подходящей лицензией. Например, вам захотелось ускорить декодирование картинок, или понадобился sqlite3 с fts4, или нужны какие-то плюшки из libicu, которых нету в системной libicucore.

Для этого библиотеку, которая понадобилась, нужно будет собрать для 5 архитектур: armv7, armv7s, arm64, i386, x86_64. С кросскомпиляцией есть много подводных камней, на которые не хотелось бы наткнуться, когда есть уже проверенные решения. В этом коротком посте я расскажу об автоматизации сборки библиотек на примере protobuf и sqlite3.
Читать дальше →

Представляем Intel XDK – инструмент кросс-платформенной разработки для мобильных устройств

Reading time4 min
Views55K

Нашим постоянным читателям, конечно, известно, что Intel предоставляет богатый набор инструментов для разработчиков в области высокопроизводительных вычислений – компиляторы, математические библиотеки и многое другое. В этой статье пойдёт речь о весьма нетипичной для нашего блога теме – инструменте для программирования мобильных приложений на HTML5 Intel XDK.
Читать дальше →

ImageLoaders: Продолжение

Reading time5 min
Views9.2K
В предыдущей статье я сравнивал библиотеки UniversalImageLoader (UIL) и Picasso на предмет оптимального использования памяти. Среди комментариев были некоторые тонкости применения библиотек и просьбы протестировать другие загрузчики. Эти вопросы дали начало второй части benchmark-а с участием 5 библиотек.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity