quinta-feira, 28 de agosto de 2008

Gerando um certificado SSL

Este tutorial demonstra como criar um certificado SSL (certificado de conexão segura) usando a ferramenta OpenSSL e como configurará-lo no Tomcat.

Requerido:
- Tomcat instalado
- OpenSSL instalado
(ao fim da página deixo os links)

Para gerar o certificado e configurar o Tomcat para rodar suas páginas através do protocolo https, siga as etapas abaixo (clique nas imagens para ver detalhes):

1 - Abra o prompt de comando e vá até a pasta bin que fica dentro do diretório de instalação do OpenSSL.

2 - Digite:

openssl req –config openssl.cnf –new –out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.csr


3 - Digite uma senha de sua preferência e logo depois a confirme.

4 - Logo depois será requerida uma série de informações que serão inseridas no seu certificado. Veja a seguir um exemplo para essas entradas (estarão em inglês):

-País: BR
-Estado: Minas Gerais
-Cidade: Pouso Alegre
-Nome da Organização: Luis LTDA
-Nome da Unidade Organizacional: Software
-Common Name: l-u-i-s.blogspot.com (ele pede outra informação, mas aqui costuma-se colocar o domínio)
-Email: luis@reborn.com
-Challenge password: pass
-Nome opcional da empresa: Luis&Luis

5 - Digite:

openssl rsa -in privkey.pem -out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key

Ao pedir a senha, informe a senha que você criou no passo 3.

6 - Digite:

openssl x509 -in <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.csr -out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.crt -req -signkey <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key -days 730

Observe as informações apresentadas na tela.

Obs: 730 é a validade do certificado (730 dias).

7 - Digite:

openssl pkcs12 -export -in <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.crt -inkey <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key -out <pasta_onde_sera_colocado_o_certificado_invertendo_barra>/nomeCertificado.p12 -name seu.dominio.com –CAfile <pasta_onde_sera_colocado_o_certificado_invertendo_barra>/nomeCertificado.crt -caname seu.dominio.com –chain

Depois entre com a senha e a confirme.


Obs: Observe bem o espaçamento e as barras (em alguns pontos usa-se contra-barra em outros usa-se barra normal).

Pronto! O certificado foi gerado e está dentro da pasta que você definiu.

8 - Agora vamos configurar o Tomcat. Vá até TOMCAT_HOME\conf\server.xml e remova a tag do conector da porta 8080, remova todo o conteúdo do bloco (a tag segue abaixo, no arquivo ela está entre <>):

Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="true" redirectPort="8443"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"/

e adicione no mesmo local a seguinte a seguinte tag (
o trecho abaixo deve ser colocado entre <>):

Connector port="443" maxhttpheader maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" disableuploadtimeout="true" acceptcount="100" keystorefile="C:\pasta\nomeCertificado.p12" keystoretype="PKCS12" keystorepass="suaSenha" debug="0" scheme="https" secure="true" sslenabled="true" clientauth="false" sslprotocol="TLS"/

Não se esqueça de adicionar as informações de seu certificado dentro desta tag.

Pronto, o Tomcat está configurado para rodar pelo https.


9
- Digite o novo endereço de sua aplicação, lembrando que agora ele foi modificado. Por exemplo, se antes você acessava em http://localhost:8080/SuaApp , agora você acessa em https://localhost:443/SuaApp.

Agora ao acessar sua aplicação irá aparecer uma mensagem informando que você está iniciando uma conexão segura.



10
- Para instalar o certificado, ao aparecer a mensagem clique em View Certificate, depois em install certificate.


Pronto, o certificado foi criado, configurado no Tomcat e instalado.

Links:
site Tomcat
site OpenSSL

quarta-feira, 27 de agosto de 2008

Java - Diferença em dias entre duas datas

O método abaixo recebe duas datas no formato Date (java.util ou java.sql) e retorna a diferença em dias entre essas duas datas:


private long
getDateDifference(Date date1, Date date2) {
return ((date1.getTime()-date2.getTime())/86400000);
}

terça-feira, 19 de agosto de 2008

Configurando o autocompletar no eclipse

