Pull to refresh

Как подружить HTML5 с мобильными ОС

Reading time11 min
Views20K
Ты совсем рехнулся с этим WebGL!”, как-то заявил мне знакомый разработчик: “Изучаешь новый движок ради одной платформы?!

А ведь и, правда, работая с Unity, я получаю доступ ко многим платформам. Работая с Blend4Web — только к одной. Крупные компании могут позволить себе использовать несколько технологий для качественного портирования игры, в случае инди — это большая проблема.

И что, разрабатывая браузерный проект не с Unity, я ставлю крест на остальных платформах? Честно, этот разговор сильно поколебал мою решимость. Но недавно я услышал о фреймворках, с помощью которых можно чудесным образом портировать HTML5 на множество мобильных платформ.

Не все оказалось так просто. Хотя удалось найти пару многообещающих инструментов, которые показали приличные результаты.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments5

Три наиболее значимых нововведения с приходом watchOS2

Reading time6 min
Views10K
Итак, о чем действительно стоит упомянуть при переходе к разработке на watchOS2 — это следующие три пункта:

  • WKInterfacePicker
  • Complications
  • WCSession

В данной статье я коротко расскажу о каждом из них.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments7

Зимняя стажировка для разработчиков в Redmadrobot

Reading time2 min
Views13K
image
Привет, Хабр! Мы открываем набор на вторую стажировку для разработчиков в Redmadrobot. Старт — в середине января.
Интересно? Подробности под катом.
Total votes 19: ↑14 and ↓5+9
Comments17

Инструменты для A/B-тестирования iOS-приложений

Reading time6 min
Views15K

В данной статье я рассмотрю несколько инструментов для A/B-тестирования мобильных приложений с примерами и дам их краткую характеристику. Для успешного проведения тестирования также необходим сервис аналитики, в котором можно сравнивать результаты. Независимые сервисы аналитики мы сегодня рассматривать не будем, но затронем те возможности, которые есть внутри инструментов, о которых пойдет речь.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

MSLibrary. Создание и компиляция кроссплатформенных (универсальных) библиотек в Xcode

Reading time14 min
Views6K
Очередная статья от команды разработчиков библиотеки MSLibrary for iOS посвящена довольно популярной теме создания и компиляции кроссплатформенных библиотек.

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

Мы постарались как можно подробнее и систематичнее осветить вопрос, рассмотрев создание библиотеки «с нуля» и упаковку в библиотеку части функционала уже готового проекта. Под кроссплатформенностью или универсальностью мы подразумевали совместимость библиотеки как с симуляторами, работающими на процессоре с архитектурой i386 или x86_64, так и с реальными девайсами, процессор которых, вероятнее всего, имеет архитектуру armv7 или armv64.

1. Создаем проект библиотеки


При разработке библиотеки перед разработчиком может быть два пути, первый — библиотека создается «с нуля» и второй — в вашем проекте есть некий функционал, на основе которого вы хотите создать библиотеку. Рассмотрим оба.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments3

Релиз AppCode 2016.1: улучшенная поддержка Swift и C++

Reading time3 min
Views8.1K
Привет, Хабр!

На прошлой неделе вышел AppCode 2016.1. Изначально мы анонсировали его как 3.4, но потом совместно с другими десктопными продуктами JetBrains перешли на новую схему версионирования и теперь будем использовать ее.



С момента выпуска версии 3.3 прошло еще два минорных релиза, в которых появилось много полезного (например, Evaluate Expression и Set Value для отладчика в Swift). В 2016.1 мы в основном продолжали работать над поддержкой Swift — и вот что получилось.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments30

Переход на ReactiveCocoa v.4

Reading time5 min
Views10K
image

Если вы когда – либо интересовались фреймворком ReactiveCocoa, то заметили, что есть небольшое количество постов на тему реактивного программирования и фреймворка ReactiveCocoa, такие как Знакомство с ReactiveCocoa, или Лучший мир с ReactiveCocoa. До сегодняшнего дня, все эти посты были на тему ReactiveCocoa 2 версий, которая была написана на и для Objective-C. Сейчас все больше набирает популярность язык Swift, разработчики ReactiveCocoa усиленно работают над новой версией, которая будет написана на языке Swift и будет иметь некоторые функциональные особенности, которые являются фундаментальными для данного языка.

Я подозреваю, что многие из вас, как и я, с огромным желанием оставили Objective-C и перешли на Swift. Если вы хотели бы использовать ReactiveCocoa с новым языком, я вам настоятельно рекомендую попробовать использовать новую версию ReactiveCocoa. И я уверен, что наше сообщество получит огромную пользу от вклада, сделанного вами. С другой стороны, если вы работаете над большими бизнес приложениями в продакшн для определенного заказчика, я должен вам сказать – не делайте этого или хорошенько подумайте перед тем как использовать его. Но об этом мы поговорим дальше, если кого заинтересовал — прошу под кат.
Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments5

MSLibrary. ПРОСТО: объявляем глобальные переменные с помощью класса singleton, для iOS и не только…

Reading time3 min
Views3.1K
Разработчики библиотеки MSLibrary for iOS продолжают серию очень компактных статей, посвященных тому как ПРОСТО реализовать ту или иную функцию. Никакой теории, только практика…

Итак, как правильно объявить глобальные переменные? Под глобальными мы понимаем переменные, объявленные на внешнем уровне (не static) и имеющие глобальное время жизни.

Если мы объявим переменную в одном из заголовочных файлов, например в файле MyClass.h таким, казалось бы логичным, образом:

NSString *myGlobalVariable;

а затем импортируем файл MyClass.h с помощью директивы #import в несколько файлов, например, MyClass1.h, MyClass2.h, MyClass3.h и MyClass4.h, то в результате с большой вероятностью получим примерно такое сообщение об ошибке:

duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass1.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass2.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass3.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass4.o

ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Произойдет это по тому, что в результате импорта переменная myGlobalVariable будет объявлена в каждом из подключенных файлов.
Читать дальше →
Total votes 10: ↑3 and ↓7-4
Comments7

О мобильной платформе 1С: Предприятия

Reading time15 min
Views117K
Мобильная платформа 1С:Предприятия – это набор инструментов и технологий для быстрой разработки приложений под мобильные ОС iOS, Android, Windows Phone / 8.1 / 10, с использованием тех же сред разработки (Конфигуратор или 1С:Entrprise Development Tools) и тех же методик разработки, что используются для «обычных» приложений 1С. В результате получаются автономные, офлайновые приложения, но с возможностью обмена информацией с внешним миром при помощи широкого спектра средств интеграции, предоставляемого платформой: Web и HTTP-сервисы, е-мейл и т.д. Поскольку протоколы обмена – платформенно-независимые, мобильная платформа 1С, помимо прочего – это средство быстрого создания мобильного фронт-энда для практически любого серверного решения.
image
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments51

Бусидо Mobius: Путь участника

Reading time7 min
Views5.2K
Как вы уже знаете, по итогам Mobius 2015 мы получили множество отзывов: как приятных, так и наполненных разной критикой — как конструктивной, так и не очень. Одни участники положительно отзывались о содержании докладов, подборе спикеров и организационных моментах, другие сетовали на очередь на обед и обилие секьюрити в программе (об этом мы писали ранее).

При подготовке Mobius 2016 мы постарались учесть рекомендации и пожелания участников прошлогодней конференции: 4 июня увидим, что из этого получилось. А пока давайте разберемся, за что наши участники любят Mobius, и почему люди приходят к нам из года в год.



Мы рассмотрели три «стадии» участия в конференции и спросили наших участников, что они думают о каждом из них:

Сомнения.

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments0

Microsoft приобретает компанию Xamarin

Reading time1 min
Views49K


Друзья, прекрасная новость настигла нас прямо в середине рабочей недели!

Компания Microsoft официально объявила о приобретении Xamarin — крупнейшей платформы для разработки мобильных приложений.

Xamarin позволяет разработчикам использовать все преимущества и возможности .NET платформы для создания мобильных приложений с помощью языка С#, и предоставляет полноценные наборы нативных API для использования возможностей каждой из мобильных платформ, для которых создается приложение.
Читать дальше →
Total votes 61: ↑51 and ↓10+41
Comments117

Введение в Firebase: пишем простое социальное приложение на Swift

Reading time16 min
Views214K
В связи с неожиданным решением Facebook закрыть Parse, многое разработчики задались вопросом, что использовать вместо него. Сегодня практически невозможно представить полностью автономное приложение, которое было бы полезное всем. В связи с этим, iOS разработчики в своей работе пользуются инструментами и ресурсами, предоставленные Apple для доступа к данным. Backend-as-a-service, или сокращенно BaaS является потрясающим инструментом для разработчиков.

Среди наилучших и наиболее популярных BaaSs можно выделить Firebase от компании Google. По существу, Firebase является безусловно потрясающим в исполнении, реализации и эксплуатации. Firebase служит базой данных, которая изменяется в реальном времени и хранит данные в JSON. Любые изменения в базе данных тут же синхронизируются между всеми клиентами, или девайсами, которые используют одну и ту же базу данных. Другими словами, обновление в Firebase происходят мгновенно.

Вместе с хранилищем, Firebase также предоставляет пользовательскую аутентификацию, и поэтому все данные передаются через защищенное соединение SSL. Мы можем выбрать любую комбинацию email и пароля для аутентификации, будь то Facebook, Twitter, GitHub, Google, или что-то другое.

В добавку к iOS SDK, у Firebase есть SDK для Android и JavaScript. Все платформы могут использовать одну базу данных.
Сложно представить что Firebase со всеми этими функциями бюджетное решение.

На момент написания этой статьи, в бесплатном пакете Firebase может обрабатывать до 100 одновременных соединений. Этого вполне достаточно для работы популярного приложения. За $49 в месяц ограничений на сетевую активность нет.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments5

Ангстрем. Кучка сложностей в простой обёртке

Reading time10 min
Views10K

Когда требуется ещё один велосипед?


Ангстрем, безусловно, если смотреть на выполняемую функцию, велосипед. Сколько способов преобразовать единицы? Много. Можно пользоваться гуглом, можно одним из сотен приложений для iOS или Android.

Но, вместе с тем, ни один способ не решал одну проблему. Как мне получить результат конвертирования, когда я смотрю сериал? Конкретно, Mythbusters. Они там всегда общаются между собой про футы и фунты. Сколько это? Большая ли квартира, 500 ft²? (не очень, как оказалось) Много ли это, 27 psi (угу, дофига)? И, наконец, скажите им, что Фаренгейты — вообще никому не понятны!

С обычными конверторами приходится останавливать видео, выяснять, какая это категория, «psi», потом искать там этот самый «pounds per square inch», вспоминать, какое число нужно ввести, понять, во что её перевести (чтобы осознать масштаб проблемы). Делать это хочется с тем устройством, которое под рукой, желательно без интернета.

И вот эту проблему не решить ни одним конвертером. Я перепробовал, наверное, сотню. Она решается гуглом, но это тоже медленно (запустил браузер, ввел что-то в строке, гугл не понял, или понял не так...).

Так что велосипед ли Ангстрем? Вроде бы нет.

Поглядим теперь на сложности, которые пришлось решить при его разработке. Технические сложности, программерские.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments16

Как организована передача финансовых данных на американской бирже Nasdaq: Протоколы ITCH и OUCH

Reading time5 min
Views11K


В нашем блоге мы уже рассказывали об использующихся на мировых биржах протоколах передачи финансовой информации. Речь шла о таких протоколах, как FIX и FAST, которые широко применяются фондовыми площадками по всему миру, а также о проприетарных протоколах Plaza II и ASTS Bridge, которые были созданы специалистами российских бирж РТС и ММВБ, позднее объединившихся в «Московскую биржу».

Сегодня мы продолжим цикл материалов и поговорим о проприетарных протоколах биржи Nasdaq ITCH и OUCH.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments3

MSLibrary. Захват и верификация телефонных номеров с помощью регулярных выражений, для iOS и не только… Часть 1

Reading time9 min
Views7.1K
Поводом для появления серии статей, первая из которых представлена вашему вниманию, послужил большой аналитический и практический материал, накопившийся в процессе работы над библиотекой MSLibrary for iOS. Библиотека MSLibrary включает множество классов, и еще больше функций и макросов, призванных упростить рутинный труд разработчиков, существенно сократить сроки разработки и размер кода. Но, всему свое время, о библиотеке мы расскажем чуть позже.

Итак, захват и верификация телефонных номеров с помощью регулярных выражений. Казалось бы, о чем здесь говорить? Кто умеет, напишет сам, а кто не умеет скопирует одно из множества готовых решений, разбросанных на просторах Всемирной паутины. Вопрос только в том, что он напишет и что скопирует и насколько этот код будет соответствовать поставленным задачам, а также действующим международным, отраслевым и корпоративным стандартам? Любое решение, даже самое простое, хорошо лишь в том случае, если разработчик полностью осознает его работу и абсолютно в нем уверен.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments4

MSLibrary. Захват и верификация телефонных номеров с помощью регулярных выражений, для iOS и не только… Часть 2

Reading time8 min
Views2.2K
В первой части статьи разработчики библиотеки MSLibrary for iOS рассказали об особенностях структуры телефонных номеров с точки зрения международных стандартов, опубликованных в документе RFC 3966 , рассмотрели Международную структуру телефонных номеров, корпоративные WEB стандарты набора телефонного номера, их взаимодействие между собой и то, как ведут себя пользователи.
Как уже было сказано, захват и верификация это — разные задачи, но решаются они схожими методами, различающимися в основном применяемыми в них регулярными выражениями. Во второй части статьи речь пойдет собственно о регулярных выражениях.

Верификация телефонных номеров

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

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

Рассмотрим оба варианта, но сначала общие соображения.

Валидация строки телефонного номера, чтобы он был адекватно обработан iOS, сводится к нескольким условиям:
1. общая структура номера должна соответствовать документу RFC 3966

telephone-uri = global-number-digits [extension]
рис. 1
Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments0

Работа мечты или небольшая история мобильной разработки

Reading time15 min
Views46K

Глава 1. В поисках сокровищ


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

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

image

Если вы читаете эту статью, значит мы выжили после разработки третьей по счету мобильной игры и выпустили её в свет. За время разработки, я много раз открывал заветную иконку хабры, дабы увидеть очередной рассказ от разработчиков, которые делятся своим опытом и впечатлениями. К сожалению, многие разработчики упускают много тонкостей и нюансов, особенно, если это касается бюджета и продвижения их игры, а зря.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments32

MSLibrary. ПРОСТО: удаляем из строки ненужные символы, используя регулярные выражения, для iOS и не только…

Reading time2 min
Views4.6K
В дополнение к большим и подробным материалам, разработчики библиотеки MSLibrary for iOS решили начать серию очень компактных статей, посвященных тому как ПРОСТО реализовать ту или иную функцию. Никакой теории, только практика…

Итак, удаляем из строки ненужные символы, используя регулярные выражения, с помощью простой функции:

NSString *yourFuncionName(NSString *string) {
    NSString *regExString = @"yourRegularExpression";
    NSRegularExpression *_regEx = [NSRegularExpression regularExpressionWithPattern:regExString options:NSRegularExpressionCaseInsensitive error:nil];
    return [_regEx stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
}

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

Несколько полезных регулярных выражений:

    \\s - удаляет все пробелы
    [-:_\\.] - удаляет все символы, находящиеся в квадратных скобках
    [:^digit:] - оставляет только цифры
    [:^alpha:] - оставляет только буквы
    [:^alnum:] - оставляет только буквы и цифры
    [:^word:] - оставляет только буквы, цифры и подчеркивания
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments11

Анонс Rambler.iOS #6

Reading time2 min
Views7.2K
image

Мартовский вечер,
Расцветает сакура,
Быть Rambler.iOS.

Пришла весна, и мы, команда iOS-разработки холдинга Rambler&Co, с удовольствием анонсируем следующую конференцию — Rambler.iOS 6. Конференция состоится 30 марта в нашем офисе на Даниловской мануфактуре.
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments4

Использование Ångström Style System в реальных проектах

Reading time4 min
Views2.4K
Что такое Ångström Style System (ÅSS)? Это вторая версия библиотеки стилей для нативных приложений iOS, которую написал Шурик Бабаев (@bealex). Недавно появилась новая версия на Swift, которая называется S2, но мы её ещё не успели попробовать, поэтому я расскажу про реальное использование ÅSS на одном из наших текущих проектов.

Ура! Игра!


Я занимаюсь разными игровыми проектами. В процессе создания каждой игры требуется настройка игрового дизайна, учитывать приходится огромное количество нюансов. Если вы также ведёте разработку «PvZ-inspired» игры, то вам будет необходимо продумать, как эффективно организовать настройки. Как? Читайте дальше.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments0