четверг, 2 декабря 2010 г.

Вращение, перемещение и изменение размера спрайта

Продолжаю предыдущий пост.

Мне нужно было реализовать манипулирование загруженной фотографией так как это сделано в галерее фотографий. То есть, нам нужно изменять размер спрайта, поворот и передвижение.

Выбор фотографии из галереи на iPad

Мда, как-то глупо выглядит мой предидущий пост Возвращение джедая, написан еще 14 сентября. Почти 2 месяца я возвращался. Но я постараюсь все таки заставить себя писать.

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

Еще меня обвинили в обмане. Мол я попиздеть пришел, а ничего конкретного не говорю. Согласен, отныне буду писать код и меньше текста.

вторник, 14 сентября 2010 г.

Возвращение джедая

Больше двух месяцев я не писал ничего в блог. Если честно, то я думал никому он кроме меня не нужен. И я приятно удивлен, когда ко мне обращаются люди за советом, читавшие этот блог. Ну раз кто-то читает, я буду писать :)

В жизни моей случились некоторые перемены: сдал первый проект на заказ, я женился, съездил на море отдохнуть, переехал в съемную квартиру с женой и взял еще один проект на заказ.

О последнем подробнее...

воскресенье, 4 июля 2010 г.

Первый блин комом

Программы, как и люди, имеют свой жизненный цикл. Они "рождаются" из первых прототипов, концептов. Потом ростут в нечто большее, обростая функционалом и графическими интерфейсами. Уходят в продакшн, словно выросшие дети уходят из дому во взрослую жизнь. И наконец, о программах забывают, что равносильно смерти.

Кажеться, только вчера я начал изучать Objective-C и переписывать первые примеры Хелоу Ворлды. Как буд-то вчера, я написал первый скелет своей первой программы. Это был прототип iDharmaClock. А сегодня уже приложение подошло к своему финальному этапу жизни.

За две недели продаж, iDharmaClock заработала чуть больше $50. Это считается провалом. Как говорится - первый блин комом. Но для меня этот ком - ценнейший опыт. Я очень многому научился, делая, казалось бы, элементарные часы/будильник.

Что было сделано неправильно:

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

во-вторых, я мало внимания уделил рекламе своего приложения. Хоть я и постарался выложить информацию о программе во все публичные места - этого было недостаточно. Хорошо было-бы пропиарится на сайтах фанатов сериала ЛОСТ, но я побоялся правообладателей сериала и торговых марок.

на Хабре, пост про iDharmaClock раскритиковали в большей части из-за платности приложения. Нужно было сделать как @zyafa: в первые сутки поставить цену - бесплатно, а потом уже повысить цену.  Но это все я уже постараюсь учесть при выпуске следующего приложения :)

пятница, 11 июня 2010 г.

Пишем себе часики для iPhone Часть 1. Основа всех часов

Основой всех часов является повторение определенного действия через заданное время. Итак, какой главный принцип работы наших часов? Правильно, это метод NSTimer который запускает таймер.


NSTimer *myTicker = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];

Функция showActivity запускает проверку времени. У меня в часах есть возможность отображать секунды (по умолчании этот режим выключен). При каждом вызове функции showActivity мы обновляем переменную секунд, добавляя к ней 1. Далее проверяем секунды и если секунды равны 60 то обнуляем переменную и запускаем функцию смены минут.

Обратите внимание на параметр repeats:YES который указывает, что функцию showActivity нужно запускать повторно.

Параметр scheduledTimerWithTimeInterval:1.0 задает время через которое фунцкия будет запускаться заново.

Если вы захотите остановиь наш таймер, то нужно вызвать метод [myTicker invalidate]

Пишем себе часики. Часть 0

Раз я вам обещал, значит сделаю :) Ну что же, будем писать себе часики? 

Я не буду здесь писать весь код программы, его получилось немного дофига :) Выложу просто архив с проектом. Каждый желающий может его скачать и скомпилировать для себя. 
Буду постепенно описывать основные принципы и алгоритмы работы. Если у кого-то возникнут вопросы, задавайте их в комментариях или же мне в твиттер/джаббер/почту.

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

