Pull to refresh
47
0
Григорий Усков @guskov

User

Send message

Плоский и тонкий

Reading time7 min
Views33K
За последние несколько лет мы стали свидетелями быстрого перехода от 3-D и скевоморфизма к плоским формам и минимализму в сферах разработки программного обеспечения и дизайна интерфейсов приложений. Хотя эта тенденция стала практически повсеместной, давайте немного задумаемся о том, как мы пришли к ней и какое влияние она оказывает на дизайн интерфейсов в целом. Кроме того, я поделюсь некоторыми советами и соображения по созданию плоских интерфейсов.

image
Интерфейсы на Windows Phone 8 и Apple ios 7
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments55

Скроллер для видео и понимание представления времени в Objective-C

Reading time4 min
Views7.4K


Здраствуй, Хабражитель!

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

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments8

Ломаем iOS-приложение! Часть 2

Reading time21 min
Views47K
В первой части мы изучили некоторые вопросы безопасности хранения и передачи данных. Теперь переходим к защите исполняемого кода. Мы будем модифицировать функционал iOS-приложения во время выполнения и проделаем реверс-инжиниринг. И снова, помните! Наша цель — не стать гадким взломщиком, а защитить ваше приложение и пользователей от злонамеренных действий. Для этого нужно понять, что может сделать взломщик.

Много текста и картинок
Total votes 38: ↑38 and ↓0+38
Comments13

Искусственный интеллект под Android с открытым API

Reading time7 min
Views191K

Только ленивый не знает сегодня о том, что такое голосовой помощник Siri. Когда два года назад этот продукт был показан на презентации нового iPhone 4S, многие посмотрели на развитие IT-индустрии по-новому. Действительно, искусственный интеллект в кармане, понимающий естественную речь, еще не показывал никто.

Многие в то время начали говорить о том, что Apple может уже на следующем WWDC предоставить всем программистам под iOS возможность использовать открытое API ассистента Siri для своих собственных программ. Картина вырисовывалась радужной — любое приложение смогло бы реагировать на пользовательские фразы, исполняя различные команды. Действительно, если в магазине AppStore так много разных полезных приложений, почему бы им не дать возможность управления голосом? Тем более что такой вид коммуникации с пользователем, как речь, быстро стал трендовым после выхода iPhone 4s.

О том, удалось ли это сделать Apple, и что удалось сделать нам, читайте далее.

Читать дальше →
Total votes 98: ↑86 and ↓12+74
Comments74

Ломаем iOS-приложение. Часть 1

Reading time13 min
Views73K
Вы хорошо поработали, и вот ваше приложение в App Store!

  • Храните учётные записи юзеров?
  • Используете встроенные покупки?
  • Не хотите показывать своё ноу-хау?

Повод задуматься о безопасности кода и данных! Мы будем искать уязвимости в тестовом приложении. В этой статье поговорим о безопасности данных, а в следующей — перейдём к коду.
Много текста и картинок
Total votes 63: ↑51 and ↓12+39
Comments22

Синтезатор речи в iOS7

Reading time2 min
Views13K
В iOS7 встроили синтезатор речи, теперь заставить свое приложение говорить вопрос пары строчек кода.

За синтез речи отвечает класс AVSpeechSynthesizer Достаточно передать ему текст обернутый в класс AVSpeechUtterance и текст будет прочитан смартфоном.

Голос зависит от локали, в том числе поддерживается русский. Речь звучит четко и приятно.

var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
  new AVSpeechUtterance ("Shall we play a game?");
speechSynthesizer.SpeakUtterance (speechUtterance);


узнать подробности и послушать как говорит iPhone
Total votes 30: ↑25 and ↓5+20
Comments32

Continuous Integration в XCode5

Reading time2 min
Views13K
В пятой версии XCode появился Continuous Integration. Он работает через XCode службу OS X Server ($20, AppStore).

XCode Service умеет все тоже что и любой Continuous Integration сервер, возможно чуть меньше. Огромный плюс — полная интеграция с XCode и свойственная Apple «работа из коробки». Я запустил авто-сборку проекта за полчаса, хотя раньше ни разу не настраивал CI сервер. И не нужно курить мануалы как правильно собирать приложение из командной строки, как включить эмулятор или запустить тесты на устройстве.

xcode continuos integration
подробнее о возможностях
Total votes 23: ↑19 and ↓4+15
Comments16

Blur в iOS7

Reading time2 min
Views31K
С седьмой версией iOS многие элементы UI стали выглядеть привлекательнее (см. Session 226, Implementing Engaging UI on iOS).

