Tuesday, October 12, 2010

Как заставить работать Sample Сode в iPhone Симуляторе.

Аннотация

Предположим, что Вы начинающий разработчик iPhone и уже знакомы с азами Objective-C и знаете как в Xcode создать проект, новые классы и т.п. Вполне естественно, что на этом этапе своего профессионального развития Вы захотите открыть в Xcode пример кода какой-то простенькой программы (Sample Code) для iPhone, покопаться в ней и, конечно, протестить ее на iPhone Симуляторе. Допустим Вы смогли найти такой Sample code, открыли его в Xcode, просмотрели и нажали на Build and Run, что бы запустить программу в Симуляторе. В этом случае будьте готовы, что с первого раза у Вас это сделать не получится, и скорее всего из-за двух ошибок:


1. "[BEROR]error: There is no SDK with the name or path 'iphoneos4.0'";
2. "Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain".


Именно о том, как устранить эти ошибки и заставить iPhone Симулятор открыть Sample Code и будет идти речь в этой статье.


Преодолеть эту проблему для Вас, как начинающему разработчику iPhone, очень важно, потому что это придаст Вам уверенности в своих способностях и сохранит Ваше воодушевление для дальнейшего освоения Objective-C и Xcode. И что самое главное, Вы сможете открывать без проблем любой Sample Code готовой программы для iPhone и изучать ее устройство и работу на практике.

Где найти Sample code?

Для того, что бы "играться" с рабочим кодом готовой программы для iPhone его надо сперва где-то найти. Для этого есть два способа:

Способ 1

Sample code можно найти на официальном сайте Apple для разработчиков. Зайдите на эту страницу http://developer.apple.com/library/ios/#navigation и нажмите на кноку, на которой написано «Download Sample Code»:



После нажатия кнопки пойдет загрузка Sample code UICatalog. Это код, запускающий программу для iPhone, в которой представлены примеры различной реализации кнопок, переключателей и т.д. Вот как отобразит этот код iPhone Симулятор:



Если вы выберете из раздела бокового меню Resourse Types опцию Sample Code, у Вас будет возможность скачать код других программ.



Способ 2

Sample code можно найти на Вашей персональной страничке в http://developer.apple.com. Для этого залогинтесь и найдите на главной страничке в боковом меню раздела Resources for iOS 4.1 ссылку под названием Sample Code.




Способ 3

Sample code можно так же найти в Xcode. Для этого: 

В верхнем меню Xcode в разделе Help выберете Developer Documentation. В поле поиска введите ключевое слово, например UIButton.



В результате поиск выдаст страничку с описанием класса UIButton (это класс, на основе которого можно создавать объекты кнопок). Кроме всего прочего на это страничке Вы можете найти и скачать Sample Code программ, в которых есть пример реализации этого класса.



Альтернативный способ зайти на эту же страницу в документации: в коде сделать клик на ключевом слове, удерживаю зажатой клавишу Option (Alt), в данном случае этим ключевым словом должно быть UIButton.

Кликаем на один из примеров кода, в нашем случае это будет тот же UICatalog:



После этого открываем в Xcode проект выбранной программки (он же Sample Code) через клик на кнопке с соответствующей надписью:


Как открыть Sample Code в iPhone Симуляторе?

Итак, как было сказано выше, когда Вы попытаетесь запустить Sample Code в iPhone Симуляторе у Вас это может не получиться из-за ошибок (errors), о которых вам сообщит Xcode.

Как устранить ошибку #1"[BEROR]error: There is no SDK with the name or path 'iphoneos4.0'".

Для устранения этой ошибки Вам необходимо изменить настройки Base SDK в Вашем проекте:

1. Зайдите в Info Вашего проекта. Это можно сделать, если выделить папку с названием проекта одним кликом (обыно его иконка отображается синим цветом) и использовать шорткат +I.





2. В открывшемся окне Info Вашего проекта выберите закладку Build.



3. Найдите опцию под названием Base SDK и выберите самую последнюю из доступных в списке версию iOS Device:


4. Если эта ошибка не будет устранена таким образом, тогда попробуйте изменить Base SDK еще и настройке Active Target "Target UICatalog". Для этого в рабочем окне Вашего проекта зайдите в меню Project и выберите Edit Active Target "Target UICatalog":







