30 марта 2011 г.

DevelopBrief #1

Ниже представлена своего рода сводка по тем вопросам разработки (или около того), с которыми я сталкивался в последнее время.

Мертвые билды
Если нужно сэкономить место на диске, то загляните в папку, куда у вас билдятся все проекты (привет iSheez!). В XCode 4 адрес папки для билдов выставляется в Preferences... -> Locations -> Derived data, либо по дефолту – /Users/_Username_/Library/Developer/Xcode/DerivedData. Там лежат билды всех открывавшихся проектов, в том числе, давным-давно удаленных (очень интересно - зачем их там оставлять пылиться). У меня для ~15 проектов (из которых 4 - актуальны) эта папка занимала чуть меньше 1 Гб.
Можно также заглянуть на уровень выше и почистить неудачные снэпшоты (у меня один битый весил 1.2 Гб). Вот так просто и освободились 2 Гб из 60 доступных на ноуте.

Наглый парсер
Моя непредусмотрительность отняла у меня по меньшей мере 2 часа на поиск глупой ошибки. Суть ситуации проста: UI приложения висел в некоторых ситуациях, хотя с моей стороны нагрузок на основной поток не было. Для получения данных от твиттера я использую связку MGTwitterEngine (библиотека общения с твиттером) + YAJL Framework (парсер). После того, как я определил, что висит приложение между отправкой запроса и получением ответа (вроде бы ничего не делает в это время), стало ясно кто вешает основной поток (под 90% CPU time). А вешает его парсер, который перед тем как вызвать метод делегата и передать данные ответа мне, усиленно в главном потоке обрабатывает полученную информацию. Мне в голову не приходило, что такие длительные операции не выводят в фоновый поток (надо ж наглости набраться!). Мораль: будьте начеку и не наступайте на такие грабли!

Видео WWDC 2010
В связи с анонсом WWDC 2011 вспомнил о видео докладов с предыдущей конференции. Посмотрел те ролики, которые не видел до этого, в том числе "iPad and iPhone User Interface Design". Отличный доклад, с примерами на стандартных приложениях, iWork for iPad и других. Хорошая возможность загляунть одним глазком за ту завесу, за которой Apple творит свои дизайнерские чудеса. Рекомендую к просмотру. Искать в разделе "Application Frameworks", session 103.

WWDC 2011
Судя по слогану на эмблеме WWDC, не видать нам превью iOS 5 до 6 июня. Отсюда сразу же следует, что iPhone 5 не выйдет в привычные нам сроки, так как разработчикам должны дать время на "обуздание" новых возможностей ОС (как это обычно делает Apple). Или же ждать iPhone 5 без iOS 5? Утешением может служить надежда на то, что отсрочка релиза вызвана желанием выпустить продукт (как с софтверной, так и с аппаратной точки зрения), который будет больше, чем просто эволюционное развитие iPhone 4. Ждем.

p.s. Как всегда - эмблема сделана на загляденье!
p.p.s. Hell! 1200 €

27 марта 2011 г.

Objective-C в Твиттере

Из любопытства решил поискать в твиттере признаки Objective-C кода, в результате чего обнаружил немало примечательных твитов:

Видео о подтачивании NSLog под себя;

Напоминалка о структуре NSURL;

О работе сообщения removeFromSuperView класса UIView;

– Из того же блога статья про создание git repo для существующего проекта в XCode 4;

– Заметка с говорящим названием "Parsing sucks";

Много полезного по тегам #iosdev и #iphonedev:
Сворачиваемая секция таблицы;
– Возможно, пригодится утилита App Scanner для проверки приложения на использование private API;

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

Эмо-кодер:

Многих до сих пор не отпускает "Начало":








Также посоветовал бы обратить внимание на аккаунты: 24z, CocoaGeek.

Не стоит забывать о могучих возможностях твиттера и его пользе для нас ;)

23 марта 2011 г.

Легализация, часть 1. ПО и книги

ПО
Смещение моих взглядов в анти-пиратскую сторону началось с покупки iPod Touch год назад (оттуда же берет свое начало мой путь в ряды маководов). Наигравшись с джейлбрейками, наглядевшись на мучительные ожидания знакомых и друзей очередного анлока, я пришел к выводу, что необходимость из кожи вон лезть, но только бы избавиться от "оков Apple", не так уж очевидна. И одним летним днем я попробовал влиться в экосистему iTunes и App Store. Не понадобилось много времени, чтобы понять насколько эта система удобна, что затраты на проживание в ней невелики. А главное - совесть была чиста. Негоже разработчику "тырить" софт у коллег.
С плеера эта идея перетекла и на компы, где теперь властвует Mac OS X со своим отдельным магазином. Осталась лишь пара приложений, появления которых я жду в нем, чтобы легализовать ПО на своих машинах на 100%.
Примечание: Одним из них является Parallels Desktop 6. На днях я получил грустное известие о том, что пока его появления в Mac App Store не предвидится, поэтому буду покупать программу через интернет традиционным способом.

