Tuesday 31 March 2009

Intalando Wicket

A instalacao do Wicket é relativamente simples, mas a integração com Eclipse e fazer a coisa funcionar foi um parto. E olha que nem cheguei nos projetos em si, ainda estou falando do "Hello world!".

Hoje vou tratar apenas da instalação do Wicket e a integração com o Eclipse vai ficar para outro dia.

Os pré-requesitos são Apache Maven e slf4j. A instalação do Maven é fácil e tem um README.txt que explica direitinho. Agora não dá para dizer o mesmo do slf4j. O slf4j parece ser um monte de arquivos tipo .jar. Ambos eu extrai no /opt.

Os executáveis do Maven devem ir no $PATH e o slf4j eu coloquei no $CLASSPATH. Um teste para ver se a instalação do Maven deu certo é dar o seguinte comando mvn --version:
mgarcia@xps1530:~/workspace$ mvn --version
Maven version: 2.0.10
Java version: 1.6.0_12
OS name: "linux" version: "2.6.27-11-generic" arch: "amd64" Family: "unix"
mgarcia@xps1530:~/workspace$
A instalação do Wicket é direta. Simplesmente extrai o arquivo em /opt. Mas depois não fica muito claro o que fazer. Na dúvida eu adicionei os 2 diretórios ao meu $CLASSPATH:
CLASSPATH=/opt/slf4j-1.5.6:/opt/apache-wicket-1.3.5/src:/opt/apache-wicket-1.3.5/lib

A melhor maneira de começar a trabalhar com Wicket é usar o Quickstar do site. Preenchendo os campos, o comando na caixa de texto é atualizado, em seguida copiar o comando, ir para pasta-pai (workspace no caso do Eclipse) do projeto e colar o comando. Isso gera uma nova pasta com o o nome do ArtifactID com a estrutura de arquivos descritas na própria página.

Vá para o diretorio com o nome do ArtifactID, dispare o jetty com mvn jetty:run, abra o browser e digite o URL http://localhost:8080/"artifactId" (onde "artifactId" é o nome dado ao projeto) e veja a mensagem do Wicket dizendo que a configuração está OK.

Não sei se é realmente necessário, mas eu defini a variável de ambiente M2_REPO=~/.m2/repository. Eu acho que só precisei dessa variável depois que comecei a usar o Eclipse.

A integração do Wicket com o Eclipse é feita através do pacote Laughing Panda. A instalação do plugin está descrita no site, basta adicionar o site e instala-lo.

Sunday 29 March 2009

Editar em HTML não funciona!

Uma descoberta terrível sobre esse Blogger: editar diretamente em HTML produz uma visualização horrível.

Isso é muito triste. Afinal, me corta em muito a liberdade da minha formatação. Qual o problema se quero esse controle.

Cada dia me convenço mais que o Google é a nova Microsoft. Por isso não uso novos produtos e até tenho começado a estudar mudar alguns deles.

Configurando PostgreSQL

PostgreSQL


A minha idéia é usar o Wicket para criar um banco de dados para registrar os laptops que configuramos para os usuários.


A escolha pelo PostgreSQL é por duas razões:1) é o banco de dados usado pelo OpenNMS, então parte do trabalho já está feita e não faria sentido ter dois servidores, o outro seria MySQL. 2) Desde que o MySQL foi adquirido pela Sun, e o mecanismo InnoDB pela Oracle, acho que MySQL está ficando um cria do Frankenstein*. E para piorar as coisas a IBM está em vias de comprar a Sun.

Servidor

O servidor PostgreSQL vai rodar numa máquina virtual onde foi instalado Fedora 10. A idéia de usar uma máquina virtual (VM) é de não poluir meu sistema principal e se por algum motivo eu mudasse de idéia, seria só reinstalar o Fedora ou criar outra máquina virtual.

A instalação do servidor foi feita durante a instalação do Fedora. Na escolha dos pacotes, marquei o grupo "Postgresql". Depois da atualização do sistema, a versão do PostgreSQL é postgresql-8.3.7-1.

O primeiro passo é criar uma role para acessar o banco de dados. Uma role é como uma conta de usuário do sistema, e a palavra usuário vai ser usada nos dois contextos e espero que fique claro quando se trata do usuário do sistema ou do usuário do banco de dados, mas como o usuário do sistema já foi criado (afinal ele já esta logado), pode-se assumir que estou falando do banco de dados.

Como root mudar para postgres. Essa conta foi criada durante a instalação do servidor.

# su - postgres
$ createuser mgarcia

Eu (mgarcia) escolhi que posso criar outros usuarios e banco de dados, mas não sou super user. E também não coloquei senha.

Como teste, no servidor e usando a conta mgarcia (sistema), criar o meu banco de dados:

$ createdb mydb