Estava utilizando o eclipse e de repente percebi que o autocompletar tinha perdido a funcionalidade. Procurei na internet e nada de achar uma solução. Então um amigo conseguiu solucionar o problema e resolvi postar a solução aqui.

1 - Para configurar o autocompletar vá em:
Window - Preferences

2 - Nessa janela selecione a opção:
Java - Editor - Advanced

3 - Marque os quatro primeiros checkboxes das duas áreas que aparecerão na tela (parte superior e inferior) e clique em OK.


A imagem acima mostra a área de configuração. Clique nela para ver detalhes.

Pronto, o autocompletar está funcionando!

segunda-feira, 11 de agosto de 2008

Compilando C no NetBeans 6.1 (usando CygWin)

Para compilar programas em Linguagem C no netbeans 6.1 é necessário configurar o compilador CygWin. Para isto, siga as seguintes etapas:

1. Faça o download do Cygwin setup.exe

2. Execute o programa setup.exe . Aceite as configurações padrão. Na wizard "Select Your Internet Connection", selecione a melhor opção e clique em Next.

3. Escolha o site para download que melhor te servir e clique em Next.

4. Na parte de selecionar pacotes, clique em + do lado do pacote Devel.

5. Selecione os pacotes gcc-core, gcc-g++, gdb e make clicando em Skip. Faça o download.

6. Agora adicione o caminho do Cygwin (padrão C:\cygwin) ao seu classpath (variável ambiente do sistema). Entre no prompt e digite gcc para testar se o compilador está rodando.

7. Ao criar seu projeto C, certifique-se de que o netbeans está usando o Cygwin. Para modificar esta configuração, dê um clique direito sobre seu projeto --> Set Configuration -->Manage Configurations. Lá você define o diretório do Cygwin.

Mudando o idioma do netbeans para inglês

Para mudar o idioma do seu netbeans para inglês siga os seguintes passos:

1. Acessar o local onde está instalado o Netbeans. (Padrão--> C:\Arquivos de programas\NetBeans 6.1)

2. Abrir a pasta etc, localizada dentro do diretório acima.

3. Adicionar ao fim do documento netbeans.conf a seguinte linha:

netbeans_default_options="-J-Duser.language=en -J-Duser.country=US"

Pronto, seu netbeans está configurado com o idioma inglês.

Programa para controle de maratonas de programação


O PC2 (Programming Contest Control System) é um sistema desenvolvido pela California State University, Sacramento (CSUS) para suporte às maratonas e testes de programação nas escolas.
O sistema suporta Java, Pascal e Linguagem C. O administrador do sistema pode ver quais alunos realizaram a tarefa e qual o tempo gasto por cada um, além de outros recursos.

página do programa




segunda-feira, 4 de agosto de 2008

Tutorial - Web Services Com Java

Bem pessoal, quando fui tentar estudar web services por conta própria, de cara, encontrei um forum que me desanimou, dizendo que aprender web service sozinho era uma tarefa meio impossível. Estudei um tutorial com axis (framework da apache), e realmente vi que com aquela ferramenta ir ser difícil, pois para fazer um web service simples de cálculos matemáticos, levei horas.
Mas eu continuei procurando conteúdos e tutoriais, não podia ser tão difícil assim, afinal eu só precisava de um web service para uma consulta simples a um banco de dados. Então pude ver que a coisa era extremamente simples, encontrei o que eu queria.
O jdk 6 já vem com uma api para web services, chamada JAX-WS. Usei essa api no eclipse, e não foi necessário nem servidor de aplicação para testar o web service. Utilizá-la no netbeans é ainda mais simples, você cria seu web service no "clica e arrasta".
Ainda no netbeans, você pode criar web services, sem ficar perdendo muito tempo em arquivos de configuração e comandos via prompt, utilizando o RESTful, que é uma tecnologia que não usa o SOAP.

A seguir coloquei as etapas resumidas para criação de web services usando JAX-WS:

Requerido:
- JDK 6 instalado.

Etapas:
1 – Com o java 6, para criar um web service deve-se usar as anotações @WebService e @WebMethod na sua classe, pois o jdk 6 já vem com a tecnologia jax-ws implementada. Crie a seguinte classe exemplo:

@WebService
public class HelloWeb {

@WebMethod
public String hello(String nome) {
return "Hello " + nome;
}
}