Книги
На примере не только российского менталитета вцелом, но, также общаясь с близкими людьми, с неприятным удивлением обнаружил, что многие уперто считают, будто не должны платить за электронную книгу. По всей видимости, для них ценность книги не в ее содержимом, а лишь в носителе. Люди не видят (и, похоже, не представляют) тех трудов, которые стоят за созданием мало-мальски приличного произведения. С такими взглядами довольно очевидно, что покупать электронные книги в магазинах - полнейший абсурд. "Ведь носитель у меня уже есть, за интернет я заплатил(а), значит можно качать и спокойно читать". Надо таким людям напоминать с каким трудом из них вылазили сочинения на свободную тему в 10 классе, чтобы они хотя бы прикинули объем работ при написании книги. Я глубоко возмущен таким положением дел и намерен бороться с "темнотой" среди своих близких. Сам же я сейчас предпочитаю книги в традиционном, бумажно-механическом виде, что приводит к регулярным в последнее время визитам в "Библио-глобус". Неспеша рассматриваю альтернативные пути получения книг, в том числе в электронном виде.

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

20 марта 2011 г.

XCode 4 и какого с ним на MacBook Air 11

Хочу осветить свой взгляд на свежевышедший XCode 4 и некоторые аспекты работы с ним.

Во-первых, сам формат выхода необычен. Разработчики могут ставить как с MAS (Mac App Store), так и с сайта Apple. Такой дуализм мне не видится изящным решением. Уверен, что есть способы поместить новую версию IDE всем разработчикам в раздел "Purchased" MAS, что привело бы к единой системе апдейтов (весьма удобной в магазине). Многие задавались вопросом - почему теперь XCode платный для тех, кто не является участником iOS/Mac developer program. В твиттерах видел бурные волны негодования по этому поводу, с комментариями вроде: "Если бы IDE была платной на тот момент, когда я начинал программировать, то я бы не пошел по этому (iPhone) пути". Действительно, для многих начинающих 5$ могут стать тем барьером, который не станешь преодолевать, сделав выбор в сторону Eclipse, IDEA, VS Express и т.д. (я не про пиратскую российскую действительность, стараюсь охватывать ситуацию более общим взглядом). Естественно, в Apple прекрасно представляли последствия такой политики, а значит сознательно шли на такой шаг, чтобы... ограничить рост числа разработчиков. Это самый очевидный вывод, который мне напрашивается. Быть может им стало тяжело обрабатывать все запросы на аппрув? Действительно, контролировать рынок приложений объемом, стремительно приближающимся к полумиллиону единиц, тяжело. Не буду спорить, может все эти мои домыслы - чушь. Деятельность купертиновской компании нелегко поддается анализу. В любом случае, будет интересно посмотреть на последствия (или их отсутствие).

Во-вторых, (коротко) о самом XCode.
Что нравится:
– Единый дизайн. Да непривычно, но более цельно. "Все под рукой".
– Анализатор + Live issues + Fix-it. Вместе они представляют собой мощный инструмент баг-фиксинга. Это надо один раз попробовать. Приведу один пример их работы: Скриншот
– Крутой просмотрщик истории репозитория, сравнения версий. В одном стиле с ним выполнен менеджер замены текста: Скриншот
– Поддержка Git! Поздно-не поздно, какая-никакая, но есть, что не может не радовать.
– Помощь стала приятней, хотя обновились не все разделы. В нее добавили видеоролики, что также плюс (а вот голос мистера Сэма из MS Win - минус). Повысилась ее интегрированность в интерфейс.
– Встроенный Interface Builder. Особенно порадовала возможность прямого соединения элементов интерфейса с кусками кода.
– Куча прочих "вкусностей": отличные шаблоны кода, обновленное автодополнение, улучшенные Unit тесты, экспресс-фильтры и прочее, прочее.

Что не нравится:
– Креши, глюки - их хватает. Валится иногда на ровном месте, а через минуту там же - все гладко.
– Куда выбросили поддержку моделирования иерархий классов? Кому она мешала? Это самый странный момент для меня.
– Туповатое, огромное статусное табло, вытянутое (по всей видимости) из iTunes. Нет возможности редактировать содержимое панели инструментов. Ну, хоть скрыть можно.

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

В-третьих, так сложилось, что в последнее время MB Air - основной рабочий инструмент, что заставило чуть оптимизировать работу с XCode 4 на нем. Настроил размер панелей, выучил все сочетания клавиш, управляющие ими, убрал панель инструментов - вот и простор для действий. Тормозов на младшей модификации "воздуха" (при открытых Chrome, Mail, IM, iTunes, Twitter, Terminal) нет. Полет отличный, несмотря на 500-600 метров в памяти. Будем работать дальше.