Замена цветов с помощью CIColorCube

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

Куб предназначен для замены множества цветов. R, G, B компоненты исходного цвета являются трехмерными координатами нового цвета, который задается в виде 4 float'ов (RGBA).

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

Dash - последний штрих документации

Во время испытания AppCode (это вообще отдельная тема для разговора) столкнулся с тем, что неудобно держать открытым еще и xCode для просмотра документации. Когда-то давно пробовал Ingredients, но как-то не зацепило + были проблемы со стабильностью. Набрел на Dash – утилитку, без которой уже не представляю свою ежедневную работу. Недавно как раз обновилась до 1.3 и появилась в Mac AppStore

Итоги 2011 года на встрече RADUG

К сожалению, сам не попаду, но всячески рекомендую подвести итоги 2011 года в компании Russian Apple Developer'ов.

Дата: 7 декабря Начало: 19.00 Место проведения: Москва, Digital October

Мы традиционно завершаем год встречей в формате блиц-докладов. Приглашаем девелоперов, дизайнеров, менеджеров и всех энтузиастов iOS и Mac OS X. Регистрация на встречу. Участие во встрече как всегда бесплатное.

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

Предновогодняя встреча RADUG – самое правильное место, чтобы оставаться в курсе происходящего, заявить о себе и завязать контакты. После встречи как всегда After Party – планируйте свое время!

Обратите внимание, что в Digital October, перед встречей RADUG пройдет еще одно мероприятие, посвященное мобильной разработке – Mobile Developer Day. Конференция платная, но в ее рамках есть бесплатная секция Developer Garage, включающая два мастер-класса по разработке приложений под iOS. Если есть желание – перед встречей RADUG можно заглянуть также и туда.

sParking 1.0

Выпустили наконец-то первую версию. Процесс очень простой – ставите на стены гаража маркер (или 2 – на вход и на стоп), настраиваете и проверяете, чтобы они опознавались. После этого при каждом въезде iPhone будет подсказывать где самое время остановиться :)

Вот как это выглядит:

Пока что iPhone 4 only. Ах да :) Ссылочка

Волшебник страны Xcode

wox (Wizard Of Xcode) – восхительно удобная штучка для сборки iOS проектов из консоли, что весьма актуально для всяких автоматизаций.

Написана на ruby, установка:

gem install wox

После этого создаем Rakefile, самый навороченный на данный момент пример:

require 'wox'

Wox::Tasks.create :info_plist => 'project-Info.plist', :sdk => 'iphoneos' do
    build :debug, :configuration => 'Debug - Local Server'
    build :release, :developer_certificate => 'iPhone Developer: Valerii Hiora (8GA39LD1DZ)', :configuration => 'Release' do
        ipa :app_store, :provisioning_profile => 'App Store'
        ipa :adhoc, :provisioning_profile => 'Ad Hoc' do
            testflight :publish, :api_token => 'your_token',
                :team_token => 'your_testers_team_token',
                :notes => proc { File.read("CHANGELOG") },
                :distribution_lists => %w[AlphaTesters],
                :notify => true
        end
    end
end

Код в принципе понятен без особых комментариев, настроить можно абсолютно все – сертификаты, какие provisioning profiles использовать, можно даже сразу публиковать на Testflight (о нем писал раньше). Вложенные таски наследуют настройки родителей, т.е. testflight:publish будет собирать с использованием provisioning profile из ipa:adhoc и подписываться это будет сертификатом, указанным в build:release. В случае чего любую настройку можно переопределять.

Примеры использования:

Собрать дебажную версию:

rake build:debug

Подготовить ipa для заливки в AppStore:

rake ipa:appstore

Подготовить adhoc ipa и залить его на Testflight

rake testflight:publish

Посмотреть список всех доступных тасков:

$ rake -T
rake build:debug          # Build customiphone 1.0 with Debug - Local Server configuration
rake build:release        # Build customiphone 1.0 with Release configuration
rake info:configurations  # List available configurations
rake info:sdks            # List available sdks
rake info:targets         # List project targets
rake ipa:adhoc            # Creates build/project-1.0-Release-adhoc.ipa
rake ipa:appstore         # Creates build/project-1.0-Release-app_store.ipa
rake testflight:publish   # Publishes build/project-1.0-Release-adhoc.ipa to testflight

По умолчанию версия продукта берется из Info.plist, но ее можно переопределить с помощью

:version => 1.0.3

Последний штрих – генерация правильного changelog'а для Testflight-публикации – остается домашним заданием :)

[Перевод] Усовершенствуйте свой Git Workflow

Настраиваем git-flow

Установить git-flow на OS X проще простого с помощью homebrew

brew install git-flow

На страничке проекта git-flow Вы можете найти инструкции по установке на Linux и Windows.

Установка git-flow добавляет несколько очень удобных git-команд для создания и управления ветками фич и релизов. Новый git репозиторий создается с веткой master. По умолчанию в git-flow эта ветка используется для production-а. В свою очередь основная разработка происходит в ветке develop. Следует отметить, что git-flow не более чем серия удобных “сокращений” для переключения между этими ветками и перебрасывания изменений из одной в другую.

Кнопка "Follow Us on Twitter"

Код для запуска уже установленного на iOS твиттер-клиента:

Идея взята отсюда, добавлен один клиент и удалено много копипаста :–)

Если устраивает открытие в Safari – можно откомментировать последний элемент, на этом кастомизация заканчивается.

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

Проверка знаний iOS

Если стоит задача отбора iOS разработчиков, то можно дополнительно воспользоваться интересным практическим заданием от Джефа ЛаМарша (Jeff LaMarche), которое он упоминает в своем посте.

Требуется скачать проект и сделать его рабочим, т.е. чтобы все открывалось, ничего не падало и не было утечек памяти. По его оценкам толковому человеку требуется от 30 до 90 минут на все.

Highlight.js & Objective C

Highlight.js (en/ru) обзавелся поддержкой Objective-C не без помощи вашего покорного слуги. Фидбек принимается с удовольствием. Пока фича доступна только в репозитории.

Mike Ash: Friday Q&A

Mike Ash выпустил свои пятничные вопросы/ответы в виде отдельной книги. Это серия статей о самых интересных/сложных/низкоуровневых моментах программирования на Objective-C. Что называется must read. iBooks / Amazon