Код, конечно, выглядит ужасно. Сейчас я бы многое сделал по другому. Вы сильно не пугайтесь :)

Ну вот и ссылка на сам архив проекта iDharmaClock

А вот еще создал репозиторий в гугл.код и если буду что-то обновлять то там будут все обновления: https://code.google.com/p/idharmaclock/

пятница, 21 мая 2010 г.

Задаем стандартный фон

Не знаю как вы, но я долго искал как поставить у приложения фон как у сгруппированного списка. Вот такой:

У меня даже была идея вырезать кусок скрина и склеить полноценную картинку для фона. Но решить эту задачку очень просто. Пишем во ViewController'е такую строку:

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];


пятница, 7 мая 2010 г.

iDharmaClock видео на конкурс

Вот тут смонтировал видео для конкурса iAppContest


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

четверг, 22 апреля 2010 г.

Обновление бета версии DharmaClock

Немного доработал часики:

  1. словил ранне не обнаруженные утечки памяти
  2. исправил некоторые глюки с переворотом цифр после возвращения со страницы будильника
  3. посте включения сирены будильника цифры сменяются иероглифами
  4. для того, чтобы выключить будильник, теперь нужно выбрать правильную последовательность чисел
  5. немного изменил нижний фон пластинок циферок
Вот немного новых скриншотов:



Кому интересно попробовать часики у себя на iPhone вот ссылка на ДепозитФайл

Если кто попробует, то буду очень благодарен за комментарии.

вторник, 13 апреля 2010 г.

DharmaClock beta - полное видео работы

Записал полное видео работы будильника. Немного длинное, но зато со звуком :)

http://www.youtube.com/watch?v=EChfRj4Hv38

Особенно мне нравится звук, прямо как в сериале :) просыпаюсь под этот будильник без проблем. Была идея включать на будильник песню, та что играла с пластинки, под которую просыпался Дезмонд, но думаю, что возникла бы проблема с правообладателями лицензии на песню. Но у себя пробовал и это круто :)

понедельник, 12 апреля 2010 г.

Видео - DharmaClock beta

Записал коротенькое видео часиков DharmaClock beta. Хотя вживую выглядит лучше и приятнее :)

http://www.youtube.com/watch?v=GLEHF94qFUk

DharmaClock beta - первая публичная бета

Вот решил выложить публичную бэту DharmaClock.
Изначально, анимация переворачивания цифр была реализована сменой картинок. Но это привело к большому размеру приложения около 5 мегабайт, что для часов - очень много. Было решено переделать механизм переворота, сделать переворот с одной картинкой и уменьшение ее размера программно. Тут на помощь пришли люди хорошие из сообщества iPhoneDevCamp Ukraine и особенно TT KILEW. Они подсказали некоторые детали. Хотя анимация отображается кривовато, постараюсь это выправить.
И вот, что мы имеем на данный момент:

  • размер уменьшился с 5 мегабайт до 1.3
  • возможность включить отображение секунд*
  • возможность выставить будильник на определенное время
  • за минуту до будильника включается предупреждающий сигнал, играющий раз в 4 секунды
  • за 10 секунд до будильника включается серена. Еще сделал чтоб белые таблички менялись на красные, но пока отключил, потому как не нравятся мне те, что я сделал.
  • после выставления будильника становится доступна кнопка отключение будильника, под ней написано время на которое наведен будильник
Что еще не готово, так это обратный таймер. Вобщем, ради него я это все и затевал, но еще не реализовал. Вот сейчас этим как раз и займусь :)

Секунды* я сделал для тестового режима, потому и не оформлял их красиво. Оказалось очень сложно смотреть на часы и ждать когда сменятся цифры, если не видеть секунды. Попробуйте :) я и не представлял, что это так сложно. Потому функция работает в тестовом режиме.

Часики можно запустить только на джейлбрейкнутых iPhone.

Буду благодарен за критику в комментариях. 

четверг, 1 апреля 2010 г.

Пишем свою первую программу для iPhone

