Serialização de Objetos em Javascript

27 fev

Buena moçada, trabalhando em um projeto ultra mega power secret (parte do nosso plano de dominação galáctica) aqui na Coderockr, me deparei com a necessidade de utilizar o sessionStorage do WebStorage para armazenar alguns objetos da “sessão” local do usuário. Fiz algumas pesquisas, achei algumas soluções, mas acabei criando a minha própria devido as circunstâncias do projeto.

O funcionamento é muito simples, bem estilo “painel de jipe”, espero que vocês usem e colaborem com melhorias e correções no gist criado lá no github: https://gist.github.com/xorna/5051451

Lançamento do E-book Zend Framework 2 na prática

21 nov

Aqui na Coderockr, como regra, acompanhamos sempre as atualizações das ferramentas, linguagens e tecnologias em geral, principalmente as inerentes ao nosso trabalho. No dia 05/09/2012, a Zend lançou a versão estável Zend Framework 2.0. Em comparação ao Zend Framework 1.x, as mudanças são profundas pois a Zend e sua comunidade de desenvolvedores reescreveram o Zend Framework do zero! E como já tínhamos começado um grande projeto com ZF e após muito confabular com a equipe, decidimos recomeçar o desenvolvimento apontando para o ZF2 como principal framework utilizado no desenvolvimento.

Após estudar muito o ZF2 e a pouca documentação disponível e trabalhar muito com ele, o meu sócio Elton Minetto lançou o seu novo e-book, o Zend Framework 2 na Prática, que junto com seu primeiro e-book, são alguns dos poucos materiais de qualidade sobre o Zend Framework escritos em português. Além dos livros, prestamos consultoria e treinamentos in-company para equipes que desejam utilizar o ZF e o Doctrine em seus backends e estamos preparando um curso totalmente on-line sobre a matéria dentro do Code Squad.

Para adquirir o seu exemplar digital, o processo é bem simples e feito através do próprio site zfnapratica.com.br/comprar. Aproveite o pacote com os dois livros que com certeza vale a pena!

GANHE UM LIVRO TOTALMENTE NA FAIXA (ENCERRADO, VENCEDOR ABAIXO)

Sim amigos, vou dar um livro para algum leitor sortudo. Eu poderia encher o saco de todo mundo na minha timeline pedindo Retweets ou Compartilhamentos, mas não, acho isso muito chato e talvez até negativo quando você tenta promover algum tipo de produto ou serviço.

Ao invés disso, a participação se dará aqui pelo blog, na seção de comentários. Qualquer comentário será válido, desde que tenha o nome e o e-mail do participante (este e-mail não será usado para nada além enviar a cópia do e-book).

O sorteio será nesta sexta-feira 23/11/2012 as 15h e após feito o sorteio o nome do felizardo será divulgado aqui no blog. Mas não se preocupe, não é preciso confirmar nada e o e-book irá direto para seu e-mail.

E O VENCEDOR É…

O sorteio foi feito através do random.org e os participantes foram listados na ordem em que fizeram seus comentários. Parabéns Mcr Conrado, o e-book será enviado no seu email agora mesmo. Se você não ganhou, não fique triste, o valor do livro não é alto, corre lá no site do do ZF na Prática e compre ele agora!

Apresentação: Desenvolvimento de Aplicativos iOS Universais

7 nov

No dia 22/10, eu apresentei uma palestra na Semana da Informática da Univille, aqui em Joinville/SC. O assunto proposto era demonstrar o desenvolvimento de um aplicativo universal simples. O código fonte está disponível no Github no link https://github.com/xorna/Universal e a apresentação segue abaixo:

[iOS Dev] Internacionalização de Aplicativos com ajuda do Linguan

15 dez

Não importa a plataforma em que você está desenvolvendo seu projeto de software, se você deseja alcançar um grande público e consequentemente alcançar suas metas, que na maioria das vez são financeiras, você deve fornecer mais de um idioma em seu software para que ele seja útil para o público espalhado pelo mundo.

