Как стать автором
Обновить
15
3
Dmitry Kudryavtsev @Rockerman

Lead iOS, visionOS, Flutter, IoT, Product, Startup

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

Как научиться делать игры: полезные ресурсы

Время на прочтение9 мин
Количество просмотров110K
Когда я начинал строить свою карьеру в игровой индустрии шесть лет назад, то часто задавался вопросами по геймдеву. Начиная от поиска общего понимания того, как разрабатываются и оперируются онлайн-игры, до частных вопросов типа того, как лучше рекламировать конкретную игру. Тогда было мало структурированной информации по созданию и продвижению игр, новичку разобраться и найти ответы было исключительно сложно. Практически единственным источником информации был собственный опыт и консультации более опытных коллег. Сейчас ситуация кардинально изменилась. Информации по игровой индустрии настолько много, что рискуешь в ней просто утонуть. Для того, чтобы упростить процесс получения нужных мне знаний, я структурировал и делал себе пометки по всем источникам информации о геймдеве. Далее в статье предлагаю всю эту информацию в удобной форме для общего пользования.

image
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии52

Хочешь быть iOS разработчиком? Будь им!

Время на прочтение2 мин
Количество просмотров388K
На хабре в прошлом месяце была опубликована статья Конкурс ВК: Мессенджер для Android. Как это было!, в которой автор поделился своими мыслями о конкурсе и опубликовал список ресурсов и статей, которые помогли ему в создании приложения. Так как в последнее время я начал изучать разработку под iOS, то у меня скопилось некоторое количество ссылок, которые могут быть полезны для начинающих. Поэтому я последую его примеру и сделаю то же самое, только для своей платформы. Надеюсь, кому-нибудь они окажутся полезны и сэкономят немного времени.

Читать дальше →
Всего голосов 234: ↑222 и ↓12+210
Комментарии38

Гайдлайн по использованию Apple Watch Human Interface

Время на прочтение21 мин
Количество просмотров18K
Официальное руководство от Apple по разработке интерфейса для Apple Watch — теперь и на русском! Технические переводчики Alconost потрудились на славу. Правда, пока этот материал верстался, Apple выкатила новую версию гайдлайна, так что следите за обновлениями и в нашем блоге.


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

11 крутых сайтов для iOS разработчиков

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


Чтобы оставаться профессионалом в разработке iOS приложений, нужно постоянно учиться у других и узнавать о новейших инструментах и приемах. Кроме сайта Apple с документацией, существуют несколько ресурсов с ценными статьями и уроками, которые помогут нам стабильно развиваться. О них и пойдет речь в этой статье.
Читать дальше →
Всего голосов 30: ↑21 и ↓9+12
Комментарии9

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight

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

Вступление


С каждым годом становится всё очевиднее, что для распространения тестовых версий iOS-приложений нужны специализированные сервисы. Это актуально не только для компаний, занимающихся разработкой приложений в “промышленных масштабах”, но и для инди-разработчиков. Причины: увеличение количества устройств с “нестандартным”/”не кратным” размером экрана, отличия в архитектуре центрального и графических процессоров — всё то, что раньше было повседневностью для разработки под Android, теперь становится справедливым и для iOS.

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

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

В обзоре участвуют следующие сервисы (в таком порядке и будут публиковаться части обзора):
  • Apple TestFlight
  • HockeyApp
  • Ubertesters
  • Crashlytics (как часть Fabric)


TestFlight старой версии не будет рассмотрен, так как хотя он по-прежнему работает и доступен по адресу www.testflightapp.com, использование его в долгосрочной перспективе не имеет смысла по ряду причин:
  • нет никаких гарантий, что Apple не приостановит или не прекратит его работу в любой момент
  • SDK сервиса не доступно для скачивания, более того невозможно использовать сервис, если приложение использует SDK
  • сервис больше не является кросс-платформенным, поддерживается только распространения приложений для iOS (подробнее)

Важно! Буквально накануне публикации статьи команда TestFlight (старой версии) разослала уведомление, в котором сообщается, что старый сервис прекратит свою работу 26 февраля 2015 года (подробности).

Система оценки: сервисы будут оценены по 10-балльной шкале по каждому из разделов (Регистрация и интеграция, Основной функционал, Дополнительный функционал, Continuous Integration). Суммарная оценка позволит определить победителя (итоговое заключение войдет в последнюю часть обзора).

Читать далее. Осторожно, много картинок!
Всего голосов 15: ↑15 и ↓0+15
Комментарии36

Сервисы дистрибуции мобильных приложений для iOS. Часть 2: HockeyApp

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

Вступление


Вторая часть обзора будет посвящена сервису HockeyApp, с первой частью обзора можно ознакомиться тут.

