Pull to refresh
5
0
Щукин Антон @AntonPalich

iOS Engineer

Send message

Справедливые ожидания вашего технического директора

Reading time10 min
Views35K
Я – ваш новый технический директор.

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

Профессионалы ли мы?

Это главный вопрос. Я расскажу, чего я от вас жду, и это определит ответ на вопрос, профессионалы ли мы.
Читать дальше →
Total votes 111: ↑74 and ↓37+37
Comments113

Генератор Федеративного Фильтра Калмана с использованием Генетических Алгоритмов

Reading time18 min
Views25K
В рамках своей научной активности реализовал так называемый Федеративный Фильтр Калмана (Federated Kalman Filter). В этой статье рассказывается о том, что такое «Федеративный ФК», чем он отличается от обобщенного, а также описывается консольное приложение, реализующее данный фильтр и генетические алгоритмы для подбора параметров его математической модели. Приложение было реализовано с использованием TPL (Task Parallel Library), поэтому пост будет интересен не только специалистам по цифровой обработке сигналов.

UPD1: после прочтения двух недавних статей решил тоже присоединиться к эксперименту/исследованию/авантюре (называйте как хотите). В конце статьи добавил еще один опрос — "Стали бы Вы поощрать рублем такие узко специализированные статьи на Хабрахабре?".

Под катом описание и ссылка на сорцы
Total votes 60: ↑57 and ↓3+54
Comments11

Вероятностные модели: примеры и картинки

Reading time8 min
Views63K
Сегодня – вторая серия цикла, начатого в прошлый раз; тогда мы поговорили о направленных графических вероятностных моделях, нарисовали главные картинки этой науки и обсудили, каким зависимостям и независимостям они соответствуют. Сегодня – ряд иллюстраций к материалу прошлого раза; мы обсудим несколько важных и интересных моделей, нарисуем соответствующие им картинки и увидим, каким факторизациям совместного распределения всех переменных они соответствуют.


Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments10

Вывод текста в iOS: CoreText, NSAttributedString

Reading time11 min
Views9.6K
Я хотел бы Вам рассказать про вывод текста на экран в iOS. Вначале это задумывалось как туториал, затем как сбор неочевидных фактов, а получилось что получилось.

Способы вывода текста условно можно разделить на несколько категорий:

  • UIKit — привычные UI контролы. Дают только базовые возможности по отображению, совсем мало возможностей по форматированию
  • UIKit + NSAttributedString — привычные UI контролы с возможностью установки строки с атрибутами отображения. Куча возможностей по форматированию
  • CoreText — фреймворк для работы с текстом и текстовыми представлениями. В связке с NSAttributedString дает массу возможностей по форматированию текста и, благодаря нескольким уровням абстракций над элементами текста, расширенные методы по их отображению
  • CoreGraphics — с помощью него тоже можно отрисовывать текст

Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments9

Анимация UIView: перемещение по произвольной траектории на примере окружности

Reading time8 min
Views7K
Пожалуй, большинство iOs разработчиков знают, что для реализации различных визуальных эффектов, обычно, достаточно нескольких строчек кода. Фреймворк UIKit, отвечающий за стандартный интерфейс, имеет встроенные средства, позволяющие делать довольно изощрённые виды анимации — от перемещения по прямой, до эффекта переворачивания страницы. Однако, для перемещения наследников UIView по более сложной траектории, приходится спускаться ниже и переходить на уровень фреймворка Core Graphics. При этом, количество примеров в сети снижается и бывает сложно найти необходимое. А если и находится, то качество реализации, зачастую, оставляет желать лучшего. С такой ситуацией я и столкнулся, когда возникла необходимость сделать анимацию интерактивной книги для детей.

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments7

Дистанционное обучение с помощью мобильных устройств

Reading time4 min
Views104K
Еще 10—20 лет назад полноценное дистанционное обучение было практически невозможным. Необходимость переезда в другой город или даже страну являлась, наверное, одной из наиболее частых причин, почему предпочтение отдавалось местным вузам, вместо того чтобы поступать в университеты своей мечты. Да, существует заочное образование, но мы прекрасно понимаем, что в большинстве случаев данная форма образования — всего лишь для галочки. К счастью, в настоящее время есть возможность учиться, было бы желание. Для тех, у кого с желанием все в порядке, прошу под кат.

