Как стать автором
Обновить
9
0

iOS Lead Developer

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

Безопасность iOS-приложений: гайд для новичков

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

Привет! Меня зовут Гриша, я работаю application security инженером в компании Wrike и отвечаю за безопасность наших мобильных приложений. В этой статье я расскажу про основы безопасности iOS-приложений. Текст будет полезен, если вы только начинаете интересоваться безопасностью мобильных приложений под iOS и хотите разобраться, как все устроено изнутри.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

Как снять и «склеить» сферическую панораму на DJI Mavic Air

Время на прочтение6 мин
Количество просмотров27K
С выходом Dji Mavic Air процесс создания сферических панорам вроде бы упростился до предела — нажал кнопку и сфера готова. Так говорилось в рекламе. Я, честно говоря, уже ожидал, что весь наш шарик отснимут за первые же месяцы продаж, но почему-то этого не произошло.


photo by Paul Oostveen
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии12

Смотри меня полностью: выжимаем максимум из live video на мобильных платформах

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


Самый простой способ воспроизвести видео на мобильном устройстве — это открыть ссылку имеющимся в системе плеером, но это не всегда эффективно.

Можно взять ExoPlayer и оптимизировать его, а можно вообще написать свой видеоплеер, используя только кодеки и сокеты. В статье будет рассказано о работе стриминга и воспроизведения видео, и о том, как уменьшить задержку старта видео, снизить время отклика между стримером и зрителем, оптимизировать энергопотребление и нагрузку на железо.

Разберём это на примере конкретных приложений: мобильного клиента «Одноклассников» (где видео воспроизводят) и OK Live (где трансляции стримят с телефона в 1080p). Здесь не будет мастер-классов о том, как по ссылке проиграть видео, с примерами кода. Рассказ пойдёт о том, как видео выглядит изнутри, и как, зная общую архитектуру видеоплееров и видеостриминга, можно разобраться в любой системе и сделать её лучше.

В основе материала — расшифровка доклада Александра Тоболя(@alatobol) и Ивана Григорьева(@ivan_a) с конференции Mobius.



Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии2

Телеграм-каналы о разработке игр

Время на прочтение2 мин
Количество просмотров30K
Привет! Я инди-разработчик и автор канала о разработке игр. Решил поделиться с вами интересными геймдев ресурсами в Телеграме, которые сам регулярно читаю. За последние 3 года появилось много классных сообществ и авторских блогов о разработке, которые раньше были только в ВК. Надеюсь, будет полезно!


Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии33

Jenkins для Android сборки, с помощью Docker

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

Я работаю андроид разработчиком, и не так давно мы столкнулись с некоторыми рутинными задачами на своем проекте, которые хотелось бы автоматизировать. Например у нас 5 разных flavor, для каждого из которых требуется загружать свой билд на fabric, иногда для разных тасок по несколько раз в день. Да эту задачу можно сделать и с помощью gradle таски, но хотелось бы не запускать этот процесс на машине разработчика, а делать это как-то централизовано. Или например автоматически заливать билд в google play в бету. Ну и просто хотелось поковырять CI систему. Что из этого получилось, и как мы это настраивали, зачем там Docker, далее в статье.


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

Генерация окружения на основе звука и музыки в Unity3D

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

Аннотация


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



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

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Unity3D: Модификация делегата iOS приложения

Время на прочтение15 мин
Количество просмотров3.8K
Думаю, многим в ходе разработке игры для iOS приходилось сталкиваться с тем, что возникает необходимость использовать тот или иной нативный функционал. Касаемо Unity3D, в данном вопросе может возникать очень много проблем: для того, чтобы внедрить какую-то фичу, приходится смотреть в сторону нативных плагинов, написанных на Objective-C. Кто-то в этот момент сразу отчаивается и забрасывает идею. Кто-то ищет готовые решения в AssetStore или на форумах, надеясь на то, что готовое решение уже существует. Если же готовых решений не существует, то самые стойкие из нас не видят другого выхода, кроме как погрузиться в пучину iOS программирования и взаимодействия Unity3D с Objective-C кодом.