По всей видимости, Miscrosoft решила не отставать от компании Apple, в результате чего в начале декабря было объявлено о приобретении HockeyApp (подробнее в блоге HockeyApp и на сайте Microsoft). В отличие от Apple, Microsoft не стала урезать функционал сервиса или ограничивать список поддерживаемых платформ. В пресс-релизе говорится, что сервис продолжит свою работу без изменений, а в дальнейшем получит развитие, о подробностях которого мы узнаем позже.

Система оценки: сервисы оцениваются по 10-балльной шкале по каждому из разделов (Регистрация и интеграция, Основной функционал, Дополнительный функционал, Continuous Integration). Суммарная оценка позволит определить победителя (итоговое заключение войдет в последнюю часть обзора).

Читать далее. Осторожно, много картинок!
Всего голосов 8: ↑7 и ↓1+6
Комментарии10

STM32 и FreeRTOS. 3. Встаем в очередь

Время на прочтение6 мин
Количество просмотров55K
Раньше: про потоки и про семафоры

«Вас много, а я одна!» — классическая фраза продавщицы, которую затерроризировали покупатели с вопросами «А есть ...?». Вот и в микроконтроллерах случаются полностью аналогичные ситуации, когда несколько потоков требуют внимания от какой-либо медленной штуки, которая просто физически не способна обслужить всех разом.

Возьмем наиболее яркий и богатый проблемами пример, на котором «валятся» большинство неопытных программистов. Есть мощный и достаточно быстрый микроконтроллер. К нему подключен с одной стороны адаптер com-порта, через который пользователь подает команды и получает результаты, а с другой — шаговый двигатель, который согласно этим командам поворачивается на какой-то угол. И конечно же, прикольная кнопочка, которая тоже что-то этакое значит для пользователя. Где можно наловить проблем?
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии7

STM32 и FreeRTOS. 1. Развлечение с потоками

Время на прочтение7 мин
Количество просмотров150K
Данный цикл из 5 статей рассчитан на тех, кому стало мало возможностей привычных «тинек» и ардуинок, но все попытки перейти на более мощные контроллеры оканчивались неудачей или не приносили столько удовольствия, сколько могли бы. Все ниженаписанное проговаривалось мной много раз на «ликбезе» программистов нашей студии (которые часто сознавались, что переход с «тинек» на «стмки» открывает столько возможностей, что попадаешь в ступор, не зная за что хвататься), поэтому смею надеяться, что польза будет всем. При прочтении подразумевается, что читающий — человек любопытный и сам смог найти и поставить Keil, STM32Cube и понажимать кнопки «ОК». Для практики я использую оценочную плату STM32F3DISCOVERY, ибо она дешевая, на ней стоит мощный процессор и есть куча светодиодиков.

Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых…



Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии35

STM32 и USB-HID — это просто

Время на прочтение14 мин
Количество просмотров370K
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать
Всего голосов 103: ↑101 и ↓2+99
Комментарии105

Упрощаем регистрацию и вход на сайт

Время на прочтение7 мин
Количество просмотров34K
Представляю вашему вниманию перевод статьи под названием "Innovative Techniques To Simplify Sign-Ups and Log-Ins" от Anthony T. Перевели в компании UXDepot специально для пользователей Хабрахабра с одобрением издания Smashing Magazine.


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



Форма авторизации на сайте Basecamp

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

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

Избавляемся от строковых констант в 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, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии41

Полезные штуки для iOS-разработчика #1

Время на прочтение4 мин
Количество просмотров83K
На Хабре в свое время было несколько статей «Очень много полезных штук для AS3». Автор попытался собрать ссылки на самые полезные и интересные библиотеки. И т.к. в последнее время я разрабатываю под iOS, решил последовать его примеру и сделать то же самое, но для своей платформы. Описания почти прикладывать не буду, все есть на страничках проектов.
Читать дальше →
Всего голосов 114: ↑109 и ↓5+104
Комментарии80

Архитектурный дизайн мобильных приложений

Время на прочтение9 мин
Количество просмотров98K
Признак плохого дизайна №1:
Наличие объекта-«бога» с именем, содержащим «Manager», «Processor» или «API»


Ведущий iOS-разработчик Redmadrobot Егор BepTep Тафланиди — о том, как добиться стройного архитектурного дизайна мобильного приложения, используя классические шаблоны проектирования и логическое разделение исходного кода на модули.

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

Практический streaming игр

Время на прочтение5 мин
Количество просмотров184K
История о том, как я открыл для себя стриминг игр и что из этого получилось с пошаговой инструкцией.

Посвящается всем, кому интересно эффективное использование имеющихся аппаратных средств.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии20