Например, теперь поп-оверы, большинство баров и алерты имеют размытый фон.



Что делать, если хочется добавить блюр в свой контрол, подскажет эта статья.
Читать дальше →
Total votes 64: ↑52 and ↓12+40
Comments25

Сетевое кэширование в iOS. Введение

Reading time4 min
Views17K
Практически каждое мобильное приложение получает какие-либо данные из сети.
К сожалению, доступ к сети не всегда возможен и поэтому разработчику важно правильно реализовать сетевой кэш в приложении.

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

Итак, введение.
Читать дальше →
Total votes 21: ↑16 and ↓5+11
Comments33

Offline восстановление OSX с раздела Recovery HD

Reading time3 min
Views77K


Предыстория


В свете выхода OS X Mavericks Golden Master решил посмотреть на нового зверя, установив его на морально устаревший iMac7,1. Установка прошла успешно, обычным способом из рабочей системы версии 10.7. Но все работало очень медленно. Этот mac пережил не одно обновление поколений ОС и ни единой установки с «0». Ввиду отсутствия ценных данных — решено было поставить начисто. Я переформатировал раздел из режима восстановления, aka Recovery HD, и вот тут меня ожидал неприятный сюрприз и даже не один. Подробности того, как удалось уговорить, уже не кисоньку из Купертино, без доступа к Интернет и загрузочного устройства
под катом
Total votes 37: ↑36 and ↓1+35
Comments31

Tizen — взгляд изнутри

Reading time5 min
Views36K
Tizen Xeyes Попал ко мне в руки на некоторое время образец телефона с Tizen OS. Я решил воспользоваться возможностью посмотреть, какой же Linux скрывается внутри. Большинство обзоров Tizen OS описывают интерфейс взаимодействия со стороны пользователя, в данной статье я проведу небольшой обзор телефона и операционной системы со стороны системного администратора. Будут рассмотрены наиболее интересные предустановленные консольные приложения, работа с графическим интерфейсом и возможность обновления из репозитория.

Для того чтобы подключиться к консоли устройства нам потребуется утилита Smart Development Bridge (SDB) из состава Tizen SDK. С сайта разработчика ее можно скачать отдельно. В виде бинарного файла Smart Development Bridge доступен под те же платформы, что и Tizen SDK: Windows 7(32 и 64 бит), Ubuntu(32 и 64 бит), Mac OS X (64 бит). Указание Ubuntu в данном случае несколько условно, у меня утилита без проблем заработала под Fedora 19 (x64). Smart Development Bridge способен работать с несколькими устройствами и предоставляет базовый набор команд для работы с устройством, в том числе удаленный доступ к командной оболочке устройства. Он то нас и интересует в первую очередь. Все дальнейшие манипуляции будут производиться из консоли.

В Tizen изначально предусмотрено два основных пользователя под которыми возможна работа: developer и root, по-умолчанию используется developer. Чтобы получить максимум возможностей при взаимодействии с операционной системой, нам потребуется повысить уровень привилегий, для этого потребуется включить режим суперпользоваля. Введем необходимые для подключения команды:
$sdb root on
Switched to 'root' account mode
$sdb shell
sh-4.1#

Узнать больше
Total votes 50: ↑47 and ↓3+44
Comments74

Windows Phone 8 такая, какой её задумали разработчики

Reading time10 min
Views168K

Вместо предисловия



Для начала хотелось бы сказать пару слов о новомодном тренде в области веб-дизайна и дизайна интерфейсов — плоском дизайне (Flat UI).

Flat, очень хорошо играет на контрасте. Metro особенно сильно выделяется в сфере UI.
Можно провести небольшую параллель: посмотрите на это надгробие. Оно прекрасно, не так ли?

image
Крупнее

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

Однако если на кладбище все надгробия будут такие же, как это, тогда это будет ужасающая серость и беда. Прелесть минимализма именно в контрасте.

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


И тут вы достаёте свою минималистичную Zippo Black.

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

Но давайте теперь представим обратную картину.
У всех посетителей в руках минималистичная Zippo Black и тут вы заходите с золотой Zippo с красной вставкой и выдавленной трубкой. И на этот раз уже ваша далеко не минималистичная золотая Zippo будет привлекать внимание посетителей.



Минимализм не должен быть в мейнстриме, ни в коем случае.


Его нужно внедрять маленькими порциями там, где всё очень вычурно, очень нагромождено, усложнено. Но стоит минимализму стать мейнстримом, как он сразу потеряет весь свой шарм и красоту. Тогда будет просто серая безликая масса.

