Archive for novembro, 2009

Configurando Subversion no XCode - Parte I

quinta-feira, novembro 26th, 2009

Já aconteceu com você, estar usando um código e de repente bum, ele some??

Para isto usamos um repositório de dados. Um repositório de dados visa garantir que sempre teremos um local dedicado a guardar um arquivo. Outra coisa importantíssima de um repositório é garantir o controle de versão de um arquivo. Por exemplo, se você fez uma modificação equivocada em um arquivo, sempre poderá voltar para uma versão anterior do arquivo, evitando um retrabalho cansativo e desanimador.

Qual modelo escolher?

O XCode pode trabalhar com 3 modelos de repositórios:

    • CVS (Concurrent Versions System): Há muito tempo usado como padrão para o desenvolvimento de código aberto (open source) e de controle de versão empresarial no mundo UNIX / Linux. CVS é um programa de código aberto e sempre vem junto com as ferramentas do Xcode.
    • Subversion: É outro exemplo de código aberto que tem como objetivo ser um projeto melhor que o CVS. Está rapidamente deslocando o CVS como ferramenta para controle e revisão de um projeto.
    • Perforce: É uma versão comercial SCM para Perforce Software. Existem vantagens de velocidade e escabilidade usando o Perforce, porém convém conhecer os termos de uso deste modelo em www.perforce.com

Vamos mostrar como configurar um repositório usando o Subversion, pois acredito ser mais robusto que o CVS e o Perforce depende da adequação do seu projeto aos termos de uso.

Configurando o Subversion

Nós iremos criar um repositório chamado de Linear. Para fazer isso precisamos usar linhas de comando. Abra a aplicação Terminal, localizada em /Applications/Utilities.

Vamos digitar os seguintes comandos

figura-011

mkdir -p /Users/Shared/Subversion/Linear

cd /Users/Shared/Subversion

Agora vamos usar o utilitário  de administração do repositório, o svnadmin, para configurar o repositório no novo diretório Linear. Com isto, teremos a certeza que todos os arquivos do repositório estarão disponiveis para os usuários do sistema tanto para leitura, gravação ou exibição.

svnadmin create Linear

chmod -R a+rwX

ls -l Linear


(Matéria publicada da revista MAC+)
(by Ademar Varela)

Another Brick in the Wallpaper - Parte Final

quinta-feira, novembro 12th, 2009

Agora, no arquivo MainViewController.m vamos modificar o método viewDidLoad:

- (void)viewDidLoad {

UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];

accel.delegate = self;

accel.updateInterval = kUpdateInterval;

[super viewDidLoad];

}

Com este código nós estamos inicializando o acelerômetro, observe que estamos utilizando a definição feita no arquivo .h, o kUpdateInterval.

Agora vamos implementar o método do acelerômetro. É importante lembrar, que o SDK já possui várias definições e este é um deles. Você não precisa declarar este método no seu arquivo .h

Portanto, vamos implementar somente no arquivo MainViewController.m:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

int numberRandom = 0;

if (! brokenScreenShowing) {

if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold) {

while (numberRandom != showIndex && numberRandom == 0) {

numberRandom = round(random()%8) + 1;

}

showIndex = numberRandom;

switch (showIndex) {

case 1:

imgPicture.image = [UIImage imageNamed:@"1.png"];

break;

case 2:

imgPicture.image = [UIImage imageNamed:@"2.png"];

break;

case 3:

imgPicture.image = [UIImage imageNamed:@"3.png"];

break;

case 4:

imgPicture.image = [UIImage imageNamed:@"4.png"];

break;

case 5:

imgPicture.image = [UIImage imageNamed:@"5.png"];

break;

case 6:

imgPicture.image = [UIImage imageNamed:@"6.png"];

break;

case 7:

imgPicture.image = [UIImage imageNamed:@"7.png"];

break;

case 8:

imgPicture.image = [UIImage imageNamed:@"8.png"];

break;

case 9:

imgPicture.image = [UIImage imageNamed:@"9.png"];

break;

default:

break;

}

[self.viewMain insertSubview:viewZoom atIndex:2];

}

}

}

Vamos entender melhor o método apresentado.

Basicamente, o código mais importante para ser entendido é o seguinte:

if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold)

Se você lembrar bem, kAccelerationThreshold é uma definição feita no arquivo MainViewController.h. Esta definição tem como objetivo informar a tolerância permitida dos movimentos do iPhone (exatamente por isto, as comparações estão relacionadas com os eixos x, y e z). Quanto maior o número atribuido para esta variável, mas brusco deverá ser o movimento para o código do método ser acionado. Logo, quanto menor este número mais sensível ficará o acelerômetro.

O switch serve apenas para selecionar uma imagem que será exibida no momento em que o iPhone for movimentado. A imagem será selecionada a partir de um número aleatório gerado a partir do código:

numberRandom = round(random()%8) + 1;

Este código gera um número aleatório entre 1 e 9.

No final a nossa aplicação permitirá que o usuário escolha um determinado wallpaper ou chocoalhando o iPhone, a aplicação irá disponibilizar um wallpaper aleatóriamente. Claro que você já deve ter percebido que a aplicação irá trabalhar somente com 9 wallpapers.

Nas próximas edições, iremos falar da implementação do restante do código e da criação da interface gráfica.

(Matéria publicada na revista MAC+)

(by Ademar Varela)

Another Brick in the Wallpaper - Parte I

terça-feira, novembro 3rd, 2009

Hoje vamos ver como implementar uma das features mais famosas do iPhone, o acelerômetro. Além disso vamos ver também como implementar um wallpaper no iPhone. Antes porém vamos esclarecer que não é possível modificar um wallpaper diretamente de uma aplicação, na verdade, vamos copiar um wallpaper para o álbum de fotos e depois o usuário poderá modificar o wallpaper pelo próprio sistema operacional. Diferentemente da aplicação anterior, vamos iniciar nossa aplicação pelo código, na próxima edição vamos mexer com o design.

Iniciando o código

Abra o Xcode e crie um projeto chamado iWallpaper. Como já vimos em edições anteriores, vamos tirar a barra de status.

figura-01

A primeira coisa que iremos fazer é programar o acelerômetro, no arquivo MainViewController.h, digite o seguinte código:

#import “FlipsideViewController.h”

#define kAccelerationThreshold 1.2

#define kUpdateInterval (1.0f/10.0f)

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {

BOOL brokenScreenShowing;

}

- (IBAction)showInfo;

@end

As definições kAccelerationThreshold e kUpdateInterval serão utilizadas para controlar o uso do acelerômetro. Já a variável brokenScreenShowing será utilizada na aplicação para definir o momento que o acelerômetro entrará em ação.

(Matéria publicada na revista MAC+)
(by Ademar Varela)