Решил я написать урок для самых-самых начинающих iPhone-программистов. Простейший Hello World! уже банально да и маловато. Мы же хотим все и сразу. Вот и создадим мы программу в которой уже научимся создавать события выполняемые по нажатию на кнопку.

среда, 31 марта 2010 г.

Задаем альбомный режим для нашего приложения

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

суббота, 27 марта 2010 г.

Dharma Clock - готовность 70%

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

Чуть позже опишу весь процесс разработки (если пообещаете меня не гнобить за код)

Вот хочу показать как выглядят часики:

среда, 17 марта 2010 г.

Как запихнуть свою программку в файл .ipa

Наигравшись своей программкой хочется ею поделиться с другими. Есть несколько способов сделать это и оба они подразумевают, что iPhone на который вы хотите установит приложение уже взломан и имеет возможность устанавливать программы в обход AppStore. Если нет, то вот тут я описывал раньше как это сделать http://mac.rv.ua/?p=69

Итак имеем два способа:

Тестирование своего приложения на реальном iPhone

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

Что же нужно для того, чтоб установить свою свеженаписанную программку на реальный девайт?

воскресенье, 14 марта 2010 г.

И такс, начнем!

И так, что же нужно для начала нашего сложного и длинного пути разработчика? Конечно же - это среда разработки. Идем на сайт developer.apple.com переходим в раздел iPhone Dev Center. Чуть ниже нажимаем на ссылку iPhone SDK и нас просят ввести свой apple id. Если вы ранее не регистрировались, то пройдите регистрацию, она не сложная и на данном этапе бесплатная (далее расскажу точнее). После регистрации тыцаем на ссылку Downloads и выбираем нужный нам пакет. Качаем, устанавливаем и мы готовы к разработке программ.

Небольшое уточнение: для того, чтоб продавать наши программы в AppStore или тестировать их на наших айфонах нужно купить лицензию разработчика. Стоит это счастье $99 в год. Но я пока не покупаю эту лицензию, так как программ для продажи у нас еще нет :) мы пока только учимся.

При написании программ в Xcode мы сможем их тестировать на симуляторе iPhone. Тоесть запускается программа с виду копия айфона и в ней уже наше приложение. Для того, чтоб установить нашу программу на наш айфон нужно либо иметь лицензию за $99 либо провернуть несколько магических действий с нашим Xcode и iPhone, что я и сделал.

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

суббота, 13 марта 2010 г.

Идея первой программы

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

1) во первых дизайн хочу сделать в стиле часов с металическими пластинами как в сериале LOST. Точнее хочу сделать 2 варианта. Один вариант "Ночной" это в таком стиле:

А "Дневной" вариант хочу сделать в стиле часов из темы для HTC Diamond: 

2) Во-вторых, хочу будильник-таймер. Режим у меня такой, что вставать утром на работу мне не нужно, ложусь когда удобно мне. Но организм иногда может себе позволить спать не 6 часов как удобно мне, а например 10, а это уже совсем не позволительно. Поэтому ложась спать я просто ставлю таймер, например, на 6 часов и через это время включается будильник.
3) Ну и третий режим - просто часы именно в "дневном" стиле.

пятница, 12 марта 2010 г.

Знакомство

Привет! Мне всю жизнь было интересно программировать. Начал я с бейсика. Написал несколько уроков по книжке, передвигающийся автомобиль. Потом кто-то сказал, что нужно учить C++ ибо бейсик - вчерашний день (это было лет 10 назад). Книжек у меня тогда небыло, про интернет я и не знал вобще. Учил сишку по справке :) понятно, что англоязычной. Пошел учиться на факультет кибернетики, получил магистра но так и не стал программистом. Где-то на 3м курсе увлекся РНР и с тех пор я скорее всего кодер чем кто-нибудь еще. Хотя и РНР я знаю так себе.

Пол года назад купил себе iPhone. С самого начала был поражен количеством и качеством программ для него. И вот недавно подумал, а почему бы не попробовать себя в роли iPhone-разработчика? Тем более, что это кажется довольно перспективной отраслью в которой можно заработать деньги.

И так предлагаю вам идти со мной по этому пути, будем вместе учиться и развиваться.