image
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments18

Инструменты студии мобильной разработки

Reading time4 min
Views38K


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

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

Пройдемся по дизайну, серверным решениям, тестированию и аналитике.
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments22

7 советов, как улучшить интерфейс вашего приложения

Reading time4 min
Views44K
Будучи дизайнером интерфейсов, до сих пор часто вижу ситуацию, когда проектировать интерфейсы приходится разработчикам или кому-то еще из команды.
Конечно, лучше, когда дизайнер в команде есть, но что делать, если его нет?

Когда-то я собрала набор простых правил, которые помогают избежать 80% самых распространенных ошибок, касающихся построения интерфейсов. Решила расшарить их для хабрасообщества.
Кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 74: ↑55 and ↓19+36
Comments42

О прокрастинации популярно, или Голливуд против лени

Reading time5 min
Views176K


Кто-то называет прокрастинацию «чумой 21 века», но наверняка это не так. Это психологическое состояние свойственно не только нам, людям «нового времени», наверняка от нее страдали и многие наши предки. Предлагаю ознакомиться с ее видами и способами борьбы с ней на ярких и узнаваемых примерах.

Вперед, у нас мало времени
Total votes 88: ↑69 and ↓19+50
Comments43

Прожектор прошедших событий №1

Reading time3 min
Views6.3K
В преддверии Нового Года мы, мы это наш новый портал Айти-Событие.рф, запускаем серию постов, в которых расскажем вам обо всех интересных, но уже прошедших событиях, оставивших след в истории в виде презентаций и/или видео докладов. В первом выпуске нашего прожектора мы осветим мероприятия прошедшие в ноябре.


Читать дальше →
Total votes 31: ↑18 and ↓13+5
Comments12

Как стать ведущим разработчиком. Часть 1

Reading time8 min
Views142K
Это перевод статьи, написанной Джоном Оллспоу, который на данный момент является старшим вице-президентом технического отдела в Etsy.

Продолжение перевода здесь

В нашей сфере деятельности нам доступны огромные объёмы знаний, в особенности тех, которые позволяют разработчику стать эффективным. Но почему-то, несмотря на существование множества книг о специфических задачах и обязанностях менеджеров в нетехнических областях, я практически не вижу новых книг или статей о том, как стать хорошим ведущим разработчиком. Замечательным исключением, конечно, являются статьи Кейт Maцудайры [от переводчика: на фотографии, кстати, именно она], немало написавшей о культурных составляющих инженерии.

Но в то же время, все мои знакомые преуспевающие разработчики помнят своих наставников, которые научили их тому, что значит быть „ведущим“.
Читать дальше →
Total votes 233: ↑203 and ↓30+173
Comments76

AIDA. Автоматизация работы с Git, JIRA и TeamCity

Reading time5 min
Views38K
При разработке и тестировании какого-либо продукта появляется много рутинной работы. Чтобы избежать ошибок, связанных с человеческим фактором, мы используем AIDA.

AIDA (англ. Automated Interactive Deploy Assistant) — это учётная запись, значительно облегчающая работу с Git, TeamCity и JIRA.
Сегодня речь пойдет о том, как с её помощью нам удалось автоматизировать многие рабочие процессы.

В первую очередь мы вспомним об используемой в Badoo системе контроля версий, далее расскажем о том, как было автоматизировано создание веток релиза и осуществлено автоматическое слияние веток в Git, поговорим о существенной помощи AIDA в работе с JIRA (контроль и изменение статуса задач, заполнение полей) и ТeamCity (непрерывная интеграция и развёртывание на тестовое окружение).
Читать дальше →
Total votes 53: ↑50 and ↓3+47
Comments52

Как пользоваться утилитой Instruments в Xcode

Reading time16 min
Views63K

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

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

Это руководство покажет вам, как использовать наиболее важные особенности утилиты под названием Instruments, которая поставляется вместе с Xcode. Она позволит вам проверить свой программный код на наличие проблем с производительностью, утечкой памяти и других проблем.
Читать дальше →
Total votes 45: ↑40 and ↓5+35
Comments15

Objective C. Практика. События и «мертвые» объекты