Тех, кто выбирает последний путь (хотя, думаю, они и сами знают), ожидает множество проблем на этом нелегком и тернистом пути:

  • iOS — абсолютно незнакомая и обособленная экосистема, развивающаяся своим путем. Как минимум придется потратить довольно много времени, чтобы понять как можно подобраться к приложению, и где в недрах автоматически сгенерированного XCode проекта находится код взаимодействия Unity3D движка c нативной составляющей приложения.
  • Objective-C — довольно обособленный и мало на что похожий язык программирования. А когда речь заходит о взаимодействии с C++ кодом Unity3D приложения, то на сцену выходит «диалект» этого языка, под названием Objective-C++. Информации о нем совсем немного, большая ее часть древняя и архивная.
  • Сам протокол взаимодействия Unity3D с iOS приложением довольно скудно описан. Расчитывать стоит исключительно на туториалы энтузиастов в сети, которые пишут как разработать простейший нативный плагин. Мало кто при этом затрагивает более глубокие вопросы и проблемы, возникающие при потребности сделать что-то сложное.

Тех, кто хочет узнать о механизмах взаимодействия Unity3D с iOS приложением, прошу под кат.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии1

Пишем плагин для Unity правильно. Часть 1: iOS

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


Когда делаешь на Unity игры для мобильных платформ, рано или поздно придется писать часть функционала на нативном языке платформы, будь то iOS (Objective C или Swift) или Android (Java, Kotlin). Это может быть свой код или интеграция сторонней библиотеки, сама установка может заключаться в копировании файлов или распаковки unitypackage, не суть. Итог этой интеграции всегда один: добавляются библиотеки с нативным кодом (.jar, .aar, .framework, .a, .mm), скрипты на C# (для фасада к нативному коду) и Game Object со специфичным MonoBehavior для отлавливания событий движка и взаимодействия со сценой. А еще часто требуется включать библиотеки зависимостей, которые нужны для работы нативной части.

Весь этот механизм интеграции обычно не вызывает проблем на чистом проекте, в котором еще нет (или мало) интеграций таких сторонних библиотек. Но когда проект разрастается, всплывает много проблем, усложняющих этот процесс, а часто дающих необходимость дополнительных модификаций и адаптирования под проект плагина, что потом выливается в увеличении сложности последующей поддержки и обновления.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии3

Универсальные ссылки: дворец из подводных камней

Время на прочтение14 мин
Количество просмотров27K
При том, как много мобильные приложения дали человечеству, они в то же время «сломали» интернет. Вместо понятных ссылок на сайты, которые можно скопировать и поделиться, стало нужно объяснять «поставь такое-то приложение и зайди там туда-то».

К счастью, разработчики мобильных платформ осознали эту проблему и предложили концепцию «универсальных ссылок», которые одним кликом открывают нужное на любой платформе. Но то, что для пользователя «одним кликом», для программиста — «потом и кровью». На пути к успеху стоит целый ворох неожиданных нюансов, и Константин Якушев познакомился с ними на личном опыте при внедрении универсальных ссылок в Badoo. А затем на нашей конференции Mobius рассказал, как сделать всё правильно и обойти проблемы. Зрителям доклад понравился, и мы решили, что негоже полезному материалу оставаться только видеозаписью, поэтому под катом — его текстовая версия.

В докладе ситуация рассмотрена со стороны iOS, но универсальные ссылки на то и универсальные, чтобы объединять разные платформы, так что извлечь пользу могут не только iOS-разработчики.

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

Борьба за время сборки iOS-приложений

Время на прочтение4 мин
Количество просмотров11K
Чуть больше месяца назад мы выпустили iOS-приложение «Тинькофф Инвестиции». Приложение полностью написано на языке Swift, но имеет некоторые Objective-C-зависимости. Продукт быстро начал обрастать новой функциональностью, а вместе с тем время сборки проекта существенно увеличивалось. Когда мы пришли к тому, что после clean или значительных правок проект собирался дольше шести минут, мы осознали, что перемены необходимы.

image

На просторах интернета было найдено много действенных и не очень способов ускорить время сборки проекта. Особенно нас интересовало время сборки debug-версии, потому что работать становилось всё сложнее. Ниже я расскажу о методах, которые мы опробовали в рамках решения задачи, и результатах, которых мы добились. Хочу отметить, что долгое время сборки может зависеть от разных факторов, поэтому и методы для каждого проекта используются разные.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии16

Введение в процедурную анимацию

Время на прочтение11 мин
Количество просмотров51K
image

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

GIF

Серия будет состоять из следующих частей:

Всего голосов 48: ↑46 и ↓2+44
Комментарии3

Заполняем «Соглашения, налоги и банковскую информацию» в iTunes connect для русского ООО

Время на прочтение3 мин
Количество просмотров17K
Как разместить свое приложение в App Store, если ты юридическое лицо из России? Инструкций для ИП в Интернетах можно найти уйму. А вот если ты смелый, ловкий, умелый, услышал, как тебя джунгли зовут (каламбур из детства 90-х, если кто не понял) и с дуру оформил ООО, то трудностей на пути к покорению iTunes Connect тебе предстоит немало. Посему, решив прервать этот порочный круг поисков ответов на вопросы, как заполнить злосчастную налоговую информацию для ООО, спешу поделиться своим опытом.

image
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии6

Что в имени тебе моем: как качественно «пробить» человека в сети Интернет?

Время на прочтение5 мин
Количество просмотров196K
Мы постоянно встречаемся в своей жизни с новыми людьми, и стоит констатировать, что помимо хороших друзей нам попадаются мутные товарищи, а иногда и отъявленные мошенники. Любовь наших сограждан оставить свой след в интернете и старания наших ИТ-компаний по автоматизации всего и вся позволяют нам довольно оперативно собирать интересующую информацию о конкретных персонах по открытым источникам. Чтобы это делать быстро и качественно, нам нужно владеть простой методологией разведывательной работы и знать, где и какую информацию о человеке можно добыть в интернете.
Читать дальше →
Всего голосов 90: ↑70 и ↓20+50
Комментарии56

Генерирование полигональных карт для игр

Время на прочтение24 мин
Количество просмотров58K
Я хотел научиться генерировать интересные игровые карты, которые не обязательно были бы реалистичными, а также попробовать техники, с которыми раньше не работал. Обычно я создаю карты с другой структурой. Что можно сделать с тысячей полигонов вместо миллиона тайлов? Отчётливо различимые игроком области могут быть полезны для геймплея: местоположения городов, места квестов, территории для захвата или колонизации, ориентиры, точки поиска пути, зоны с разной сложностью и т.д. Я генерировал карты с помощью полигонов, а затем растеризировал их вот в такие карты:

image

Во многих процедурных генераторах карт, в том числе и некоторых моих предыдущих проектах, для генерирования карты высот используются функции шума (midpoint displacement, фракталы, diamond-square, шум Перлина и т.д.). Здесь я их не применял. Вместо неё я использовал структуру графов для моделирования элементов, определяемых ограничениями геймплея (высота, дороги, течение рек, места квестов, типы монстров) и функции шума для моделирования того, что не ограничивается геймплеем (форма побережья, расположение рек и деревьев).
Читать дальше →
Всего голосов 100: ↑99 и ↓1+98
Комментарии11

Как «пробить» человека в Интернет: используем операторы Google и логику

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

В очередной статье нашего цикла публикаций, посвященного интернет-разведке, рассмотрим, как операторы продвинутого поиска Google (advanced search operators) позволяют быстро находить необходимую информацию о конкретном человеке.


В комментариях к первой нашей статье, читатели просили побольше практических примеров и скриншотов, поэтому в этой статье практики и графики будем много. Для демонстрации возможностей «продвинутого» поиска Google в качестве целей были выбраны личные аккаунты автора. Сделано это, чтобы никого не обидеть излишним интересом к его частной жизни. Хочу сразу предупредить, что никогда не задавался целью скрыть свое присутствие в интернете, поэтому описанные методы подойдут для сбора данных об обычных людях, и могут быть не очень эффективны для деанонимизации фэйковых аккаунтов, созданных для разовых акций. Интересующимся читателям предлагаю повторить приведенные примеры запросов в отношении своих аккаунтов и оценить насколько легко собирать информацию по ним.