Если Вы сделали все как написано, первая ошибка должна быть успешно устранена. Проверьте это открыв этот Sample Code в Симуляторе.

Как устранить ошибку #2"Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain".

Для устранения этой ошибки надо указать программе, что Вы собираетесь открыть Sample Code в Симуляторе, а не в настоящем iPhone.

1. Зайдите в то же меню Project и выберите опцию Simulator в настройке "Set Active SDK":


Нажимайте Build and Run и симулятор должен открыть заветный Sample Code без проблем.

Как сделать аудио файл для iPhone в формате .caf

Информацию об этом можно найти в документации Apple здесь, в разделе Processing - How do I convert an audio file to the preferred format for iPhone OS?

/usr/bin/afconvert -f caff -d LEI16 {INPUT} {OUTPUT}

Но... там не хватает практического примера того, как правильно прописать формат источника (input) и его формат на выходе (output). Об этом написано здесь:

afconvert -f caff -d LEI16@44100 -c 1 in.wav out.caf

Tuesday, August 17, 2010

Как сделать USB флешку загрузочной и установить с нее Windows 7 на Netbook MSI U-90

Как сделать USB флешку загрузочной.

Из командной строки на винде надо запустить программу diskpart, а потом сделать следующие действия:

list disk
select disk (указать номер_желаемого_диска)
clean
create partition primary
active
format fs=fat32 quick
assign

Как установить Windows 7 с загрузочной USB флешки

Вставляем Инсталяционный диск Windows 7
Копируем все файл с диска на флешку
Вставляем флешку в ноут
Убеждаемся, что ноут будет загружаться с USB HDD
Запускаем комп и следуем указаниям установки

Проблема 1
Если вставить пустую правильно отформатированную флешку и пытаться с неё загрузиться, РС выдаст ошибку типа "вытащите диск и нажмите любую клавишу, чтобы продолжить". Не надо думать, что флешка плохо отформатирована. Когда на флешку скинутся инсталяционные файлы винды, все пойдет как по маслу.

Проблема 2
Иногда могут возникнуть проблемы при попытке продолжить установку винды на выбранный раздел диска. Появится сообщение типа: программе установке не удалось создать новый или найти существующий системный раздел. Чудесные создатели этой "чудной" ОС не подумали о том, что кому-то пригодится таки узанть, как можно создать этот "системный раздел", чтобы продолжить установку... Что бы сделать этот системный раздел не нужно прерывать инсталяцию. Для этого нужно через шорткат Shift+F10 вызвать командную строку, потом вызвать diskpart и по накатанной дорожке... Сколько людей потратили времени на решение этой задачи!... Ну почему же не написать людям про этот шорткат SHIFT + F10!...
Вот ссылочка на тех, кто уже мучился с этой проблемой. Несколько упражнений в том, как еще можно создавать разделы по этой ссылке.


Проблема 3
Но, может возникнуть еще одна ошибка при попытке отформатировать диск в diskparte при команде: format fs=fat32 quick (как хорошо тем, у кого Мас OSX). При попытке решить эту проблему без быстрого форматирования (quick), а обычным: format fs=fat32,  результат будет тот же только ожидать его прийдется гораздо больше. Не надо тратить время.


Проблема 4
Если возникают проблмы с форматированием флешки, тогда можно пойти другим путем ее форматирования: На Виндовз устанавливается прога, которая позволяет отмечать неактивные чекбоксы. Запускаем Форматирование. Отмечаем чекбокс "сделать загрузочный MS-DOS диск". Дальше все как написано в этом посте.


Проблема 5
Когда не удается создать системный раздел при инсталяции, нужно загрузить с флешки инсталяционные файлы на активный раздел РС, перезагрузиться с жесткого без флешки.
Скинуть файлы с флешки на HD можно с помощью программы xcopy. Все команды xcopy здесь.
Чтобы xcopy скопировал не только файл, но и папки надо использовать после указания источника и назначения "/S".

ИТАК: побеждает Решение FIX
Ситуация: Рабочая загрузочная флешка USB с Widows 7 не может произвести установку ОС на HDD, ошибка установки "программе установке не удалось создать новый или найти существующий системный раздел..." В этом случае:

1. Убеждаемся, что HDD отформатирован с помощью diskpart => partition primary/ active/ format fs=ntfs quick/ assign (diskpart можно вызвать во время установки шорткатом SHIFT + F10).