Se tudo correr bem, não há nenhum mensagem, volta-se ao prompt do sistema e o banco de dados foi criado. Em seguida pode-se acessar o banco de dados:


$ psql mydb

E novamente, se tudo correu bem, aparece a mesagem e o prompt do PostgreSQL:

Welcome to psql 8.3.6 (server 8.3.7)...
(...)
mydb=>

Acesso remoto

O objetivo é acessar o servidor de outra máquina e para isso é necessário configurar o servidor para aceitar conexões dos clientes.

A configuração é feita editando-se dois arquivos:pg_hba.conf e postgresql.conf. Ambos ficam no diretório /var/lib/pgsql/data.

No arquivo pg_hba.conf deve-se adicionar uma entrada para a rede onde estão os clientes:


host all all 192.168.184.0/24 trust

E para o caso do postgresql.conf, para permitir a conexão adicionar 2 linhas:


listen_addresses = '*'
port = 5432

Com isso é possível acessar o servidor remotamente. Como última etapa, adicionar a variável de ambiente PGHOST ao arquivo de inicialização, que no caso do bash, é .bashrc.


PGHOST=fedora
export PGHOST

Isso encerra essa parte. O próximo passo é criar um banco de dados e acessa-lo usando Java.



* Frankenstein é o cientista, a criatura não tem nome e isso é uma das suas mágoas com o doutor.

Saturday 28 March 2009

Wicket

Estou aprendendo a usar o Web framework do projeto Apache chamado Wicket[1]. A razão é que quero voltar a programar. Mas apesar de parecer uma coisa simples, há várias questões que vêem junto, qual linguagem? para que?

A escolha da linguagem foi algo particularmente difícil. Acho que existe uma cesta de linguagem que são básicas, ou melhor, são as que garantem maior "empregabilidade". Elas são: Java, Python e PHP. A linguagem C (e C++) não está incluida porque é muito especifíca, e para a maioria não faz parte do dia-a-dia. Coisas tipo ASP, C# e outras crias da Microsoft eu nem considero.

A minha linguagem preferida é Python. É simples, e ao mesmo tempo poderosa, tendo todos os quesitos de uma linguagem moderna. Tenho a impressão que para a maioria dos mortais é a única linguagem necessária na vida. Inclui PHP porque me parece que é a linguagem natural para desenvolvimento Web. E está na minha lista de coisas a aprender. Mas isso é para o futuro.

No entanto, tenho gasto um tempo para (re)aprender Java. Java é mais que uma linguagem de programação, é uma plataforma de programação[2]. E se alguém está sério sobre programação enterprise level, ent&aatilde;o tem que aprender Java. Para mim, a gota d'água foi ter que usar OpenNMS[3] para o monitoramento da rede da empresa. Faz tempo que quero participar de algum projeto Open Source e achei que seria esse. Paralelamente, também tenho tido muito interesse em programar para a Internet. A escolha do Wicket foi por ter o pedigree do Projeto Apache, ser em Java, lendo a lista de recursos, me pareceu bastante interessante.

Então juntando o útil ao agradável, estou aprendendo Java e Wicket. A luta agora, e praticamente vencida, é desenvolver usando Eclipse[4] como IDE.

[1] http://wicket.apache.org/
[2] Core Java Volume 1 - Fundamentals; Cay S. Hostmann and Gary Cornell, Prenticel Hall
[3] http://www.opennms.org/index.php/Main_Page
[4] http://www.eclipse.org/

Wednesday 18 March 2009

Por do sol azulado

Faz tempo que não escrevo neste blog, mas a notícia que a IBM está para comprar a Sun é fantastica. Adoro quando posso ver um evento que, como dizem por aqui (UK), "send chock-waves".

Se isso ocorrer será o fim de uma era. A longo prazo será uma era mais pobre, mas o processo de digestão vai ser muito interessante. Afinal a Sun têm sido muito importante desde os tempos do SunOS, depois com o Solaris, e por fim com Java. Aparentemente a transição de uma empresa de hardware e software para uma baseada em free software não foi bem sucedida e isso tem diminuido o valor de mercado paulatinamente.

A pergunta que todos se fazem é como a IBM vai absorver uma empresa que tem tanta sobreposição? O que vai ser dos Solaris? do MySQL? do Java e tantos outros produtos?

Concordo com a opnião que a IBM esta se livrando de um competidor e de quebra se armando para uma enfrentar a HP e a Cisco.

A IBM sempre investiu muito em Java e não gostou da licença ter virado GLP. De posse da Sun, seria possível flexibilizar para uma licença tipo Apache. Outra pérola seria o OpenOffice, no qual se basea o Lotus Simphony, que é o office da IBM.

Para mim é o fim do Solaris. Não acredito que a IBM vá gastar tempo e dinheiro com ele. O resultado é que o futuro do Linux parece mais azul que nunca.