Segundo artigo da série “Grails: do Groovy à Web” publicado na Java Magazine

Meu segundo artigo da série “Grails: do Groovy à Web” acaba de ser publicado na edição digital da Revista Java Magazine, o que quer dizer que a versão impressa já deve (provávelmente já está) estar sendo distribuida neste momento.

Continuando a nossa jornada, desta vez exponho uma visão panorâmica do framework. Será apresentado o projeto que nos acompanhará nos próximos 3 artigos, que é o GBlog: um gerenciador de blogs simples o suficiente para que principiantes possam compreender o framework, mas complexo o suficiente para que possamos nos aprofundar nas 3 camadas que compõem o nosso framework: controle, modelo e visualização, que serão o assunto das edições 77, 78 e 79 da revista.

Espero que gostem da série (aguardo o feedback de vocês). Um grande abraço!

Off:como transformar o seu Macbook em um adaptador wireless para Xbox 360

Enquanto digito este post meu XBox 360 está baixando atualizações da Internet. Tudo normal se não fosse por um pequeno detalhe: meu “adaptador wireless” para o Xbox é o meu Macbook. Se você não quer gstar uma fortuna naqueles adaptadores, pode usar o seu notebook para este fim. Acredito que com algumas pequenas alterações o mesmo poderá ser feito usando um notebook com Windows ou Linux.

Sendo assim, aqui segue o passo a passo:

1. Conecte o seu XBox 360 ao seu Macbook usando um cabo de rede qualquer.

2. Configure o seu MacBook para compartilhar a sua conexão de Internet wireless usando sua conexão Ethernet

Em preferências do sistema selecione o seu adaptador Ethernet e configure o seu endereço IP manualmente com os seguintes parâmetros:

Endereço IP: 10.0.0.1

Máscara de rede: 255.255.255.0

Em seguida, vá em “Compartilhamentos” e selecione a opção “Compartilhamento de Internet”

Em seguida, marque a opção “Para computadores usando” -> Adaptador Ethernet (en4)

3. Configure seu XBox 360

No Dashboard, vá para a aba “Configurações do Sistema”

Em opções de rede, configure-a manualmente com os seguintes dados:

Endereço IP: 10.0.0.2

Máscara de rede: 255.255.255.0

Gateway: 10.0.0.1

Em seguida, altere suas configurações de DNS definindo como servidor de DNS o endereço do seu roteador wireless.

Voilá! Você acaba de economizar 400 reais!

Gradle: um sistema de build MUITO agradável

Recentemente resolvi experimentar o Gradle em um projeto. Para aqueles que não o conhecem, trata-se de um sistema de build baseado em Groovy que trás a expressividade desta linguagem para o mecanismo de build, o que torna nossos scripts muito mais legíveis e fáceis de escrever. Sou fã do Ant, porém sempre me incomodou o fato de escrever meus scripts usando XML ao invés de uma linguagem estruturada.

Entre as principais vantagens que pude observar foram:

  • Aprendizado mais fácil: como meus scripts são basicamente Groovy (que já conheço bem), tudo o que precisei aprender foram basicamente 3 coisas: como definir dependências, as tarefas default e uma ou outra task presente na API.
  • Código mais fácil de ser compreendido: frequentemente me pego perdido em meus scripts do Ant conforme meus processos vão se tornando mais complexos.
  • Escrita muito mais fácil: enquanto no Ant eu preciso ficar o tempo inteiro pesquisando a documentação em busca de quais tasks fazem o que, com Gradle tudo o que preciso consiste em escrever código Groovy.

Neste post irei expor o que já aprendi a respeito da ferramenta que, apesar de muito pouco, já supriu 100% das minhas necessidades.

Primeiro passo: instalação

Básicamente o mesmo processo de instalação do Groovy ou Grails.

  1. Baixe os binários em http://gradle.org
  2. Descompacte-os em um diretório de sua preferência
  3. Crie uma variável chamada GRADLE_HOME que aponte para o diretório no qual se encontra a sua instalação
  4. Adicione o diretório GRADLE_HOME/bin ao path do seu sistema.
  5. Execute o comando gradle em sua linha de comando. Se aparecer uma mensagem diferente de “comando não encontrado”, você já pode começar a trabalhar.

Segundo passo: escrevendo seu primeiro script

Assim como no Apache Ant, o núcleo dos scripts de build do Gradle são as tarefas (que chamaremos daqui pra frente de tasks). O script mais bobo que podemos criar é o abaixo:


task bobagem << {

println "Sou uma bobagem"

}

Tudo o que estiver entre << { e } é código Groovy. Em nosso caso, a task irá simplesmente imprimir o texto “Sou uma bobagem” em nossa linha de comando.

Para executar o script, lembre-se de salvá-lo como build.gradle (é o nome default dos scripts usado pela ferramenta, mas pode ter também outros nomes, desde que você utilize o parâmetro -b seguido do nome do arquivo) e em seguida executar o comando gradle -q bobagem. O parâmetro -q indica qual task deverá ser executada.

Caso nenhum comando seja passado ao script, será exposta uma mensagem de erro nos informando de que não há uma task default definida em nosso script.

Como definir uma task padrão

Definir uma task padrão é muito simples. Basta incluir na primeira linha do seu script o seguinte comando:

defaultTasks 'bobagem'

Executando novamente o script (desta vez sem parâmetros) a task bobagem será executada.
Se você quiser, pode também definir uma sequência de tasks a serem executadas, tal como no exemplo abaixo:

defaultTasks 'bobagem', 'mais_bobagem'

Neste caso, a task bobagem será executada e, em seguida mais_bobagem.

Definindo dependências entre as tarefas

Se é um sistema de build, dependências devem poder ser definidas. Em nosso caso, é simples, tal como no exemplo abaixo:

defaultTasks: 'mais_bobagem'
task bobagem << {
  println "Sou boba"
}

task mais_bobagem(dependsOn: bobagem) <<
   println "Mas eu sou ainda MAIS boba!"
}

E a saída de nosso script será

Sou boba
Mas eu sou ainda MAIS boba!

Abusando do Groovy

E basicamente isto é tudo o que você precisa saber para começar a trabalhar. Para tornar a utilização do Gradle mais nítida, achei que seria interessante expor aqui um script que escrevi para fazer o backup de uma das minhas bases de dados:

defaultTasks 'backup'
def dataAtualString = {
	java.text.SimpleDateFormat formatadorData = new java.text.SimpleDateFormat("dd_MM_yyyy___hh_mm_ss")
	return formatadorData.format(new java.util.Date())
}

def arquivoBackupMySQL = {
	return file(diretorioBackup.getAbsolutePath() + "/gctbd_${dataAtualString()}.sql")
}

task backup << {
	println "Executando backup do MySQL..."
	def arquivoBackup = arquivoBackupMySQL()
	println "Gerando arquivo ${arquivoBackup.getAbsolutePath()}"
	"mysqldump -u loginQuente --password=quente --databases bd_quente >> ${arquivoBackup.getAbsolutePath()}".execute()
	println "Backup do MySQL executado com sucesso"

}

Repare que além da minha task backup tenho dois métodos: dataAtualString (que me retorna uma string contendo a data formatada) e arquivoBackupMySQL (que me retorna o arquivo aonde desejo salvar o meu backup.

Tudo o que preciso fazer consiste em chamar estes métodos assim como faria em Groovy dentro da minha task. Um processo muito mais simples do que aquele com o qual estava acostumado com Groovy.

Mas nem tudo são flores

Gradle ainda é novíssimo: pelo que pude ver, sua lista de discussão foi criada na segunda metade de 2008, e o projeto ainda está na sua versão 0.8 (nem logotipo direito possui!). Sendo assim, ainda é pouco conhecido e, consequentemente, possui bem menos material a seu respeito do que mecanismos mais tradicionais como o Apache Ant ou o (argh!) make.

Outro ponto negativo que encontrei foi a performance, que é bem aquém do Ant. No entanto, não tenho dados para comprovar esta queda na performance. Sendo assim, nada impede que trate-se apenas de impressão minha.

Tirando estes dois poréns (ambos temporários), acredito que o Gradle venha a se tornar cada vez mais popular como uma alternativa ao Ant pelo fato de adotar a linguagem Groovy como lingua franca. Recomendo!

PS:

sim, eu já conhecia o GANT, mas quis experimentar o Gradle para ver como era. :)

Adobe Flex – recursos para iniciantes

Visto que tanta gente se interessou pelo meu post anterior sobre Flex (“Por que resolvi largar o HTML e partir para o Flash (Flex na Realidade)”), achei que seria uma boa idéia publicar aqui os recursos que venho utilizado no meu aprendizado. Assim, quem sabe, vocês não me dão algumas sugestões também, não é mesmo?

Fonte primária: Developer Network da Adobehttp://www.adobe.com/devnet/flex/

Esta é a mais óbvia de todas, certo? A Adobe documenta suas tecnologias maravilhosamente bem, e na DevNet podemos encontrar básicamente tudo o que precisamos para começar a “por a mão na massa” de fato. No entanto, há alguns pontos que gostaria de destacar:

Adobe Flex in a Weekhttp://www.adobe.com/devnet/flex/videotraining/ – Uma série de vídeos nas quais são explicados os principais conceitos por trás do Flex. O único porém é que para assistir a estes vídeos é necessário baixar o Adobe Media Player: trata-se de um player voltado únicamente para os vídeos disponibilizados pela Adobe. Soa meio chato à primeira vista, mas uma vez instalado é pouca a chance de você se arrepender, pois o conteúdo veículado é simplesmente fantástico.

Adobe Flex Cookbookhttp://cookbooks.adobe.com/flex – Fenomenal, como o próprio nome diz, trata-se de inúmeras “receitas de bolo”, nas quais podemos encontrar soluções para os problemas mais (e menos) frequentes relacionados ao desenvolvimento de aplicações em Flex. É práticamente imprescindível para aquelas dúvidas que julgamos ser tolas (mas que não são) quando estamos aprendendo uma linguagem nova.

Live Docshttp://livedocs.adobe.com/flex/3/html/index.html – Assim como em Java temos os Javadocs, na plataforma Adobe temos os Live docs. Se você tem dúvida com relação aos métodos e propriedades de alguma classe, este é O local para se pesquisar.

Download da documentação completa (quer um único link? é este!)http://livedocs.adobe.com/flex/3/flex3_documentation.zip – É possível fazer o download da documentação completa do Flex (incluindo os LiveDocs, óbvio) neste link. O arquivo contém os live docs e alguns PDF’s, dentre os quais destaco:

  • Adobe Flex Language Reference - o PDF que me fez ficar apaixonado com ActionScript. Maravilhosamente escrito, neste documento encontra-se a descrição da linguagem ActionScript, que é quem liga os pontos por trás do Flex. Pelo que pude ver até agora, saber ActionScript é FUNDAMENTAL para quem quiser aprender Flex: sendo assim, vale muito à pena gastar um tempinho com este PDF.
  • Flex 3 Developer Guide - assim como o PDF acima, é também incrívelmente bem escrito. Neste caso, estão listados todos os recursos fornecidos pelo Flex no formato de mini tutoriais.
  • Live Docs – Apesar de existir o conteúdo online, é uma mão na roda ter estes documentos armazenados no seu desktop também.

Livro: Flex 3 in Action – Tariq Ahmed – Editora Manning

Assim como todos os livros da coleção “in Action”, é mais uma leitura bastante agradável. Pode ser considerado o resumo do PDF “Flex 3 Developer Guide” que mencionei acima. Se você está em dúvida com relação à viabilidade do Flex em seus projetos, a introdução deste livro é altamente recomendada, pois explica o porquê do RIA e quais os problemas que o conceito busca resolver.

Flex.org – http://flex.org

O site da comunidade Flex também é excelente. Recomendo demais o RSS (http://feeds.feedburner.com/flexorg) para aqueles que queiram ficar informados a respeito da tecnologia.

Finalizando

Por enquanto estas tem sido as principais fontes de informação que tenho usado em meu aprendizado.  Caso tenha mais alguma sugestão, por favor, enriqueça este post incluindo-as em seus comentários para que outros além de mim, que estejam buscando informações na web a respeito também possam se beneficiar ok? Um abraço e muito flex!

Série “Grails: do Groovy à Web” começa a ser publicada na Java Magazine

A partir deste mês estarei publicando na Java Magazine uma série de artigos chamada “Grails: do Groovy à Web”, na qual exponho com detalhes os principais conceitos por trás do framework.

A primeira parte já se encontra disponível na edição 75 publicada este mês, e o tema é a linguagem Groovy. Farei uma introdução à linguagem, o que considero fundamental visto que baseado na minha experiência com outros usuários do framework percebo que a esmagadora maioria dos problemas encontrados são decorrentes do não conhecimento da linguagem.

Claro, não irei expor todos os recursos da linguagem, mas sim aqueles que considero de fundamental importância para a o aprendizado do framework.

Após este artigo, serão publicados mais quatro, cujos temas serão:

Edição 76 – Uma visão panorâmica do Grails – Será exposto o modo de trabalho adotado no framework. É fundamental para que o leitor possa ter uma noção clara do que de fato vêm a ser o framework.

Edição 77 – A camada de controle – Como funcionam os controladores do Grails. Será visto qual a lógica por trás das URLs, assim como a utilização de recursos como redirecionamentos, filtros, etc.

Edição 78 – GORM – Veremos com detalhes o funcionamento da camada de persistência do Grails.

Edição 79 – A camada de visualização – Aqui iremos ver os principais recursos que o GSP nos oferece, assim como as facilidades oferecidas pelo framework, como por exemplo templates, ajax, etc.

Aguardo o feedback de vocês!

Por que resolvi largar o HTML e partir pro Flash (Flex na realidade)

No decorrer de 2009 iniciei um projeto cujo principal objetivo técnico consistiu em levar ao extremo o que consigo fazer atualmente usando Grails na camada de controle e domínio e a dobradinha HTML/CSS/Javascript na camada de visualização (atualmente, só de ver uma interface 100% baseada em campos textuais e caixas de seleção já começo a [...]

Outra causa para o maldito erro “Não é possível abrir mais tabelas” do MS Access com JDBC ODBC Bridge!

Como sempre, o Access apronta das suas comigo. Quando achava que já tinha resolvido todos os problemas relacionados ao maldito problema “Não é possível abrir mais tabelas” (veja este link), encontrei outra possível causa para o mesmo no StackOverflow.
O que pode ocorrer é o seguinte: há situações nas quais o seu cliente pode perder conexões [...]

Dica: criando XML com Groovy

Criar XML com Groovy é absurdamente simples. Para tal, tudo o que precisamos consiste na classe groovy.xml.MarkupBuilder.
Como o próprio nome já entrega: esta classe utiliza o recurso builder presente em Groovy de uma maneira bastante bacana.
Tudo o que precisamos fazer consiste em passar uma estrutura hierarquica para uma instância de MarkupBuilder e em seguida evocar [...]

Dica: iniciando processos em Groovy

Há situações nas quais se torna necessário iniciar processos externos.Em Java, podemos usar a classe Runtime para iniciar novos processos, tal como no código abaixo:

java.lang.Runtime.getRuntime().exec("notepad.exe")

O resultado será uma nova instância da classe abstrata java.lang.Process, cujos métodos poderemos acessar e assim direcionar o stream de saída, etc.
Groovy simplifica esta tarefa da seguinte forma: caso queira iniciar [...]

Link útil: acessando bases de dados MS Access com Java

Sempre enrolei pra escrever um post assim, até que encontrei um pronto na internet.
Sendo assim, se você também sofre tendo de acessar o maldito Access usando Java, recomendo que leia o guia abaixo: muito útil.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2#SECTION0

Get Adobe Flash playerPlugin by wpburn.com wordpress themes