Search
Write a publication
Pull to refresh
12
Кирилл Кунст @leoruread⁠-⁠only

Разработчик мобильных приложений

Send message

Процесс тестирования мобильных приложений

Reading time4 min
Views139K
Тестирование – очень важный этап разработки мобильных приложений.

Стоимость ошибки в релизе мобильного приложения высока. Приложения попадают в Google Play в течении нескольких часов, в Appstore несколько недель. Неизвестно сколько времени будут обновляться пользователи. Ошибки вызывают бурную негативную реакцию, пользователи оставляют низкие оценки и истерические отзывы. Новые пользователи, видя это, не устанавливают приложение.

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

Поэтому в отделе тестирования у нас работает 8 человек (0,5 тестировщика на программиста), за его развитием и процессами следит выделенный тест-лид.

Под катом я расскажу как мы тестируем мобильные приложения.


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

Боремся с ошибками акселерометра, гироскопа, M7, цифрового компаса и других датчиков в iPhone 5S и не только

Reading time9 min
Views130K


Многие наслышаны о проблеме с неоткалиброванными датчиками в новом iPhone 5S – инструмент «уровень», встроенный в родной компас iOS 7 показывает отклонение в несколько градусов, если устройство положить на плоскую поверхность, например, стол.

Если кратко, то в той или иной степени проблема ориентации датчиков присутствовала всегда и на всех устройствах с iOS. Ранее проблему не наблюдали так часто в виду отсутствия встроенного в мобильную OS приложения позволяющего измерять уровень. Аналогичная проблема имеет место быть и на других мобильных устройствах оснащенных акселерометром, поскольку принципы везде заложены одинаковые – с этим не понаслышке должен быть знаком каждый разработчик, которому приходилось иметь дело с различными датчиками движения и ориентации.

Я разрабатываю приложения с использованием датчиков акселерометра, гироскопа и цифрового компаса, ровно с тех самых пор, как разработчикам стал доступен API, практически с самого начала – будучи автором одного из самых популярных компасов для iOS с проблемами калибровки акселерометра и точности других датчиков я столкнулся еще несколько лет назад.

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

Приглашаю разработчиков и пользователей приложений разобраться, как это работает, откуда берутся эти ошибки, почему не стоит излишне беспокоиться о проблемах акселерометра и почему не нужно бежать бегом в магазин для замены «бракованного» устройства – новое устройство вряд ли будет намного лучше, а проблемы с ошибками датчиков решаются другими способами.
Читать дальше →

CodeNotes — победитель Clojure Cup 2013

Reading time2 min
Views23K
Мы сделали это.
Российский проект CodeNotes за авторством Грошева Дмитрия (si14) и Пантюхова Александра (alwxndr) из Санкт-Петербурга, Дину Александра (zloy_alu) из Тюмени и Сорокоумова Александра из Мюнхена занял первое место на хакатоне Clojure Cup 2013.

Мы хотели бы поблагодарить всех тех, кто голосовал за нас и немного рассказать о нашем проекте и о том, что мы хотим из него получить.
image
Читать дальше →

Разработка мобильных приложений с Dropbox Datastore API

Reading time4 min
Views9.4K
У Dropbox есть три API для мобильных приложений:
  • Drop-ins два простых UI компонента: Chooser для выбора файла из Dropbox-директорий пользователя и Saver для сохранения файлов в Dropbox. Никакой настройки, аутентификации. Вызываете компонент, взамен получаете ссылку на файл. Под iOS и Android доступен только Chooser, Saver появится позже.
  • Core API самый низкоуровневый API. Он позволяет читать и записывать файлы и директории на сервере Dropbox. Авторы называют API — RESTish. То есть он использует HTTP, читаемые URL, JSON ответы, но не следует REST принципам досконально. Для аутентификации используется OAuth 2.0.
  • Sync API работает поверх Core API и выглядит как доступ к файловой системе. Директории и файлы доступны даже без доступа к интернету и синхронизируются автоматически с серверами Dropbox. Самое удобное API для разработки мобильных приложений.

Sync API хорош, но по статистике, многие мобильные разработчики используют его для хранения структурированных данных. Сериализуют их в JSON, сохраняют в файлы, синхронизируют с облаком. Это работает до тех пор, пока не происходит одновременного изменения данных с разных устройств. Даже если вы поменяете не конфликтующие по смыслу данные, на уровне файла это будет конфликт и Dropbox не сможет его решить.

Поэтому мы выпустили Datastore API. Он синхронизируем не файлы, а данные, чем-то похож на удаленную NoSQL базу данных с кешированием.

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

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views153K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

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

Пишем фреймворк для разработки игр — Mechanic Framework

Reading time26 min
Views25K
Добрый день, жители Хабра!
Сегодня мы будем писать фреймворк с названием Mechanic Framework для удобной разработки игр под андроид.

image

Что нам потребуется:


  • Установленные Eclipse и Android SDK
  • Приличное знание Java либо другого С-подобного языка. Лучший пример – C#
  • Терпение


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