2. Во время установки вызываем (SHIFT + F10) командную строку и копируем все установочные файлы Windows 7 в отформатированный раздел на HDD. Копирование делается с помощью программы xcopy. Выглядит следующим образом: >xcopy C:\ E:\ /S (где С - HDD, а Е -  флешка, S - команда, которая заставляет копировать все файлы, папки и содержимое папок).

3. После окончания копирования (файлов будет много и копирование может тормозиться, надо ждать и быть внимательным) прервать установку, вытащить флешку и стартануть комп с HDD. После этого должна пойти установка винды с HDD и проблем с разделами уже быть не должно.

4. После установки винды при запуске будет вылетать окно с выбором загрузки (Windows 7 или Его установка). Избавиться от этого "выбора" можно через изменение файла boot.ini. Сделать это можно на программном уровне так: Cтарт -> Мой компьютер -> правая кнопка клик -> Свойства -> Дополнительно -> Загрузка и восстановление (Параметры) -> Загрузка операционной системы. Вот ссылка с подробным объяснением.

5. Вот и все. Если винда вдруг полетит ее можно будет восстановить или установить заново уже без USB флешки, а прямо с HDD. Для этого нужно будет поменять настройки boot.ini обратно и выбрать Установку винды.

Вот полезные ссылки по установке Windows 7 на Netbook:
Первая ссылка, вторая ссылка.

Thursday, July 15, 2010

RealtyCommission - программа на Java+GWT=JavaScript по работе с недвижимостью.

Вот решил сделать небольшую программку RealtyCommission для вычисления комиссионных для агентства недвижимости. Программа написана на языке Java (конечно же ООП) с использованием GWT. Так что это еще один шаг на пути к разработке сайта на Java.

Немного о самой программке. Если недвижимость покупается через АН, обычно за это платят агентству комиссионные. Комиссионные вычисляют по процентному соотношению к стоимости недвижимости. Обычно это может быть 1,5% или 2,5% или 3% или 5%. Как не странно, но некоторые люди забывают как делать вычисления с процентами. Для таких людей программка RealtyCommission облегчит эту задачу.

На всякий случай, напомню как делать арифметические вычисления с процентами.
Например: Квартира стоит 90000у.е. АН надо заплатить 5% комиссионных от ее стоимости.
Вычисляем: 90000 * 5 / 100 = 4500. Итак, комиссионные составляют 4500у.е.

Monday, July 5, 2010

UML – хорошее начало для проектирования сайта на Java. Часть 4: VIOLET - free UML editor

На свое удивление я нашел ссылку на отличный бесплатный инструмент по созданию UML диаграмм. Называется он Violet. Скачать его можно здесь.
Для того, что бы скаченный *.jar файл заработал надо выполнить в Terminal следующую команду (все пишется одной строчкой): java -jar имя_скаченного_файла.jar.

Программа Violet работает отлично, за исключением того, что некоторые клавишы на моем маке начали работать по-другому. Напримкер, клавиша delete стала работать только в сочетании с клавишей fn (я работаю на MacBook Pro). Но это ерунда, по сравнению с тем, как просто можно создавать UML диаграммы, сохранять их и экспортировать в картинку.

Ссылку на эту программу я нашел в книге Кея Хорстмана и Гари Корнела "Java 2. Том 1. Основы. Восьмое издание", стр. 130.

Пример пробной диаграммы (не обращайте внимание на содержание, это просто пример).

Thursday, July 1, 2010

Вопросы для подготовки к собеседованию на вакансию mid and senior Java developer

Вопросы и ответы от Якова Фейна (Yakov Fain) он же Budam для тех, кто готовится к интервью на вакансию mid and senior Java developer: "Secrets Of The Masters: Core Java Job Interview Questions".

Tuesday, June 29, 2010

UML – хорошее начало для проектирования сайта на Java. Часть 3: учусь на своих ошибках

По диаграмме сайта из этого поста я уже получил конструктивное замечание от моего друга-программиста, за что очень признателен. Вывод, который я сделал для себя: не нужно было связывать эту диаграмму с UML. Суть замечаний следующая:

...рисунок, который отображает структуру сайта, не есть UML диаграмма.

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

В том рисунке не понятно о роде взаимоотношений.
Таже не понятно чем DVD1 отличается от DVD2 или CD2 от CD1 (кроме порядкового номера).
НИКОГДА не используй переменные или константы (и методы) в ввиде номера (типа v1, const3) чтобы отобразить, что они отличаются.

Переменная, константа или метод должны играть 2 роли:
1) Ссылка на данные (если метод, то на действие);
2) Описание. Оно не есть обязательным для исполнения компьютером, а для человека.
Когда описательной информации нужно больше, то добавляют комментарий. НО коментарий не должен заменять названия. Сравни:
а) S v1 = new S()
b) S v1 = new S() // this is circle
c) Shape shape = new Circle();

Ты читаешь код, что для воспрятия/понимания лучше?

Дальше.

Суть UML в том, что есть определенный набор знаков/символов, которые являются стандартом.
Сам символ/знак несет определенную информацию вместо кучи текста, о котором знают все, кто знает стандарты UML. Как говорят, 1 рисунок заменяет 1024 слова.

По этому, в UML существует определенный набор символов и диаграмм UML, которые нужно понимать что они значат и уметь ими пользоваться. Каждая диаграмма описывает модель с разных точек зрения, контекстов и целей. Это значит, что при описании любой структуры в UML нужно:
а) выбрать нужную диаграмму UML;
б) описать модель пользуюсь стандартными символами/знаками UML.

И тебя поймут многие :)

Кроме всего прочего этот человек считает, что лучшая книга по UML написана Мартином Фаулером (на англ. Martin Fowler). Судя по всему эта книга называется "UML Distilled: A Brief Guide to the Standard Object Modeling Language".

Благодаря таким конструктивным замечаниям, я вношу поправку к предыдущему посту об UML: сделанную диаграмму сайта webnetika.com лучше рассматривать, как карту сайта, а не UML диаграмму. Я решил оставить эту диаграмму, и не переделывать уже написанные посты. Возможно это поможет кому-то избежать моих ошибок.

Saturday, June 26, 2010

Не швыцай.

Не швЫцай. (Выудил из подкаста Budama).

Это выражение с еврейского, что означает "не хвастай" в контексте осторожности, которую надо соблюдать, что бы не вызвать зависти ближних и не нажить себе лишних недоброжелателей на ровном месте. Не говорите, что у вас все лучше, чем у других.

И еще один афоризм: кто знает – делает, кто не знает – учит.
Высказывание Генри Форда (вольный перевод с англ.): если вы думаете, что можете это сделать – вы правы, если вы думаете, что не можете это сделать – вы тоже правы.

UML – хорошее начало для проектирования сайта на Java. Часть 2.

Для начала я сделал диаграмму сайта www.webnetika.com в его изначальном состоянии (html+css, no Java) на момент 26 июня 2010 года. Это простая диаграмма взаимодействия всех страниц сайта. Возможно, если делать диаграмму в паре с другим программистом (а именно на этом настаивает Крэг Ларман в своей книге по UML), то она могла бы получиться у меня еще правильнее. Хотя я уверен, что старую структуру  сайта (назаву ее так) я изобразил правильно.





UML – хорошее начало для проектирования сайта на Java. Часть 1.

UML - Unified Modeling Language (унифицированный язык моделирования).

Прослушав подкаст (podcast) под названием "Програмирование в стране Утопия" от Budam, я понял что любую программу нужно начинать с ее диаграммирования (хотя кому-то это может показаться и утопией). В принципе, о пользе и необходимости такого подхода (использования UML в начале любого проекта по программированию) я не раз слышал и от знакомых программистов. Польза от этого всем: такой подход не только помогает разобраться другим в программе, но и, в первую очередь, самому программисту, который работает над этой программой.

Лучшая книга по UML называется "Применение UML и шаблонов проектирования: введение в объектно-ориентированный анализ, проектирование и унифицированный процесс UP" (английское название: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development). Автор книги: Крэг Ларман (Craig Larman). Уже вышло третье издание этой книги, я нашел ее англ. версию и уже читаю, правда не в PDF, а в DJVU (маковскую версию проги для чтения djvu можно скачать здесь).

Итак, основная идея этого поста такая: проектирование сайта на Java должно начинаться с диаграммирования, созданного с помощью UML. Таким же образом полезно начинать проектирование любой программы на Java.