2 – Você deve utilizar a ferramente apt (annotation processing tool) que encontra-se na pasta bin do jdk para gerar as classes do web service. Para isso, dentro do diretório src do seu projeto, use a seguinte linha de comando:

apt pacote\HelloWeb.java

Gera um pacote pacote.javaws com duas classes, uma classe Hello.java para os parâmetros do WebService (no nosso caso String nome do método hello) e outra HelloResponse.java que representa o retorno.

3 - Para publicar o serviço/endpoint e iniciá-lo, use a classe seguinte:

public class PublicaService {

public static void main(String[] args){
HelloWeb service = new HelloWeb();
Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", service);
}
}

Pronto, o WebService está rodando sem servidor de aplicação nem web container. Tudo isso com javaSE 6 jdk. Para acessar a wsdl dele, usa-se o URL:

http://localhost:8080/hello?wsdl

4 - Para criar o cliente do serviço, o javaSE 6 já vem com as ferramentas necessárias. Precisamos usar o wsimport (na pasta bin do jdk) para gerar as classes do cliente. Com o serviço rodando, fazemos na linha de comando (dentro da pasta src do projeto):

wsimport -keep -p pacote.cliente http://localhost:8080/hello?wsdl

A opção keep não apaga os arquivos fontes e p gera as classes dentro do pacote especificado.

5 - Para chamar o serviço pelas classes geradas, escreva a seguinte classe:

public class TesteServico {

public static void main(String[] args) {
pacote.cliente.HelloWeb port = new HelloWebService().getHelloWebPort();
System.out.println(port.hello("Luis"));
}
}

Repare que a classe HelloWeb que foi gerada pelo wsimport é uma interface, não confundir com o serviço HelloWeb que é uma implementação.

Pronto! Seu web service está funcionando.

Abaixo deixo links de outros tutoriais:

Web Services RESTful no netbeans
Tutorial Axis 1.3 (GUJ)

domingo, 3 de agosto de 2008

Piano Eletrônico Free

Pessoal, este vale a pena conferir. Excelente para quem está começando na música. É o piano eletrônico freeware mais completo que já encontrei até hoje. Permite que o usuário toque notas musicais, acordes e sons de bateria pelo teclado do computador.

Mesmo não sendo um programa para fins profissionais, o Piano Eletrônico 2.5 se destaca por não exigir nenhum conhecimento da tecnologia MIDI, ocupar pouco espaço em disco, e ser muito simples de instalar e usar.

Deixo abaixo os links para download:

site do programa
site para download

sexta-feira, 1 de agosto de 2008

Pastebin - Poste seus códigos na internet

O pastebin - collaborative debugging tool - é um site muito útil, onde você pode postar seu código de programação e compartilhá-lo pela internet, o código ficará disposto de acordo com a sintaxe da linguagem usada, com cores identificando as palavras reservadas da linguagem. Despois de postar, você vai obter uma url onde ele ficará acessível.

Maiores informações no próprio site:

http://pastebin.com/

Developers Webdays 2008

Dias 22 e 23 de Agosto em São Paulo, com 100% de aproveitamento!

* Conheça as principais novidades das tecnologias Java e .NET
* Palestras sobre Boas práticas e Arquitetura
* Certificado de Participação
* 100% de aproveitamento - Apesar das palestras acontecerem simultaneamente, não haverá perda de conteúdo. No dia do evento você receberá um DVD com o conteúdo completo de todas as palestras em formato de vídeo-aula!

Principais Temas:

- Java: Ajax, Java FX, Grails, Android, Groovy, Jboss Seam, JSF, RIA (Flex, etc), Best practices em java;
- .NET: Linq, WPF, Silverlight 2.0, ASP.NET 3.5, Ajax, ASP.NET MVC, Visual Studio 2008, Novidades C# 3.0 e VB.NET 9.0, Best practices em .NET;
- Extras: SOA, WEB 2.0, WEB 3.0, Arquitetura Web, Scrum, Microsoft XNA, Ruby on Rails, Domain Driven Design, Mashups.

São 46 horas de conteúdo, apenas 300 lugares. Maiores informações:
www.devmedia.com.br/webdays2008
evento@devmedia.com.br