A plataforma mobile, talvez seja onde seu aplicativo possa atingir o público mais variado em relação a idiomas. Hoje um aplicativo em inglês tem uma grande chance de ser um sucesso global, pois em todos os mercados terá grande aceitação do público. Mas ter só um idioma, mesmo que seja o inglês, é um fator de limitação do alcance e também da experiência do seu aplicativo, fazendo que você perca uma parcela do que você poderia alcançar atendendo a mais idiomas.

No desenvolvimento de aplicativos para iOS e Mac OS X, o processo de internacionalização de aplicativos é facilitado por uma série de recursos disponíveis na plataforma. Basicamente o que você precisa fazer é administrar arquivos onde os textos de cada idioma pode ser editado e de onde eles serão lidos.

Nesse artigo, farei um tutorial básico sobre internacionalização em aplicativos para iOS e apresentarei o aplicativo Linguan da Cocoanetics, aplicativo este que faz o trabalho de internacionalização ser mais leve e preciso.

Hora de Criar o Aplicativo

Abra o Xcode, e crie um novo aplicativo. Neste caso criarei um aplicativo do tipo “Single View”, com o nome de “Localized”:

Criando o arquivo com os textos

Para criar o arquivo que irá conter os textos para cada idioma, é preciso ir em File > New > New File > Resource > Strings File:

Após selecionar o tipo do arquivo, vamos nomeá-lo, uma boa prática é usar o nome Localizable para o arquivo:

Feito isso, é só criar o arquivo e ele irá aparecer dentro do projeto. Mas ainda não temos idiomas dentro desse arquivo de strings, dessa forma, o idioma utilizado dentro do arquivo será o idioma oficial do aplicativo. Será preciso adicionar idiomas nele, assim ele funcionará como se fosse um diretório com vários arquivos de texto com diversos idiomas. Iremos criar 3 idiomas: Português, Inglês e Espanhol. Para adicionar os idiomas é preciso abrir a barra lateral direita e adicioná-los na aba Localization:

Editando os arquivos

A edição dos arquivos de idioma é simples, basicamente você insere chave = valor, e também pode adicionar comentários:

/* hello */
"helloKey" = "hello";

Isso deve ser replicado para idioma que você deseja traduzir, dessa forma, você teria o seguinte:

/* English */
/* hello */
"helloKey" = "hello";
/* Portuguese */
/* hello */
"helloKey" = "olá";
/* Spanish */
/* hello */
"helloKey" = "hola";

Feito isso, o seu projeto já possui strings traduzidas e para traduzir é simples, basta utilizar a função NSLocalizedString com a chave para a string que você deseja exibir:

NSLocalizedString(@"helloKey", @"")

Exibir a string

Vamos fazer um pequeno teste, vamos adicionar um UILabel no meio da tela para exibir o texto que precisamos, abra o arquivo .xib do seu view controller e posicione um UILabel no meio da tela. Após isso abra o header (.h) do view controller e declare o outlet para acessar o UILabel:

@interface ViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *label;

@end

Feito isso, não esqueça de conectar o UILabel ao seu outlet no arquivo .xib.

Abra o arquivo .m (implementação) do view controller, faça o @synthesize e defina o texto do UILabel:

implementation ViewController

@synthesize label = _label;

- (void)viewDidLoad
{
    [super viewDidLoad];
	
    _label.text = NSLocalizedString(@"helloKey", @"");
}

@end

Dessa forma, já está tudo certo, você só precisa testar o aplicativo e mudar o idioma do dispositivo de testes para visualizar as modificações sendo feitas:

Versão em Inglês

Versão em Inglês

Versão em Português

Versão em Português

Versão em Espanhol

Versão em Espanhol

É muito simples até mesmo traduzir um aplicativo que já está em desenvolvimento. Mas mesmo assim, o fato de ter de replicar chave = valor para todos os arquivos, podem se tornar um pouco insustentável depois um tempo de desenvolvimento e algumas dezenas de strings para serem administradas.

Simplificando com Linguan

