Как же долго не мог я себя мотивировать к обновлению блога после новогдних праздников, полтора месяца прошло…
По роду своей деятельности мне приходиться заниматься доставкой (deployment) adhoc версий на iOS-девайсы заказчиков. Все бы ничего, но порой для человека установить IPA-файл на дейвайс становится адовым адом. Да и мне особого удовольствия не доставляет каждый раз усердно объяснять людям, как установить этот самый IPA-файл на свой iPhone/iPad/iPod. Буквально на днях открыл для себя ошеломляюще простой способ установки adhoc на устройство, используя… штатный Safari-браузер , поставляемый в комплекте iOS. На самом деле, любой другой браузер тоже сгодится. Установка происходит в один клик. Читать далее…
Давненько не писал в блог, а материала готового пока нет, поэтому сегодня будет скучная, но полезная статья. По новой работе столкнулся с нетривиальной проблемой. Смысл: после локального тестирования и убеждения себя в том, что все вроде бы ОК, собираю AdHoc версию приложения, отправляю тестировщику ipa. Тот инсталлирует приложение себе на девайс, запускает и начинает тестировать. Спустя некоторое время получаю от него репорт, мол вот тут-то упало. Пытаюсь воспроизвести — не выходит, у меня на двух девайсах все работает при тех же исходных. Что делать? Идеальным решением было бы как-то удаленно запустить под дебаггером приложение на девайсе тестировщика по интернету, и даже вроде я встречал упоминания о таких сервисах, но, во-первых как-то боязно доверять третим лицам свое приложение, а во-вторых, времени не было. В итоге попросил у тестировщика Crash Log — журнал аварийного завершения, который формируется внутри iOS каждый раз, когда какое-либо приложение аварийно завершается. Взять то взял, но что с ним делать? Читать далее…
С публикацией очередного приложения в AppStore возникли некоторые осложнения. Пока ведется битва с командой iTunes Connect (позже напишу, как это было), параллельно занимаюсь разработкой следующего iOS проекта. Ядро уже спроектировано и есть черновой вариант. В этом проекте я планирую реализовать немного клиент-серверной технологии. Разработку серверной части решил вести на локальном компьютере. Ранее я это делал на своем домашнем серваке, но с недавнего времени отправил его на пенсию (старенький он уже), а новый еще до конца не сконфигурировал. Переехав на Mac OS X Lion, пришлось кой-что переустанавливать вручную, так как Ассистент Миграции не восстанавливает ненативные программы. Пришлось опять долго вспоминать, как поднять стек Mac OS X, Apache, MySQL, PHP — решил использовать классический server-side. Чтоб в следующий раз не мучаться воспоминаниями, накидаю парочку хинтов. Читать далее…
Ужасным известием, слетевшим с уст телеведущей девятичасовых новостей, началось для меня утро сегодняшнего дня. Я не мог поверить в происходящее, и до сих пор рассудок отказывается это осознавать, хотя гадское предчувствие не покидало с того самого момента, когда Стив сообщил в письме о своем уходе с поста SEO компании Apple. В тот день (25 августа) ошеломляющая новость буквально придавила меня, в голове понеслись беспорядочные мысли: как же так, он не может так поступить, только не сейчас, это конец? Навязчивая идея, что то событие ознаменовало закат эпохи Apple, преследовала меня весь день. Спустя некоторое время всеобщая истерия стихла, и пришло понимание, что пока ничего непоправимого не случилось, Стив остается в Apple, просто меняет должность. Тогда я не мог допустить и мысли, что месяц с небольшим спустя предчувствия реализуются, и я буду писать свой первый в жизни некролог… Читать далее…
Во истину, лень — двигатель прогресса… Домашняя сеть стала делом обыденным, и все чаще возникают ситуации, когда нужно передать тот или иной файл с одного компьютера на другой. Или просто посмотреть с сервера кино по вайфаю на iPad’e, да мало ли. Мне очень часто приходится монтировать к своей Mac OS X расшаренные ресурсы Windows-систем. В конце-концов мне надоело каждый раз это делать вручную, и я нашел весьма простой способ, как автоматизировать монтирование smb-шары при старте системы. Nota Bene… Читать далее…
Помимо FAR Manager, еще одной программой, которой мне очень не хватало в Mac OS X, была игра Сапер. Я долго искал по сети нормальную реализацию, но не нашел. Под нормальной реализацией я подразумеваю пример Windows-сапера, вероятно, потому что долгое время им пользовался, а привычка — вторая натура. Во многих блогах я встречал хныканья бывших виндоводов, на тему того, что им не хватает той или иной программы из мира Windows. Встречались и стенания по поводу Сапера. Надо сказать, что первое приложение, которое я предпочитаю писать в качестве разминки, изучая новую для себя платформу программирования — это Сапер. Он позволяет отработать основные навыки — работа с пользовательским интерфейсом, обработка событий системы, таймер, работа с графикой, работа с файлами. Ну и плюс, конечно, набивается рука на синтаксисе. Таким образом MacMines (такое имя я решил дать проекту) стала первым моим приложением, написанным для платформы Mac OS X. Сейчас я расскажу, что интересного я узнал в ходе ее создания.
Читать далее…
В Mac OS X существует незамысловатый способ распространения дистрибутивов в виде дисковых образов формата DMG. Образ диска можно примонтировать простым дабл-кликом на файле образа. При этом приложение Finder открывает корневую папку примонтированного диска в новом окне. Как правило, в этой папке принято хранить само приложение (.app), символическую ссылку на папку /Applications, и возможно, какие-нибудь readme файлы или тексты лицензий. Символическая ссылка на Applications нужна для того, чтобы «инсталлировать» приложение, просто перетянув его в иконку папки (drag-and-drop). Это возможно, благодаря структуре Cocoa-приложения, которое из себя представляет папку с расширением .app, внутри которой лежат исполняемый файл и все необходимые запчасти. Таким образом, скопировав всю папку, приложение инсталлируется. Приятная новость заключается в том, что отображение dmg образа в Finder’e можно кастомизировать (придать произвольный вид). В этом посте я решил накидать в первую очередь для самого себя небольшой мануал о том, как сделать красивый dmg инсталлятор. Читать далее…
Сразу хочу признаться, идею этого приложения я позаимстовал в одной flash-игрушке, ровно как и саму идею заимствовать идеи во флэш-играх — как то прочел в одном блоге сетования товарища на тему того, что какие-то нехорошие люди под кальку переделали его флэш-игру на iOS и срубили нехило деньжат. Но я не такой подлый коварный, поэтому свое приложение я сделал бесплатным, не смотря на то, что на его создание ушло почти три месяца. Почему я решил делать именно «пьяницу» (рабочее название)? В оригинальной игре нужно было удерживать от падения нестабильного персонажа, двигая мышку вправо-влево. Мне показалась очень заманчивой идея воспроизвести это же, но только с использованием акселерометра (устройство, с помощью которого iPhone знает свое расплолжение в пространстве) — идеально укладывается в концепцию iOS-приложения. К тому же с моего предыдущего приложения, в котором акселерометр использовался весьма примитивно, у меня было сильное желание более тщательно изучить приемы работы с акселерометром. Ну и плюс еще добавил несколько фич, например, бутылки на дороге, на которых человек может поскользнуться — их нужно отшвыривать. Поэтому изучить пришлось гораздо больше, и сейчас я попробую это изложить. Читать далее…
Одним из пожалуй главных условий публикации приложений в AppStore является отсутствие утечек памяти. В данный момент занимаюсь подготовкой своего третьего официального iPhone-приложения (и похоже до нового года не успеваю – Apple торжественно объявили, что iTunesconnect уходит на рождественские каникулы). Предыдущие приложения прошли валидацию на соотвтетствие требованиям с первого раза, хотя у коллег я встречал в блогах или на форумах упоминания о том, что их приложения заворачивали в том числе и из-за того, что в них обнаруживались утечки. То есть специалисты Apple Inc. тестируют все публикуемые приложения на соответствие дизайну, и, если обнаруживают какое-либо несоответствие, возвращают приложение из статуса On Review в Rejected. Следовательно, приложение необходимо протестировать перед публикацией, и в первую очередь на предмет утечек памяти. Читать далее…
Единственной очень полезной вещи, которой мне реально не хватало в макоси, был FAR Manager. Отчаяние доводило меня до крайностей, например до мыслей написать свой ФАР. Даже под это дело разобрался, как писать консольные приложения под юникс, чтобы была картинка как в Фаре — разноцветные панельки, менюшки и т.д, и даже написал HelloWorld под это дело. Оказалось все не так уж и сложно, и написать простейший файловый менеджер (с двумя панелями и минимумом функций) — не такая уж непосильная задача. Все делается через escape-последовательности, как я и предполагал. Потом меня надоумили использовать терминального клиента и работать в терминальной сессии на виндоус-сервере. Какое-то время меня это устраивало, но открывать каждый раз сессию ради какой-то простой операции… И вот, наконец-то был найден компромиссный способ. Читать далее…