В 2010 году, когда на рынке смартфонов властвовали Apple, Samsung и HTC с нагромождёнными интерфейсами iOS, TouchWiz и HTC Sense, Windows Phone поражал воображение по внешности, дизайну.
Читать дальше →
Total votes 193: ↑136 and ↓57+79
Comments156

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

Reading time9 min
Views129K


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

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

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

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

Приглашаю разработчиков и пользователей приложений разобраться, как это работает, откуда берутся эти ошибки, почему не стоит излишне беспокоиться о проблемах акселерометра и почему не нужно бежать бегом в магазин для замены «бракованного» устройства – новое устройство вряд ли будет намного лучше, а проблемы с ошибками датчиков решаются другими способами.
Читать дальше →
Total votes 49: ↑44 and ↓5+39
Comments36

Образы Tizen SDK Live на базе Ubuntu

Reading time3 min
Views14K
Привет, Хабравчане!

В последнее время тема Tizen вызывает всё больший интерес, но многих смущает процесс начальной установки Tizen SDK и настройки среды разработки. Для упрощения знакомства с Tizen SDK мы решили создать Tizen SDK Live образы на базе Ubuntu, Xubuntu и Lubuntu, которые представляют из себя образы ОС с уже установленным Tizen SDK.



Поэтому вооружайтесь флешками пошустрее и добро пожаловать под кат за инструкциями по созданию загрузочной флешки с Tizen SDK Live.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments18

Tizen Native programming. Пишем «Hello Habrahabr» для ОС Tizen

Reading time2 min
Views22K

Как многим известно в скором времени ряды мобильных телефонов пополнят аппараты на ОС Tizen, разрабатываемой совместно компаниями Samsung и Intel. Для разработчиков планирующих заняться написанием приложений под Tizen, была также создана SDK с помощью которой и будет написано наше первое приложение с использованием Tizen Native App Programming в Tizen IDE.
(много картинок)
Читать дальше →
Total votes 33: ↑26 and ↓7+19
Comments13

Разработка мобильных приложений с 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 базу данных с кешированием.

Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments4

iOS 7 и Xamarin

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

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

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




Читать дальше →
Total votes 47: ↑40 and ↓7+33
Comments14

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

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

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

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

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

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

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

Исторически даже для незначительного изменения внешнего вида приложения в iOS требовался набор хаков, сопряженных с опасностью отклонения приложения в AppStore. К счастью, начиная с iOS 5 у разработчиков есть новый инструмент: UIAppearance.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments12

Правильные имена и полезные ошибки

Reading time3 min
Views31K
image
Эта статья для тех, кто получает от разработки приложений больше удовольствия, чем денег.
Тем не менее, здесь пойдет речь об увеличении дохода с Ваших приложений.
В 2013 году я совершенно случайно столкнулся с тремя способами увеличить денежный поток раза в два, то есть вместо 25 долларов в день мне стало капать 50. А иногда 100.
Кому эти суммы кажутся смешными, проходите мимо.
А кто знает цену каждому заработанному доллару — прошу под продолжение.
Читать дальше →
Total votes 84: ↑71 and ↓13+58
Comments50

Познавательная анатомия языков в iTunes

Reading time3 min
Views7.8K
привет Хабр,

Те, кто сталкивался с локализацией ios приложений на разные языки, не могли не обратить внимание на все пышное разнообразие языковых настроек в Itunes Store и в Itunes Connect. Их настолько много, что сходу не поймешь, где, что и на каком языке будет отображаться. Этим постом я попытаюсь провести интересующихся неискушенных через языковые измерения не всегда понятного и удобного Itunes хозяйства и, следовательно, уберечь от переживаний (от легкого изумления а ля «Воно оно как...» до тяжелого ступора вроде «да какого хрена ?! „), ну и, возможно, от ошибок. А бывалые, думаю, найдут для себя некоторые новые моменты.

Если в мобильном сторе с языком все еще даже ничего, то когда дело доходит до продвижения в вебе- Itunes и itunes preview являют иногда языковые сюрпризы. Имеем 5 измерений:



#1 на первой картинке это: Название, описание и скриншоты


Немного кэпа: Их можно настроить под каждый язык в Itunes Connect при сабмите приложения в аппстор И они никак не связаны с языками, на которые вы перевели интерфейс приложения. Более того, не стоит спешить делать скриншоты с бенгальской или фарси версии вашего приложения (в принципе с фарси я загнул… просто даже украинской ), ибо список языков, на который можно локализовать эти три параметра, весьма ограничен, хоть и покрывают бОльшую часть Землян:

Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments14

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity