terça-feira, 14 de outubro de 2008

Mini-Curso "Java e Banco de Dados: JDBC, Hibernate, JPA e EJB 3"

Estive presente no mini-curso "Java e Banco de Dados: JDBC, Hibernate, JPA e EJB 3", promovido pela V.Office com o apoio do Grupo de Usuários Java de Santa Catarina (GUJavaSC), que ocorreu em 14/10/2008, no auditório da ACATE. O ministrante Henrique Oliveira apresentou de forma simples e direta a evolução do Java no acesso a banco de dados: JDBC -> Hibernate -> JPA. Por fim, demonstrou um projeto EJB 3 fazendo uso da JPA com injeção de dependência e como gerar automaticamente com o NetBeans entidades a partir de tabelas de um banco de dados e páginas JSF a partir de entidades.

A apresentação e os códigos utilizados no curso estão disponíveis no endereço: http://code.google.com/p/vofficejava/

terça-feira, 7 de outubro de 2008

VirtualBox

Em substituição ao VMware Workstation, versão 4.5.2, que vinha utilizando desde 2004, resolvi experimentar a solução de virtualização da Sun, o VirtualBox. Por enquanto, fiz apenas um teste instalando o Windows XP Professional SP 1 sem nenhuma atualização. O desafio será migrar as máquinas virtuais do VMware para o VirtualBox.

terça-feira, 19 de agosto de 2008

MyFaces Core 1.1.6

Em 16/08/2008 foi lançada a versão 1.1.6 do MyFaces Core, que implementa a especificação 1.1 do JSF. Entre as melhorias, a que mais me agradou foi a implementação do recarregamento automático dos arquivos faces-config quando modificações são detectadas. Com isso, a produtividade dos desenvolvedores que trabalham com JSF poderá aumentar significativamente. Não tinha nada mais desagradável -- na verdade, ainda tem muitas outras coisas desagradáveis no JSF -- do que ter que fazer o redeploy de uma aplicação porque esqueceu de passar algum parâmetro para um bean ou precisou mudar alguma regra de navegação.

terça-feira, 29 de julho de 2008

Firefox 3: Downgrade

Após usar o Firefox 3 por algum tempo em uma máquina com Windows XP SP 2, cansei! Ele apresenta um problema de uso excessivo de CPU. Esse problema também é relatado em http://www.ghacks.net/2008/06/09/fix-excessive-firefox-3-cpu-and-hard-disk-usage, onde parece estar relacionado aos favoritos. A solução proposta nesse blog é a de excluir todos os itens dos favoritos! Depois de procurar e não encontrar uma solução satisfatória, resolvi fazer um downgrade para a versão 2.0.0.15 do Firefox.

quarta-feira, 23 de julho de 2008

Mini-Curso EJB 3.0

O mini-curso sobre Enterprise Java Beans (EJB) 3 promovido pela V.Office com o apoio do Grupo de Usuários Java de Santa Catarina (GUJavaSC), que ocorreu em 23/07/2008, no auditório da ACATE, foi ótimo! Em uma hora e quarenta minutos o ministrante Rodrigo Cândido da Silva fez uma completa introdução ao EJB 3.0, JPA e aos serviços oferecidos por um container Java EE 5, sendo muito útil tanto para quem conhece e trabalha com EJB (em especial para quem ainda usa a versão 2.x) quanto para quem está começando. Ele conseguiu demonstrar como o EJB 3 pode ser mais produtivo em relação ao EJB 2.x, desmistificando que o EJB é complicado, burocrático e pouco produtivo.

A apresentação utilizada no curso está disponível no endereço: http://code.google.com/p/vofficejava/

terça-feira, 11 de março de 2008

NetBeans 6.1 Beta: Performance

Instalei a versão 6.1 beta do NetBeans. De fato houve uma melhora considerável na performance. A inicialização está tão rápida quanto a versão 5.5.1.

sexta-feira, 7 de março de 2008

NetBeans IDE 6.1 Beta

Foi lançada a versão 6.1 beta do NetBeans IDE. Três melhorias me chamaram a atenção:
  • Suporte a JavaScript incluindo até refatoração (estou curioso para testar esse recurso);
  • Até 40% mais rápida a inicialização (é uma melhora considerável);
  • Suporte ao Framework Spring (embora seja bem pobre).
Mas ainda continuo usando a versão 5.5.1 para produção.

Mas informações: http://www.netbeans.org/servlets/NewsItemView?newsItemID=1200

quarta-feira, 30 de janeiro de 2008

Tomcat: Serviço do Windows: Dependência

Recentemente precisei configurar o serviço do Apache Tomcat no Windows como dependente de outro serviço. Para realizar essa terefa, teoricamente, bastaria alterar o serviço através da opção --DependsOn de um programa de linha de comando que acompanha o Tomcat. Porém, na prática, não funcionou.