Reading time4 min
Views7.2K
Многие, вероятно, знают, что при работе с событиями изменения свойств с помощью key-value observing существует очень удобный механизм, предотвращающий появление в приложении «метрвых» объектов, которые представляют собой получателей вызовов. В действительности, первый же мертвый объект «валит» приложение, при поступлении ему события — это закономерно, так как объект уже не существует и никаких методов вызвать у него уже не получится.

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

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

Данная статья рассчитана на разработчиков, имеющих опыт работы с платформой и знающих, каким образом определяется жизненный цикл объекта. Если у вас есть определенные пробелы в этой области (а я неоднократно встречал даже опытных разработчиков, которые не знают, каким образом работает счетчик ссылок и не представляющих, во что разворачивается @synthesize), то вы можете прочитать мою старую статью, посвященную исследованию данного вопроса. Остальных прошу к столу.

Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments1

Демистификация аварийных журналов iOS

Reading time30 min
Views59K


Прежде чем отправить в AppStore ваше приложение, вы долго тестируете его, чтобы убедиться, что ваше приложение работает безупречно. Оно отлично работает на вашем устройстве, но после того, как приложение попало в App Store, некоторые пользователи сообщают, что оно «вылетает»!

Если вы похожи на меня, то вы хотите, чтобы ваше приложение было на пять с плюсом. Значит, вы возвращаетесь в свой код, чтобы исправить сбой… а куда надо смотреть?

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

В этом уроке вы узнаете, как выглядят аварийные журналы, а также как получить аварийный журнал из iOS-устройства и iTunes Connect. Вы узнаете о символизации и о том, как вернуться от аварийного журнала назад, в код. Мы также займёмся отладкой приложения с ошибками, которые могут привести к сбою в определенных ситуациях.
Подробности
Total votes 77: ↑75 and ↓2+73
Comments16

Notification Hubs — облачный сервис уведомлений миллионам пользователей iOS и Windows

Reading time3 min
Views7.8K
Ранее в январе Скотт Гатри анонсировал новый функционал подсистемы обмена сообщениями Windows Azure Service Bus под названием Notification Hubs. Узлы уведомлений (Notification Hubs) – это новый функционал предлагающий экстремально масштабируемую, кроссплатформенную инфраструктуру пуш-уведомлений для миллионов пользователей и устройств.

Отличительные особенности нового сервиса Notification Hubs:

  • кроссплатформенная поддержка пуш-уведомлений. Сервис узлов уведомлений предлагает API для отправки уведомлений различным устройствам и платформам. Вы можете отправлять сообщения специфичные для каждой платформы и в независимом формате. Сегодня поддерживаются платформы Windows 8 и Apple iOS. Поддержка Android и Windows Phone ожидается вскоре;
  • эффективная маршрутизация публикаций/подписок и мултикаст основанный на тегах. Сервис узлов уведомлений оптимизирован специально для отправки с низкими задержками уведомлений тысячам и миллионам устройств. Ваш серверный бэкенд может отправить одно сообщение в узел уведомлений и миллионы пуш-уведомлений будут автоматически отправлены пользователям. Устройства и приложения могут быть определить теги для каждого пользователя при регистрации в узле, которые могут использоваться для фильтрации пользователей при отправке сообщений. Эти теги могут быть любыми строками, что значительно облегчает задачу отправки сообщений определенным группам пользователей;
  • экстремальное масштабирование. Узлы уведомлений и Windows Azure позволяют вам работать с миллионами устройств и пользователей без необходимости в построении или переделке собственной инфраструктуры. Механизм маршрутизации публикаций/подписок позволяет эффективно и просто маршрутизировать и доставлять уведомления миллионам пользователей без вложений в собственную инфраструктуру;
  • использование из приложения с любым бэкендом. Узлы уведомлений могут быть интегрированы и использованы из любого приложения с серверным бэкендом. Узлы эффективно работают в связке с Windows Azure Mobile Services. Они также могут быть использованы серверными приложениями размещенными в виртуальным машинах (IaaS) Windows или Linux. Решения на базе Cloud Services и Windows Azure Web Sites так же могут использовать узлы уведомлений.