Настройка Travis-CI для iOS проектов с открытым кодом

Reading time4 min
Views5.6K
Непрерывная интеграция (continuous integration) — практика разработки, позволяющая добиться большей уверенности в стабильности и корректности работы любого проекта. Проекты с открытым кодом — не исключение.

Примерно два месяца назад, в апреле 2013 года комапания Sauce labs объявила о поддержке iOS / Mac для CI-сервера Travis. Сам сервис существует уже довольно давно, и пользуется довольно большой популярностью в open-source community благодаря поддержке большого количества языков и удобству использования. Cервис бесплатен для любого пользователя github и открытых репозиториев. На Хабре уже имеется пост о сервисе и его настройки для тестирования Ruby-проектов, поэтому в этой статье я хотел бы рассказать о более специфической стороне сервиса — настройке автоматической сборке билдов iOS проектов на Travis-CI. Основным фокусом этой статьи будет связка CocoaPods + Cedar + Travis CI, однако я постараюсь рассказать немного и о других связанных с темой вещах.

Итак, начнем.
Читать дальше →

Соединение SlidingMenu с Support Library и обход возможных проблем

Reading time8 min
Views15K

Предисловие


Здравствуй, Хабр!

Сразу хочу сделать небольшое отступление от темы: я не профессиональный android-разработчик и только учусь. В этом посте, рассчитанном более на новичков, мне бы хотелось объединить решения тех проблем, с которыми столкнулся, при написании задуманного приложения, а в частности использовании ActionBar при помощи Support Library и присоединении к ним SlidingMenu.

Примерами качества для меня являются приложения VK, Forsquare и Instagram. Собственно из них сразу были взяты идеи использования ActionBar и SlidingMenu. Как и при верстке/разработке web-сайтов (моим основным делом) и их приличной работе в Internet Explorer, так и здесь, я первым делом задумался над совместимостью с устаревающими версиями Android, поскольку ActionBar поддерживается только с 3.0. Благодаря поиску быстро нашел решение — ActionBar для версий 2.1+.
Читать дальше →

iOS 7 и Xamarin

Reading time2 min
Views25K
18 сентября, одновременно с официальным релизом iOS 7, вышел Xamarin.iOS 7.

Xamarin подготовил обширную документацию (на английском), чтобы помочь разобраться с чего начать.

Под катом Мигель рассказывает о самых интересных, на его взгляд, изменениях в iOS 7 API с ссылками на примеры кода.




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

AI своими руками. Вы готовы начать?

Reading time9 min
Views8.4K
Здравствуйте, друзья!
Поясняю сразу — статья носит практический характер. Но сначала аллегория.
Итак, вы когда-нибудь обращали внимание на грустную картину — погибших под колёсами автомобилей животных? Жаль зверюшек. За миллионы лет эволюции они прекрасно приспособились к окружающей среде, но вот времени на то, чтобы приспособиться к техносфере, им никто не выделил.
Однако не возникает ли у вас ощущения, что мы постепенно оказываемся в очень похожей ситуации? Мы изобрели кучу всяких технологий, но с появлением всё новых и новых контролировать их всё труднее. И уже не совсем понятно, то ли они работают на нас, то ли заставляют нас делать нечто, чего мы не планировали… Восторгаться или ужасаться? Счастья, вечной жизни и славы ожидать ли, или погибели?
Давайте узнаем ответ!

Опыт вывода приложения в Toп русского App Store: цифры, графики, расследования

Reading time7 min
Views42K
Всем привет!
Всегда с удовольствием читаю case study разработчиков под iOs и хочу внести посильный вклад в понимание магии App Store — рассказать нашу историю создания и продвижения приложения в категории Entertainment для iPhone.

Немного тизеров:
1. Про нас написало большинство крупных площадок России и Украины. Вся аналитика и выводы представлены.
2. Мы поднялись до 3 места в общем Топе App Store России и Украины, 1-2 место в категории. На текущий момент мы уже 4-й день в Топ-5 с более чем 60К установок и около 500 отзывами/оценками в App Store.
3. Мы тщательно документировали весь процесс и по пути делали много скриншотов.


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

JetBrains — разработка под Android для лентяев

Reading time1 min
Views79K
Хотите изучить разработку пoд Android, но лень читать большие книги с кучей теории? JetBrains подготовила курс из 12 уроков для быстрого старта. Темы уроков:

* Getting Started
* UI Designer
* Minimally Interactive
* Lifecycle
* More Activities
* List Views
* HTTP
* Storage
* Menus
* Dialogs
* Preferences
* Publishing
Читать дальше →

Core Data для iOS. Глава №3. Теоретическая часть

Reading time28 min
Views26K
Хабралюди, добрый день!
Сегодня хочу начать написание ряда лекций с практическими заданиями по книге Михаеля Привата и Роберта Варнера «Pro Core Data for iOS», которую можете купить по этой ссылке. Каждая глава будет содержать теоретическую и практическую часть.