Para resolver esse problema de replicação, o pessoal do Cocoanetics criou um aplicativo matador para administração de arquivos de tradução chamado Linguan. O Linguan é um aplicativo super simples de ser utilizado, tem uma interface bem amigável e cumpre o que promete. Na minha opnião, é mais um aplicativo do tipo “Como eu desenvolvia sem isso” que redefine como você trabalha com strings traduzidas.

Para começar, ele está disponível na Mac App Store e custa $4,99 (uma barbada), após comprar/instalar ele, ao abrir verá a seguinte tela:

No Linguan, você não abre arquivos, você abre seu projeto do Xcode inteiro, e o aplicativo varre ele atrás de strings traduzidas e as organiza por chaves x idiomas. Abri o projeto do Localized no linguan e olhe como ficou:

Nessa tabela, será possível alterar traduções, adicionar novas chaves com suas traduções e também remover as chaves, e o melhor, tudo isso está sendo sincronizado com os arquivos originais, você pode trabalhar seu código fonte no Xcode e editar as traduções diretamente no Linguan.

O Linguan possui também as possibilidade de exportar arquivos com traduções. Dessa forma, é possível enviar ao seu tradutor um arquivo de texto com todas as chaves que estão sem tradução para ele traduzir. Quando ele enviar de volta para você, você pode importar esse arquivo e o aplicativo irá automaticamente sincronizar suas traduções. Além das possibilidades de importação e exportação de strings, o Linguan possui um validador e um “Wizard” que ajuda você a traduzir suas strings.

Para conhecer um pouco mais sobre o Linguan, o desenvolvedor dá um grande destaque a ele no seu site e também está disponível na Mac App Store.

Para finalizar, recomendo muito a criação de aplicativos com localização mesmo que você não vá traduzir o aplicativo imediatamente, dessa forma, você precisará de poucos minutos para transformar seu aplicativo de um idioma em um aplicativo com vários idiomas. E recomendo muito também, o uso do Linguan, foi um aplicativo que me chamou a atenção desde seu lançamento, pois eu acho um saco administrar arquivos de strings, pois o processo de replicação das alterações é lento e falho por depender exclusivamente de uma cabeça humana.

Apresentação Desenvolvimento iOS

13 nov

Na última sexta-feira, dia 13/11, fiz uma apresentação sobre desenvolvimento iOS na Semana Acadêmica da Computação da Sociesc em Joinville, a apresentação consiste em apresentar alguns elementos básicos no desenvolvimento de aplicativos para dispositivos iOS e mostrar como começar por nessa tecnologia.

[iOS 5] Utilizando a integração nativa com o Twitter

6 nov

Uma das novidades mais interessantes para os usuários do iOS 5 é a integração nativa com o Twitter, fazendo-se possível compartilhar praticamente qualquer tipo de conteúdo a partir de qualquer aplicativo, desde que o desenvolvedor tenha utilizado a integração nativa como opção de compartilhamento em seu aplicativo.

A intenção desse artigo é criar um aplicativo comum para compartilhar um conteúdo comum como um texto.

Criando o Aplicativo

Escolher o template do projeto

Escolher o template do projeto

Configurando o Projeto

Configurando o Projeto

Projeto Criado

Projeto Criado

Integrando o Twitter em seu Aplicativo
Para conseguir integrar o Twitter dentro do seu aplicativo, é preciso utilizar o Framework Twitter.framework disponibilizado junto com o SDK do iOS 5. Para isso, vá para as configurações do “target” do projeto em Summary e role o conteúdo até fim:

Configurações de Frameworks

Configurações de Frameworks

Clique no botão de adicionar (+) frameworks, e procure pelo framework Twitter.framework:

Adicionando o framework Twitter.framework

Adicionando o framework Twitter.framework

Selecione o framework Twitter.framework e clique em add, feito isso, o framework já está disponível dentro do seu projeto.

Mantendo a Compatibilidade