Новый функционал интегрирован в панель администрирования Windows Azure. Создание узла уведомлений осуществляется в несколько кликов мышью и требует меньше минуты.
Читать дальше →
Total votes 26: ↑19 and ↓7+12
Comments11

Система автоматической сборки мобильных приложений Alawar Build System

Reading time4 min
Views15K
Всем привет!

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

Мы столкнулись с необходимостью автоматизировать сборку и деплоймент на тестовые устройства, когда размер парка устройств превысил два десятка, а количество проектов, одновременно находящихся в QA достигло 30+. При таких объемах деплоймент билда на тестовые устройства с помощью “Build & Run” в XCode начал заметно затормаживать процесс прохождения QA. Было принято решение об автоматизации процесса сборки и заливки билдов на устройства.

Наша обновленная билд-система состоит из трех основных компонентов:
  • Репозитории с исходными кодами проектов;
  • Сервер сборки;
  • Сервер раздачи билдов на устройства.


Процесс прохождения версии проекта от разработчиков до тестировщиков выглядит следующим образом:
  • Разработчик делает коммит версии в репозиторий;
  • Билд-сервер запускает сборку соответствующего проекта;
  • В случае успешной сборки, билд выкладывается на сервер раздачи;
  • Итоговый IPA устанавливается на устройства “по воздуху”.



Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments23

Разработка игры-бесконечной гонки для iOS при помощи Cocos2D-iphone

Reading time9 min
Views43K
Сегодня я хочу вам рассказать о создании игры для iOS на основе Cocos2D на примере недавно вышедшей игры «Пчелогонки» (анг. – Bee Race).
Геймплей не содержит в себе ничего сложного – это по сути бесконечный ранер, в котором нужно собирать поинты и уворачиваться от препятствий. Только вместо рыжей девочки или кладоискателя – здесь летает двухмерная пчелка.
Для заинтересовавшихся, прошу под кат (Ахтунг! Минен унд много буквирен).
Основные разделы для рассмотрения:
  1. Очень краткое введение в Cocos2D
  2. Используем Cocos2D одновременно с StoryBoard
  3. Краткое описание геймплея и структуры проекта
  4. Покупаем инструменты и что делать, если душит жаба
  5. Чем не пахнет приложение или подключаем in-app билинг
  6. Социализируем. Подключаем Game Center и создаем мультиплеерную версию на два игрока
  7. В чём промахнулся Акела
  8. Паблиш


Спойлер:

Читать дальше →
Total votes 45: ↑38 and ↓7+31
Comments45

Внутреннее устройство Git: хранение данных и merge

Reading time9 min
Views87K
В процессе перехода с SVN на Git мы столкнулись с необходимостью переписывания наших внутренних инструментов, связанных с развёртыванием кода, которые ориентировались на существование линейной истории правок (и разработку в trunk). На Хабре уже публиковались возможные решения этой проблемы через Git-SVN, но мы пошли другим путём. Нам нужна поддержка таких возможностей Git, как branching и merge, поэтому мы решили разобраться в основах, как же работает Git и каким способом должна осуществляться интеграция с ним.
Читать дальше →
Total votes 77: ↑77 and ↓0+77
Comments10

Законопослушный гражданин или Справочник Государственных сайтов РФ

Reading time4 min
Views82K
Доброго времени суток, Хабравчанин! На сайте, все чаще стали появляться статьи о том, как предприимчивые пользователи добивались справедливости (выполнения законов), при нарушении их прав, всяческими недобросовестными организациями. Обычно «джентельменский» набор таких контор это: смс-рассылка, телефонные звонки, хамство в офисах, некачественное предоставление услуг и товаров. Обычно, я терпимо отношусь к таким смс, в основном, это реклама такси. Но сегодня, мне пришли сразу Три Смс одного содержания, с рекламой кредитов. А при упоминании данного слова, у меня сразу же портится настроение. Поэтому для его улучшения, я полез в интернет.
В интернете, помимо нужного мне Роскомнадзора, есть много полезных сайтов, которые предлагает наше Государство. Обычно, ссылки на них очень хаотично разбросаны по сети. Здесь же, я публикую список наиболее актуальных и интересных, как мне думается, сайтов РФ, чтобы в случае надобности, они были под рукой.
Читать дальше →
Total votes 99: ↑86 and ↓13+73
Comments46

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity