Обновить
26
0
Богдан Орлов@KAIIIAJIOT

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

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

ABC: Always Be Coding (не переставай программировать)

Время на прочтение5 мин
Охват и читатели75K


Как получить работу инженера?

Давай на чистоту. Ты хороший кандидат на должность инженера? Как ты сам себя оцениваешь? Много ли компаний, в которых ты бывал на собеседованиях? Каково у тебя отношение пройденных интервью к полученным предложениям о работе? Попробуй воспользоваться следующей формулой (это мое сферическое измерение в вакууме, которое не означает ровным счетом ничего):

# x = количество компаний, в которых ты проходил собеседования

# y = количество предложений о работе, которые ты получил

рейтинг = 100 * log(x) * y / x



Если твой рейтинг < 90, обязательно прочти это. Если > 120, возможно, тебе это не нужно, но, все равно прочти.

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

Вконтакте iOS SDK v2

Время на прочтение10 мин
Охват и читатели23K
Добрый вечер!

Всё началось с того, что необходим был более или менее удобный инструмент для работы с API социальной сети ВКонтакте под iOS. Однако Google меня достаточно быстро расстроил результатами поиска:

Вроде бы всё хорошо, самое главное есть, но вот использование не вызывает приятных ощущений.

Под катом я расскажу, как работает обновленная версия ВКонтакте iOS SDK v2, с чего всё начиналось и к чему в итоге пришли.
Читать дальше →

Кроссплатформенное программирование под современные мобильные Windows-платформы

Время на прочтение12 мин
Охват и читатели25K

Актуальность


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

Symbian, лидировавшая по всем показателям еще пару лет назад, постепенно с рынка ушла. Blackberry – это, в основном, бизнес-пользователи, и, в основном, в Америке; в остальном мире она не так распространена. Тенденции показывают, что третье место сейчас достается Windows Phone. И вот тут у каждого, будь то частный разработчик или компания, встает вопрос:



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

Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush

Время на прочтение18 мин
Охват и читатели110K
Игра Oil Rush


В данной статье, состоящей из двух частей, речь пойдёт об использовании возможностей процедурных генераторов при создании контента для компьютерной игры Oil Rush и бенчмарка Valley (выйдет в феврале), разработанных на нашем собственном движке Unigine.
Читать дальше →

Работаем с реляционными данными используя Backend-as-a-Service

Время на прочтение6 мин
Охват и читатели9.5K
Привет хабра-человеки,

Сегодня мы запустим JavaScript приложение, которое выписывает счет-фактуру прямо с сервера используя взаимодействие с АПИ BaaS платформы. Для разработки приложения потребовалось написать 0 строчек кода на стороне сервера, не смотря на то что приложение имеет удаленное (и полноценное) хранилище данных, возможность регистрации пользователя и поддержку логина. Исходный код доступен на гитхабе.



Под катом находятся подробности демонстрирующие простоту BaaS подхода в работе со сложными объектами используя Backendless.
Читаем дальше

Избавляемся от строковых констант в Objective-C

Время на прочтение5 мин
Охват и читатели14K
Магические константы в коде — зло. Строковые константы в коде — еще большее зло.
И вроде бы от них никуда не денешься, они повсюду:

1) При загрузке объектов из xib-ов:
MyView* view = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] lastObject];

MyViewController* controller = [MyViewController initWithNibName:@"MyViewController" bundle:nil];

2) При работе с CoreData:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"MyCoreDataClass" inManagedObjectContext:moc]];
[request setSortDescriptors:@[ [[NSSortDescriptor alloc] initWithKey:@"someProperty" ascending:NO] ]];

3) Если вы используете KVO, то строки появляются и тут:
[self addObserver:someObservedObject 
       forKeyPath:@"someProperty"
          options:(NSKeyValueObservingOptionNew |  NSKeyValueObservingOptionOld) 
          context:nil];

4) Ну и KVC:
NSInteger maxValue = [[arrayOfMyClassObjects valueForKeyPath:@"@max.someProperty"] intValue];

5) Но даже если CoreData вы предпочитаете работу с SQLite напраямую, xib-ами вы брезгуете, то вот такой код вам должен быть знаком:
[self.tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];

6) Ну и когда Apple представила миру Storyboard — это было замечательно, если-бы не одно но:
[self performSegueWithIdentifier:@"MySegue" sender:nil]

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender {
   if ( [segue.identifier isEqual:@"MySegue"] );
}

Вы видите проблему? Она состоит в том, что компилятор никак не проверяет содержимое строк, поскольку не знает (да и не может в принципе знать), что в них содержится. И если вы опечатаетесь или измените значение соответствующих полей в xcdatamodel / xib / storyboard / переименуете property, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →

Единый облачный бэкенд как сервис для Windows, iOS, Windows Phone, Android и мобильных HTML5-приложений

Время на прочтение7 мин
Охват и читатели14K
В этой статье мы поговорим про анонс коммерческой доступности мобильных сервисов Windows Azure для разработчиков Windows, iOS, Windows Phone, Android и мобильных HTML5-приложений.



Windows Azure Mobile Services — это часть облачной платформы Windows Azure, облачный сервис, который предназначен для обеспечения мобильных приложений на платформах Windows, iOS, Windows Phone, Android, а так же мобильных приложений на HTML5/JS готовым серверным бэкендом, используя всего пару строк кода.

Мобильные разработчики применяющие Windows Azure Mobile Services получают единую, готовую за 2 минуты, инфраструктуру для всех своих приложений:

  • реляционное хранилище, хранилище табличных данных и файлов;
  • готовая возможность аутентификации пользователей через популярные социальные сети;
  • готовая инфраструктура и настроенный функционал для отправки пуш-уведомлений на все платформы с помощью одного API;
  • функционал серверного кода на базе JavaScript и Node.js для тонкой настройки поведения мобильного сервиса, выполнения кода по расписанию через встроенный планировщик, обработки событий при сохранении данных в таблицах, хранения и выполнения собственного JS-кода (и вскоре .NET-кода) с интеграцией с системой управления версиями Git.

Мобильные сервисы Windows Azure Mobile Services предлагают разработчикам быстрый старт с бесплатного тарифа и гибкое масштабирование вверх и вниз в облаке по требованию.
описание, ссылки, картинки...

Инди-игра для Android в цифрах

Время на прочтение4 мин
Охват и читатели32K

Всем привет,

Сегодня, я хочу рассказать о запуске своего последнего проекта — «Shooting club 3», поделиться множеством самой разнообразной статистки о доходах, бюджетах, загрузках, в общем все то, что мне самому было бы интересно послушать о других играх. Конечно, мне хотелось чтобы этот топик был «success story», но, будем откровенны, пока это не так. Возможно, это из-за того, что игра еще совсем новая и со временем она «разгонится». По крайней мере, мы на это надеемся!
Читать дальше →

Каверзные кватернионы

Время на прочтение3 мин
Охват и читатели189K


Отгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?

Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.

Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Что же такое кватернион?

Можно ли бесплатно попасть в «топ» App Store и что делать, если бесплатно это сделать не получилось

Время на прочтение8 мин
Охват и читатели36K
Для тех, кто не любит много читать и хочет знать все ответы сразу — напишу в первых строках этой небольшой статьи, что, по моему скромному опыту, в «топ» App Store попасть ужасно трудно, и для этого требуется приложить недюжинные усилия. Более того, скажу вам, что крупные издатели вылезают в «топ» именно за счет налаженной работы с журналистами, блогерами и всевозможными порталами пишущими про мобильные приложения, ну и разумеется за счет четко налаженной системы маркетинга приложений, направленной на увеличение количества скачиваний. Чуть легче «запихнуть» в топ бесплатное приложение, это разумеется при условии, что Apple его заметит и поставит в «New & Noteworthy» (Новое и Заслуживающее внимания) в App Store. Ну а теперь обо всем по порядку.
Читать дальше →

ВКонтакте iOS SDK

Время на прочтение6 мин
Охват и читатели20K
Добрый вечер!

Всё началось с того, что необходим был более или менее удобный инструмент для работы с API социальной сети ВКонтакте под iOS. Однако Google меня достаточно быстро расстроил результатами поиска:

Вроде бы всё хорошо, самое главное есть, но вот использование не вызывает приятных ощущений.

Под катом я расскажу, как работает новая версия ВКонтакте iOS SDK, с чего всё начиналось и к чему в итоге пришли.
Читать дальше →

Интеграция дизайна мобильных приложений. Часть 2: iOS, Windows Phone

Время на прочтение3 мин
Охват и читатели42K


Это вторая часть доклада, который я прочитал на Dribbble Meetup 2013 в Москве. В первой части я подробно описал свой процесс интеграции дизайна под платформу Android. Эта часть — про интеграцию дизайна под iOS и Windows Phone, а также я вскользь упомяну про Samsung Bada 2.0. Дальше — много картинок.

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

Map-Reduce на примере MongoDB

Время на прочтение5 мин
Охват и читатели63K
В последнее время набирает популярность семейство подходов и методологий обработки данных, объединенных общими названиями Big Data и NoSQL. Одной из моделей вычислений, применяемых к большим объемам данных, является технология Map-Reduce, разработанная в недрах компании Google. В этом посте я постараюсь рассказать о том, как эта модель реализована в нереляционной СУБД MongoDB.

Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.

Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.

Итак, что же такого особенного в Map-Reduce?
Читать дальше →

Кручу-верчу, запутать хочу: углы Эйлера и Gimbal lock

Время на прочтение3 мин
Охват и читатели136K


Выставите любой палец левой руки вперед. Давайте, не стесняйтесь, никто не будет над вами смеяться. Это нужно для важного эксперимента. Выставили? Теперь представьте что вы — это ваш палец (ну и бред). Повернитесь под прямым углом направо, затем наверх, и наконец налево. Где вы оказались? Правильно, в том же месте, но уже на спине.

С некоторой натяжкой именно так работает вращение с помощью углов Эйлера. Немного непредсказуемо и неудобно, не правда ли? Углы Эйлера имеют несколько недостатков, но есть одно особенно нехорошее свойство из-за которого вы не захотите с ними связываться. Его имя — Gimbal lock.

В русском языке gimbal lock называют по-разному: шарнирный замок, блокировка осей, складывание рамок. К сожалению, по запросам в поисковике с такими ключевыми словами выдаётся много мусора, а статья в Википедии оставляет желать лучшего, поэтому я сам расскажу вам об этом феномене и предложу как с ним бороться.

Внимание! Заходя под кат вы подвергаетесь риску поломать голову.
Ха! Я ничего не боюсь! Где этот gimbal lock?

Ещё один способ получить нестандартные данные в iOS

Время на прочтение4 мин
Охват и читатели16K
Привет!

Я хочу показать, как, не используя приватных API ( = не используя приватных фреймворков/классов/функций) можно собирать разнообразные данные о использовании устройства.

Вот описание информации, которую можно получить:
  • Мощность сигнала сотовой сети: RSSI в дБм и относительную мощность в «палках»
  • Качество сигнала WiFi (0 — плохо, 4 — хорошо)
  • Состояние регистрации в сотовой сети: наличие SIM, поиск сети
  • Тип сети передачи данных: 2G, 3G, WiFi
  • Заряд аккумулятора с точностью до процента (стандартные средства дают точность в 5%)
  • Включен ли «режим самолёта» («airplane mode»)
  • Включены ли различные сервисы: будильник, Airplay, VPN, перенаправление звонков, Nike+

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

Real-time дебаг Android и iOS приложений на Unity

Время на прочтение6 мин
Охват и читатели20K
Когда разработка проекта идёт на компьютере, проблемы просмотра лога не встаёт. Но когда начинаешь разрабатывать на планшете, то всё становится гораздо печальнее. Разработчики движка добавили много разных полезных вещей в профайлер, но к сожалению забыли о простой консоли, чтобы переключившись на её вкладку разработчик мог смотреть сообщения от своей игры и отправлять какие-то консольные команды прямо с компьютера на планшет.
Это упущение мы сейчас и будем исправлять.
Читать дальше →

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

Время на прочтение2 мин
Охват и читатели38K
Древний холивар о том, нужна ли программисту математика, получил неожиданное продолжение в спорах о ЕГЭ. Активно начала продвигаться идея о том, что вообще не надо проверять знания, а надо проверять умение быстро искать ответы. Ну и как вывод – замена ЕГЭ на чемпионат по поиску в Гугле/Яндексе. На мой взгляд, с тем же успехом можно проводить экзамен в виде поиска по школьной библиотеке. Почему-то никто не замечает такой очевидной истины, что быстро находит ответы те, кто знают, что искать, то есть как раз обладают знаниями. Для подтверждения этой идеи я составил 3 задачки для программистов, алгоритмы решения которых я нашел бы за пару минут.
Читать дальше →

Российский игровой рынок: кто играет, как играет

Время на прочтение5 мин
Охват и читатели33K
Всем привет! На Хабре уже очень давно не писал, только комментил иногда, но сейчас появилась тема, из-за которой решил запилить еще один пост.

Буквально пару дней назад наше игровое подразделение опубликовало интересное исследование игрового рынка России. Хочу вкратце рассказать о нем на Хабре.

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

Скачиваем Youtube плейлист в формате mp3 одним bash-скриптом

Время на прочтение2 мин
Охват и читатели35K
Так сложилось, что в данный момент мой рабочий ноутбук оснащен лишь 2GB оперативной памяти. В связи с этим возникла необходимость оптимизации браузера, т.к. при большом количестве открытых вкладок памяти становится недостаточно и используется swap-раздел, что ведет к тормозам.

В работе мне помогает музыка, обычно это открытый таб с плейлистом Youtube. Так вот этот таб в просессе работы съедает до 500MB (!) и даже больше (Google Chrome).

Такое положение дел вынудило написать bash-скрипт, который на входе получает ID плейлиста, на выходе – mp3 файлы, которые можно слушать в любимом плеере, например, в MOC:
MOC
Читать дальше →

War of Machines: создание игры для iOS

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели26K
В этой статье я хочу поделиться с вами своим практическим опытом разработки игры для iOS на основе open-source компонентов. Мы пройдемся по техническим решениям, которые были приняты во время разработки игры.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
London, England - London, Великобритания
Зарегистрирован
Активность