Читать дальше →
Всего голосов 122: ↑105 и ↓17+88
Комментарии108

Как сделать идеальный туториал для хардкор геймеров и их мам

Время на прочтение7 мин
Количество просмотров15K
В этой статье мы хотим представить вам конспект с выступления Джоржа Фэна — создателя Plants vs Zombies, любителя стейков сильной прожарки и редких карт Magic: The Gathering.

Джордж весело и конструктивно описывает процесс создания и интеграции туториала для своей игры. А универсальность и простоту обучения подтверждает рассказом о том, как его мама, до этого не сталкивавшаяся с видеоиграми, прошла всю Plants vs. Zombies и победила последнего босса. Основной посыл Джорджа таков: люди любят учиться, но не всегда об этом знают. А при первом знакомстве с игрой именно туториал является определяющим фактором того, станет ли пользователь играть и получать удовольствие от геймплея, или в ужасе закроет игру и с воплями убежит в горизонт.


Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии19

Тюнинг Swift компилятора. Часть 2

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

image


Продолжение исследования способов ускорить компиляцию Swift. Издевательство над семантическим анализатором и неожиданные настройки проекта.


Ссылка на первую часть для тех, кто пропустил.


Всего голосов 23: ↑20 и ↓3+17
Комментарии4

Дневник выступлений с минского DevGAMM 2016

Время на прочтение20 мин
Количество просмотров9.7K
10-11 ноября в Минске прошла конференция разработчиков игр DevGAMM. На нее приехало 1300 гостей, было 80 докладчиков, в сумме прошло более 60 сессий (доклады, мастер-классы и круглые столы). Среди них были доклады от Чета Фалижека (игровой сценарист Valve), Тони Уоткинса (генеральный директор EA Russia), Петра Иваницки (разработчик игры SUPERHOT), Якуба Дворски (создатель Machinarium, Samorost 3), Марты Деттляфф и Кацпера Непокульчицкого (художники Ведьмак 3), Майка Хайнса (евангелист отдела разработки Amazon), Имре Джеле (разработчик Surgeon Simulator и I am bread) и Алекса Ничипорчика (CEO компании tinyBuild) и многих других докладчиков. Под катом мы собрали для вас видеозаписи и краткое описание всех докладов с метками для удобства поиска по ним.


Всего голосов 14: ↑13 и ↓1+12
Комментарии5

Система сборки Xcode: advanced tutorial

Время на прочтение7 мин
Количество просмотров39K
image
Конфигурация проекта в Xcode выглядит, как пульт управления космическим кораблем. Зачастую люди понимают, как работает система сборки, но путают термины. В этой статье мы пройдемся по структуре проекта, таргетам, настройкам конфигураций и воркспейсам. Поехали!
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии3

RxSwift: работа с GUI

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


Моя первая статья по RxSwift покрывала практически все базовые операторы, без знаний которых соваться в разработку не имело особого смысла. Но это всего лишь алфавит функционального программирования. Для того чтобы писать полноценные программы необходимо понять основные принципы при работе с GUI.

В основном для проработки материала используются стандартные примеры из RxExample, но для прояснения отдельных моментов была создана песочница UIExplanation и дополнительный пример в RxExample
Весь код можно найти здесь github.com/sparklone/RxSwift

При работе с UI элементами в Rx есть основные потребности:
1) понять какие подводные камни нас ожидают в принципе и зачем нужен Driver
2) научиться делать привязку UI к Observable, чтобы элементы Observable меняли состояние свойства/свойств UI элемента. Это решается с помощью UIBindingObserver
3) научиться переводить паттерн target-action на рельсы Rx. Это делается с помощью ControlEvent
4) сделать двустороннюю привязку к свойствам UI элемента. Это делается с помощью ControlProperty
5) т.к. зачастую у UI элементов delegate/dataSource предполагаются в единственном числе, — ввели класс DelegateProxy, который позволяет одновременно использовать как обычный делегат, так и Rx последовательности.

Рассмотрим каждую потребность отдельно
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии29
1
23 ...

Информация

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