Para manter seu aplicativo compatível com versões anteriores do iOS, se for preciso é claro, é possível configurar o framework para não ser obrigatório seu carregamento. Se você executar o projeto como está no iOS 4 irá ocorrer esse erro: dyld: Library not loaded: /System/Library/Frameworks/Twitter.framework/Twitter, para evitá-lo, vá onde está a configuração dos frameworks e selecione a opção de required para optional no framework:

Mantendo seu projeto compatível com iOS 4

Mantendo seu projeto compatível com iOS 4

Essa configuração somada a alguns cuidados com o código fonte deverá garantir um funcionamento tranquilo para o aplicativo.

Criando a tela com o conteúdo

Para começarmos, vamos criar a parte visual da tela que vamos usar para montar o texto e enviar para o Twitter. Para esse exemplo, não irei usar o storyboard, pois o visual do exemplo é simples e possui apenas uma tela. Vamos criar um campo de texto e um botão para enviar para o Twitter:

Tela de conteúdo

Tela de conteúdo

E agora, no arquivo TwitterViewController.h vamos criar o outlet para o campo de texto e a action para o botão:

//
//  TwitterViewController.h
//  Twitter
//

#import <UIKit/UIKit.h>

@interface TwitterViewController : UIViewController

@property (nonatomic, strong) IBOutlet UITextField *textField;

- (IBAction)tweet:(id)sender;

@end

Passe para o arquivo TwitterViewController.m para fazer a implementação da propriedade e da action:

//
//  TwitterViewController.m
//  Twitter
//

#import "TwitterViewController.h"

@implementation TwitterViewController

@synthesize textField = _textField;

- (IBAction)tweet:(id)sender
{
    
}

Após isso, vá até o arquivo da interface, conecte a outlet textField ao UITextField e a action ao evento “Touch Up Inside” do botão.

Twitando

A parte mais simples já passou, agora vem a parte simples =). Vamos começar o arquivo TwitterViewController.m onde vamos importar o framework do Twitter, vamos testar sua disponibilidade e vamos tentar postar algo no twitter:

//
//  TwitterViewController.m
//  Twitter
//

#import "TwitterViewController.h"
#import <Twitter/Twitter.h>

@implementation TwitterViewController

@synthesize textField = _textField;

- (IBAction)tweet:(id)sender
{
    Class twitterClass = NSClassFromString(@"TWTweetComposeViewController");
    if (twitterClass) {
        TWTweetComposeViewController *composer = [[TWTweetComposeViewController alloc] init];
        [composer setInitialText:_textField.text];
        [self presentViewController:composer animated:YES completion:NULL];
    }
}

A partir desse código, já é possível enviar um texto para o Twitter utilizando a API nativa do iOS 5. Caso o usuário já tenha configurado sua conta no iOS, ele irá ver um balão onde ele poderá editar o texto antes de enviar ao Twitter, caso ele não tenha configurado, ele receberá um alerta, e poderá decidir se quer configurar ou não:

Tela de compartilhamento

Tela de compartilhamento

Tela de alerta do usuário

Tela de alerta do usuário

Além do básico

Além do básico demonstrado aqui, é possível fazer mais com esse framework, como adicionar um “block” para ser executado ao final do processo e deve ser atribuído à propriedade completionHandler.

Também existem outros métodos específicos para anexar imagens e links:

- (BOOL)addImage:(UIImage *)image;
- (BOOL)removeAllImages;
- (BOOL)addURL:(NSURL *)url;
- (BOOL)removeAllURLs;

Para finalizar, é importante dar esse tipo de recurso para os usuários para eles poderem compartilhar conteúdos a partir do seu aplicativo, pois é óbvio que isso terá um impacto positivo para o usuário e para seu aplicativo.

Caso queira baixar o código fonte, ele está disponível no github: http://github.com/xorna/Twitter.

Desenvolvimento de Jogos com Cocos2d

8 ago

No sábado, día 6 de agosto, durante o CodeRockr Jam na CodeRockr, fiz uma apresentação sobre o desenvolvimento de jogos 2D utilizando o Cocos2D, abaixo a apresentação:

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.