Стэнфордские курсы «Разработка iOS приложений» — неавторизованный конспект лекций на русском языке и 2015?

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


Я разместила иконки курсов Стэнфордского университета по разработке приложений на iOS в обратном хронологическом порядке. На первом месте стоит иконка Swift — нового языка программирования для создания приложений на iOS, объявленного на WWDC 2014. Кроме Swift реализована новая версия iOS — iOS 8. Уже известно, что Стэнфордский университет запустит зимой 2015 года новый курс CS193P с неизвестным пока названием (может быть будет что-то вроде «Developing iOS 8 Apps for iPhone and iPad»). Лектор тот же — профессор Paul Hegarty.
В традиции Стэнфорда выкладывать курс CS193P на iTunes U в виде бесплатного курса обучения, но делают это они со сдвигом во времени, чтобы не мешать платному обучающему процессу, так что в феврале-марте 2015 года (как это было в 2013 году) можно ожидать постепенное появление лекций на iTunes U. Так что время есть.
Я прошла почти все курсы профессора Пола Хэгарти — от iOS 5 до iOS 7 — до самого конца (смотри Github ).
Для подготовки к перспективному курсу по iOS 8 разместила на своем сайте «Разработка iOS приложений» неавторизованные конспекты лекций, тексты домашних заданий и примеры их решения на русском языке для последнего доступного в настоящее время обучающего курса «Developing iOS 7 Apps for iPhone and iPad», запущенного Стэнфордским университетом в семестре «осень 2013 — зима 2014 года» на iTunes U.

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

Обходим защиту iOS клиента Dropbox

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


Что в первую очередь сделает iOS разработчик, если перед ним встанет задача спрятать пользовательские данные от любопытных глаз? Конечно же, встроит экран парольной защиты. Особо хитрый разработчик даже не будет хранить установленный пользователем пароль в NSUserDefaults, а аккуратно спрячет его в связку ключей — в этом случае приложение в глазах как его, так и заказчика, сразу же перемещается в разряд «сверхзащищенных».
Мы не будем углубляться в описание опасностей хранения ключа в открытом доступе — ведь есть гораздо более интересный способ обхода такой защиты.
Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии21

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

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


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

Поддержка интерактивных нотификаций iOS 8 в приложении

Время на прочтение3 мин
Количество просмотров10K
Одним из нововведений iOS 8 являются интерактивные нотификации. Таким нотификациям можно назначить до четырех действий, каждое из которых будет представлено отдельной кнопкой внизу баннера с текстом нотификации. Таким образом, у пользователя появляются дополнительные возможности отреагировать на сообщения без активации (обычно) приложения. Рассмотрим, как добавить поддержку подобного функционала.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии9

Инструменты. Как юридически оформить разрыв партнерских отношений

Время на прочтение6 мин
Количество просмотров10K
Наши постоянные партнеры, юридическая фирма «Ветров и партнеры» продолжает знакомить вас с наиболее актуальными вопросами юридического аспекта iT-предпринимательства и оформления прав на интеллектуальную собственность. Новый материал от юристов из «Ветров и партнеры» посвящен вариантам правового оформления партнерских отношений, которые в случае необходимости помогут на законных основаниях вывести партнера из бизнеса.



Иногда желание привлечь партнера в бизнес очень быстро пропадает, когда начинаешь моделировать различные позитивные и негативные варианты взаимоотношений. В подобной ситуации, наверное, начинаешь обращать внимание на публикации в средствах массовой информации о том, как кто-то кого-то «кинул», на неудачный опыт своих знакомых или друзей, на попадающуюся судебную практику по этому вопросу. Но ведь маловероятно, что эмоции помогут в принятии разумного, взвешенного решения. Оно должно быть основано на всестороннем анализе имеющейся информации.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии2

Видео докладов с конференции CodeFest 2014

Время на прочтение1 мин
Количество просмотров13K
Мы рады поделиться с вами записью наших выступлений и видео с уникальной секции по высоким нагрузкам с конференции CodeFest. Вы можете задавать ваши вопросы к докладам в комментариях и мы на них обязательно ответим.

1. «Панель: Тренды разработки в высоконагруженных интернет-проектах».
Алексей fisher Рыбак (Badoo) собрал вместе лучших экспертов из Яндекса, Mail.ru, 2ГИС и Communico и обсудил с ними современные тенденции в разработке и поддержке больших высоконагруженных проектов. Плюс эксперты рассказали об интересных решениях и поделились личным опытом.


Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии13
1

Информация

В рейтинге
1 037-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Специалист
Lead
Git
C#
OOP
SWIFT
SwiftUI
Flutter
iOS development
Objective-C
UIKit
Client-server applications