De acordo com o Windows service HOW-TO, o comando para adicionar um serviço como dependente do Tomcat é o seguinte:

tomca6.exe //US//Tomcat6 --DependsOn=Serviço

onde:

tomcat6.exe é o nome do programa para instalar, atualizar e remover o serviço do Tomcat no Windows;

Tomcat6 é o nome do serviço do Tomcat no Windows;

Serviço é o nome do serviço que o Tomcat dependerá.

A execução desse comando acontece normalmente, mas a dependência não é adicionada. A solução que encontrei para esse problema foi realizar essa configuração diretamente no registro do Windows, em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl\Services\Tomcat6, criando um novo valor de seqüência múltipla chamado DependOnService com o valor igual ao nome do serviço que o Tomcat será dependente. Observação: para ter efeito, é necessário reiniciar o Windows.

segunda-feira, 21 de janeiro de 2008

TIM: Recarga com Cartão de Crédito

A TIM oferece o serviço de recarga com cartão de crédito. Com esse serviço é possível recarregar o celular diretamente do aparelho discando *244. Antes de realizar a primeira recarga é necessário fazer o cadastro do cartão ao custo de R$ 5,00, que são convertidos em 5 minutos de ligações locais para telefones fixo ou TIM. O cadastro é feito de forma eletrônica, sem a necessidade de falar com algum atendente, bastando apenas informar pelo teclado do celular o número do cartão de crédito, CPF, data de nascimento e uma senha para as futuras recargas.

Fiz o cadastro e uma recarga. Achei o serviço muito prático. Agora, quando ficar sem crédito, posso fazer uma recarga de qualquer lugar, a partir do próprio aparelho. A "desvantagem" desse serviço é que o gasto pode aumentar devido a essa praticidade.

sexta-feira, 18 de janeiro de 2008

IMAP: Gmail & Outlook Express

Embora o Outlook Express seja um cliente de e-mail muito criticado por alguns, tanto pelo seu histórico de vulnerabilidades e/ou quanto pela falta de recursos, é o meu companheiro preferido há anos, desde a época onde era chamado de Microsoft Internet Mail. Simplesmente porque sempre atendeu perfeitamente as minhas necessidades: enviar, receber, guardar, organizar e pesquisar e-mails.

O e-mail do meu domínio santini.eti.br é servido pelo Gmail através do Google Apps. Hoje resolvi experimentar a ativação do IMAP. Com o IMAP, em vez do POP, é possível manter as mensagens sincronizadas em vários clientes de e-mail. Agora tenho acesso às minhas mensagens tanto no Gmail quanto no Outlook Express.

Para ativar o IMAP para a sua conta, acesse Configurações -> Encaminhamento e POP/IMAP no Gmail.

quinta-feira, 17 de janeiro de 2008

TIM: Nova Forma de Consultar o Saldo

A TIM implementou uma nova forma de consulta de saldo para clientes pré-pago. Agora basta ligar para *222# para receber no visor do aparelho o saldo e a validade da recarga, bem como o valor e a validade dos bônus. Achei essa nova forma muito mais prática e rápida.

sábado, 12 de janeiro de 2008

Domínio Personalizado no Blogger

O Blogger permite a configuração de um domínio ou subdomínio para o seu blog. Com essa possibilidade, criei um subdomínio chamado blog no meu domínio santini.eti.br e configurei o endereço do meu blog para http://blog.santini.eti.br (o antigo endereço continua funcionando também). Veja aqui as instruções de como usar um domínio personalizado para o seu blog.

quarta-feira, 9 de janeiro de 2008

SQL Server: como adicionar a propriedade identity a uma coluna já existente

O SQL Server não oferece um meio de adicionar a propriedade identity a uma coluna já existente. Para resolver esse problema, é necessário recriar a tabela. A seguir mostro um exemplo de como realizar essa tarefa sem perder os dados já existentes.

Metadados da tabela:

create table cliente (
id integer not null,
nome varchar(100) not null,
endereco varchar(100),
constraint cliente_pk primary key (id)
)

1. Realize uma cópia da tabela:

select * into cliente_tmp from cliente

2. Apague a tabela:

drop table cliente

3. Recrie a tabela com a propriedade identity definida:

create table cliente (
id integer not null identity,
nome varchar(100) not null,
endereco varchar(100),
constraint cliente_pk primary key (id)
)

4. Copie de volta os dados da tabela:

set identity_insert cliente on

go

insert into cliente (id, nome, endereco)
select * from cliente_tmp


go

set identity_insert cliente off

go

5. Por fim, apague a cópia da tabela:

drop table cliente_tmp