Содержание:

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

Sublime Text Vintage Mode — справочник по горячим клавишам

Reading time3 min
Views50K
Как увидел Vintage Mode в действии сразу захотелось научиться им владеть. Как раз к этому времени я прошел курс Соло + VerseQ для слепого печатания на английском. Связка с Vintage Mode, мне казалось, будет очень эффективной для верстки, и я не ошибся.

image Для тех кто не знает Vintage Mode (Insert Mode в VIM) плагин для Sublime Text, который идет в комплекте с редактором. Взят он из редактора VIM, и многие думают, что пользу он может принести только бывшим пользователям Vim, но это ошибочное мнение. По умолчанию плагин деактивирован, как активировать объяснять не буду инструкция есть здесь. Скажу только что для входа в режим Vintage используется клавиша i, а для выхода ESC. По моему это крайне неудобно. Я воспользовался советом из оффициальной документации и теперь вхожу в Vintage Mode два раза нажав клавишу i. Подробности тут.

Вроде все отлично осталось только узнать список команд для каждой клавиши, немного понервничать, привыкнуть и готово. Но в официальной документации информации по клавишам нет, они обосновывают это тем, что клавиши те же что и в редакторе Vim. Но различия есть и их немало, документации на русском вообще нет ни по одному из редакторов (именно по Hotkeys Vintage Mode).
Читать дальше →

Создание своего домашнего игрового искусственного интеллекта

Reading time6 min
Views55K

Детские мечты или Pack-Man своими руками


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

Свою игру, а точнее игровой искусственный интеллект (ИИ) сделать желание было очень давно. Не буду кривить душой: сначала банально не хватало знаний, потом как ни странно времени. У меня было несколько недель относительно свободного времени, что бы реализовать мечту своего детства.

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


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

Процедурная генерация планов помещений

Reading time7 min
Views73K

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

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

В этой статье я расскажу о том, как я реализовал на Unity3d один простой метод генерации, который приводит к хорошим результатам и легко модифицируется. С картинками и исходниками.
Читать дальше →

UIAppearance. Управление внешним видом iOS-приложений

Reading time2 min
Views18K
Стиль или Суть
Сообщение или Носитель
Риторика или Диалектика

Красота — это нечто поверхностное или же идущее из глубинных истин?
Что значит «хороший дизайн»?
Эстетические суждения относительны или абсолютны?

Это важные вопросы, которые обсуждались философами, художниками и поэтами на протяжении тысячелетий.

И пока мы продолжаем наши поиски красоты и понимания мира, рынок мобильных приложений в данной области однозначно утверждает:

Пользователи платят за красивые приложения.

При покупке iPhone, пользователь покупает также философию Apple: вещи должны не только хорошо работать, но и хорошо выглядеть. То же относится к разработке на iOS — некрасивый интерфейс пользователя сказывается и на программном коде.

Исторически даже для незначительного изменения внешнего вида приложения в iOS требовался набор хаков, сопряженных с опасностью отклонения приложения в AppStore. К счастью, начиная с iOS 5 у разработчиков есть новый инструмент: UIAppearance.
Читать дальше →

Попробуй БЭМ на вкус!

Reading time11 min
Views68K
Эта статья рассказывает о том, как создать проект с использованием БЭМ-технологий.
Мы шаг за шагом создадим страничку каталога товаров, пользуясь принципами БЭМ в CSS, возможностями писать декларативный JavaScript на фреймворке i-bem.js и с использованием шаблонизатора BEMHTML. Помогать делать всё это будут bem tools, в частности — инструмент для разработки bem server.

Онлайн магазин

Важно: в статье нет особенных подробностей, её цель — получить проект максимально быстро. Текст, раскрывающий больше информации, пройдёт следующим постом.
Читать дальше →

Автоматическая сборка iOS-приложений на разных версиях Xcode с помощью Jenkins

Reading time6 min
Views29K
Если к вам уже приходили с вопросом «Где можно получить свежую сборку?», то вы прекрасно понимаете, зачем нужна автоматизация сборки и распространения. Никто не хочет тратить лишнее время на рутинную работу. Раньше мы пользовались утилитой под названием iOSBetaBuilder (http://www.hanchorllc.com/betabuilder-for-ios/). Это приложение предназначено для упрощения распространения AdHoc сборок iOS-приложения: нужно только ввести название и версию проекта, адрес (URL), где хочется выложить сборку, и получаются сгенерированные index.html и manifest.plist. На первое время этого достаточно.

Но когда проект достигает стадии багфиксинга, тратить лишние 5 минут на сборку и перепубликацию для QA – неохота и некогда. А когда проектов становится много, а их сборки становятся дольше… В рамках компании затраты времени помноженные на количество проектов становятся слишком существенными, и приходит время автоматизации.

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

Для тех, кто уже в теме, есть интересный раздел в конце статьи: как настроить сборки с различными версиями Xcode на одной машине.

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

Information

Rating
Does not participate
Location
Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
Date of birth
Registered
Activity