Tortoise SVN + Google Code

Read More →

Galaxy Ace





Armado com um processador de 800 MHz, o Galaxy Ace está distante dos smartphones top de linha, mas figura como um verdadeiro ás em sua vizinhança, entre os aparelhos de entrada. O principal atrativo do aparelho é a relação entre custo e benefício, já que por 800 reais ele traz recursos de sobra como câmera de qualidade, tela de 3,5 polegadas, DLNA com o Samsung All-Share e Android 2.2 (Froyo). Além do poder de fogo, o aparelho tem um visual sóbrio, mas ainda assim atraente, e pesa 113 gramas. De cara o Galaxy Ace apresenta dois pontos fracos: pouca memória interna e uma gravação de vídeo com qualidade desprezível.

Com cantos arredondados e corpo construído totalmente em plástico, os 5,9 por 11,1 por 1,2 centímetros do Ace conferem uma boa empunhadura e conforto para carregá-lo no bolso. A tampa traseira tem uma textura áspera interessante, pois além da aderência, torna o manuseio agradável. O Ace não é um aparelho grande. Ligeiramente menor, e tão fino quanto o iPhone 4, ele só perde para modelos mais recentes, como Xperia Arc ou mesmo o Galaxy S II, seu irmão topo de linha.

Read More →

Criando um cadastro de usuário em Java

O objetivo deste artigo é desenvolver uma aplicação em JSE (Java Standard Edition) de inserção de dados utilizando alguns padrões de projeto. Para isto, utilizaremos a IDE NetBeans (neste exemplo utilizo a versão 6.5.1) e o banco de dados MySQL Server (utilizo versão 5.5). É claro que o leitor pode usar a versão mais adaptável ao seu conhecimento.



Subentende-se que para execução deste artigo, o leitor já tenha algum conhecimento de conceitos como Programação Orientada a Objetos e Design Patterns (Padrões de Projeto como FACTORY, DAO e MVC).

OBS.: coloquei propositalmente imagens em tamanhos ampliados para que o leitor possa compreender melhor e executar o projeto sem dificuldades.

Considerações sobre a plataforma Java

Para utilizarmos o Java faz-se necessário uma máquina virtual chamada JVM (responsável pelo uso multiplataforma do Java, isto é, pelo seu uso em qualquer sistema operacional), o JRE (ambiente de execução Java formado pela JVM e por bibliotecas) e o JDK (kit completo dedesenvolvimento Java, composto por compilador, JVM e JRE.). Logo, será necessário a instalação de apenas uma ferramenta:

JDK – Java Development Kit;


Link para download:

Escolha sua plataforma e baixe. JDK


Resumo

Para criarmos nosso exemplo, precisaremos:
1) Banco de dados MySQL Server;
Link para download: MySQL
Clique em ">> No thanks, just take me to the downloads!".

2) IDE NetBeans.

Além das ferramentas, vamos enumerar 10 passos:
1) Banco de Dados;
2) O Projeto;
3) Factory;
4) Modelo;
5) DAO;
6) GUI;
7) Evento SAIR;
8) Evento LIMPAR;
9) Evento CADASTRAR;
10) Consulta através do console do MySQL Server.



Mão na massa:

Passo 1: Banco de Dados


Abra o console do MySQL Server em Iniciar > Todos os programas > Mysql > MySQL Server 5.5 > MySQL Server 5.5 Command Line Client e digite os seguintes comandos:
create database projetojava;
use projetojava;
CREATE TABLE usuario (
id BIGINT(10) AUTO_INCREMENT,
nome VARCHAR(255),
cpf VARCHAR(255),
email VARCHAR(255),
telefone VARCHAR(255),
PRIMARY KEY (id)
);


Ou seja, teremos a tabela usuario com 5 atributos (id, nome, CPF, email, telefone).

Agora, vamos abrir o NetBeans em Iniciar > Todos os programas > NetBeans > NetBeans IDE > NetBeans IDE 6.5.1 e começar a pôr a mão na massa no desenvolvimento da aplicação.

OBS.: durante todo o desenvolvimento da aplicação seguirão imagens para facilitar o aprendizado.


Passo 2: O Projeto

Arquivo > Novo projeto;
http://www.oficinadanet.com.br//imagens/coluna/3389/td_1.png


Na aba Novo projeto, clique em Java e em Aplicativo Java. Clique em próximo.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_2.png


Na aba Novo aplicativo Java, em “Nome do projeto” digite MinhaAplicacao. Desmarque a opção “Criar classe principal”. Clique em finalizar.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_3.png


Agora vamos criar os pacotes ou packages. Clique com o botão direito em “Pacotes de códigos-fonte” e com o botão esquerdo do mouse escolha Novo > Pacote Java...

http://www.oficinadanet.com.br//imagens/coluna/3389/td_4.png


Na aba Novo Pacote Java digite “factory” para Nome do pacote.
Clique em Finalizar.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_5.png


Repita o processo de criação de pacote, criando os seguintes pacotes, além do pacote factory:modelodaogui. Assim ficará a visão geral do projeto (no canto esquerdo do NetBeans):

http://www.oficinadanet.com.br//imagens/coluna/3389/td_6.png



Passo 3: Factory:

Factory significa “fábrica” e ConnectionFactory significa fábrica de conexões. Factory será o nome do pacote e ConnectionFactory o nome da classe que fará a interface com o driver JDBC de conexão a qualquer banco que desejar. Por isso o nome “fábrica”, pois o JDBC permite a conexão a qualquer banco: MySQL, Postgree, Oracle, SQL Server, etc., somente alterando a linha do método “getConnection”. Vamos começar criando a classe ConnectionFactory no pacote factory. Vá com o botão direito até factory e clique com o botão esquerdo em Novo > Classe Java.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_7.png


Na aba Novo Classe Java em Nome da Classe escolha o nome ConnectionFactory. Clique em Finalizar.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_8.png


O script abaixo representa a classe de conexão ConnectionFactory. Copie e cole na classe ConnectionFactory:

// situa em qual package ou “pacote” está a classe
package factory;

// faz as importações de classes necessárias para o funcionamento do programa
import java.sql.Connection; // conexão SQL para Java
import java.sql.DriverManager; // driver de conexão SQL para Java
import java.sql.SQLException; // classe para tratamento de exceções

public class ConnectionFactory {
    public Connection getConnection() {
        try {
            return DriverManager.getConnection("jdbc:mysql://localhost/projetojava","seu-nome-de-usuario","sua-senha");
        }
        catch(SQLException excecao) {
            throw new RuntimeException(excecao);
        }
    }
}


Salve a alteração (CTRL+S).
OBS.: não esqueça de salvar todas as alterações nos códigos ao decorrer do tutorial.
OBS 2: altere "seu-nome-de-usuario" e "sua-senha" para as configurações do seu Banco de Dados.

Vamos criar uma classe para testar a conectividade ao MySQL. Pode ser dentro do pacote factory mesmo...
Coloquemos o nome TestaConexao:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_10.png


Clique em Finalizar.

Script da classe TestaConexao:

package factory;

import java.sql.Connection;
import java.sql.SQLException;

public class TestaConexao {
    public static void main(String[] args) throws SQLException {
        Connection connection = new ConnectionFactory().getConnection();
        System.out.println("Conexão aberta!");
        connection.close();
    }
}


Para executar qualquer aplicativo no NetBeans teclamos SHIFT+F6. Faça-o. Perceba que uma mensagem de erro é exibida no console. Esta mensagem de erro significa ausência do driver JDBC. Precisamos baixá-lo para assim fazermos a conexão.
Endereço para download: http://dev.mysql.com/downloads/mirror.php?id=404191#mirrors

Se o arquivo vier compactado, descompacte-o e escolha o diretório de sua preferência. 

Depois de baixar o driver JDBC, vá em: Bibliotecas > Adicionar JAR/pasta...

http://www.oficinadanet.com.br//imagens/coluna/3389/td_11.png


Escolha o diretório onde instalou o driver JDBC e clique em Open. Execute o projeto. Agora sim funcionou!

Se a mensagem que apareceu no console foi parecida com:

run:
Conexão aberta!
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
,

então sua conexão foi estabelecida!

OBS 3: se mesmo assim não funcionar, especifique a porta do servidor ao lado do localhost.
Exemplo: localhost:3307 


Passo 4: Modelo:

Agora, criemos a classe Usuario, dentro do pacote modelo: modelo > Novo > Classe Java > Usuario > Finalizar.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_12.png

http://www.oficinadanet.com.br//imagens/coluna/3389/td_13.png


Crie as variáveis id (Long), nome, CPF, email, telefone (todas string) e os métodos getters e setters. Assim ficará o script da classe:

package modelo;

public class Usuario {
    Long id;
    String nome;
    String cpf;
    String email;
    String telefone;

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}



Passo 5: DAO:

Crie no pacote DAO a classe UsuarioDAO: dao > Novo > Classe Java > UsuarioDAO > Finalizar.
Neste pacote ficam as classes que são responsáveis pelo CRUD (Create, Retrieve, Update, Delete – ou – Criar, Consultar, Alterar, Deletar), isto é, dados de persistência. Mas no nosso caso não criamos mais que uma tabela na Base de Dados, conseqüentemente, nenhum relacionamento. Além disso, neste exemplo, criaremos o Cadastro de Usuário, isto é, só vamos usar o Create do CRUD. Numa próxima oportunidade podemos aprender os outros métodos (alterar, consultar e deletar). Em Create, criaremos o método adiciona. Passaremos o próprio objeto "usuario" como parâmetro da função:

adiciona (Usuario usuario).


Usuario com letra maiúscula representa a classe e com letra minúscula representa o Objeto. Como só vamos representar o método adiciona, não há necessidade de inserir a variável id, pois a mesma é auto-incremento, ou seja, no momento da inserção, este campo será preenchido automaticamente na tabela usuário do Banco de Dados. Se usássemos o método altera ou o método remove, aí sim precisaríamos declarar a variável id. Na classe Usuario do pacote modelo criamos o id pois o modelo do negócio precisa abranger o todo, até mesmo para futuras consultas.

Eis o script abaixo da classe UsuarioDAO:

package dao;

import factory.ConnectionFactory;
import modelo.Usuario;
import java.sql.*;
import java.sql.PreparedStatement;

public class UsuarioDAO {

                private Connection connection;

    Long id;
    String nome;
    String cpf;
    String email;
    String telefone;

                public UsuarioDAO(){
                               this.connection = new ConnectionFactory().getConnection();
                }

                public void adiciona(Usuario usuario){

                               String sql = "INSERT INTO usuario(nome,cpf,email,telefone) VALUES(?,?,?,?)";

                               try {
                                               PreparedStatement stmt = connection.prepareStatement(sql);

                                               stmt.setString(1, usuario.getNome());
                                               stmt.setString(2, usuario.getCpf());
            stmt.setString(3, usuario.getEmail());
            stmt.setString(4, usuario.getTelefone());

            stmt.execute();
                                               stmt.close();

                               } catch (SQLException u) {
                                               throw new RuntimeException(u);
        }
    }
  
}



Passo 6: GUI (Graphical User Interface ou Interface Gráfica de Usuário)

Nossa aplicação back-end está toda finalizada. Precisamos aprontar o front-end, isto é, a interface de usuário, a classe que será responsável pela interação com o usuário, ou seja, o formulário de entrada.

Vamos criar o formulário que será preenchido pelo usuário: gui > Novo > Formulario JFrame > UsuarioGUI > Finalizar. A seguinte tela aparecerá:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_16.png


Para criarmos os elementos do formulário é necessário o arrastar e soltar do mouse. A esse processo, vou criar a sigla ASM para facilitar nosso entendimento. Arrasta-se os componentes SWING para o formulário. Portanto, quando eu chamar o nome do componente e colocar ao lado a sigla ASM, subentende-se que é para arrastar componentes da paleta e soltá-los no Formulário.

À direita, na paleta de componentes, em Controles Swing, clique em Rótulo ASM.
Escreva Cadastro de Usuário. Com o botão direito do mouse em cima do rótulo clique emPropriedades e em "font" escolha tamanho 18 e clique em OK. Veja:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_17.png


Agora na paleta de componentes, em Contêiners SWING, escolha Painel ASM. Clique com o botão direito do mouse e escolha Propriedades. Clique em border > Borda de título. Intitule “Cadastrar novo usuário”. Clique em OK e depois fechar. Veja:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_25.png


Escreva mais 4 rótulos dentro do painel: NomeCPFEmailTelefone.
Agora escolha na paleta de componentes 4 campos de textos representando de forma respectiva cada um dos rótulos mencionados. Veja:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_18.png


Finalmente vamos criar os botões. Na aba Paleta > Controles SWING, vá até Botão ASM. Crie dois botões, conforme mostra a imagem abaixo:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_19.png


Escreva jButton1 como “Cadastrar” e jButton2 como “Limpar”. Veja:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_20.png


Agora, fora do painel, crie o botão SAIR. Faça o mesmo processo: sobrescreva jButton3 para SAIR.

http://www.oficinadanet.com.br//imagens/coluna/3389/td_21.png


Clicando em ALT+F6 temos uma visão geral do projeto em execução:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_22-visaogeraldoprojeto.png



Passo 7: Evento SAIR

Clique duas vezes no botão ”SAIR” para criarmos o evento. Na aba Código-Fonte, no método referente a jButton3, isto é, ao botão SAIR, digite:

System.exit(0);


Este comando fecha a janela em execução.
Dê um ALT+F6 e agora clique no botão SAIR. A janela será fechada.


Passo 8: Evento LIMPAR

Agora, na aba Projeto, dê dois cliques em Limpar.
No método jButton2ActionPerformed, na aba Código-fonte, escreva os seguintes scripts:

jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");


Estes scripts são responsáveis por limpar ou apagar qualquer string escrita pelo usuário em cada um dos 4 campos de texto do formulário.


Passo 9: Evento CADASTRAR

Precisamos criar o principal evento que é literalmente cadastrar o usuário. Para isso, vamos clicar duas vezes no botão “Cadastrar” e, na aba Código-fonte, no evento jButton1ActionPerformed ficará assim o código:

// instanciando a classe Usuario do pacote modelo e criando seu objeto usuarios
Usuario usuarios = new Usuario();

        usuarios.setNome(jTextField1.getText());
        usuarios.setCpf(jTextField2.getText());
        usuarios.setEmail(jTextField3.getText());
        usuarios.setTelefone(jTextField4.getText());

// fazendo a validação dos dados
        if ((jTextField1.getText().isEmpty()) || (jTextField2.getText().isEmpty()) || (jTextField3.getText().isEmpty()) || (jTextField4.getText().isEmpty())) {
            JOptionPane.showMessageDialog(null, "Os campos não podem retornar vazios");
        }
        else {
// instanciando a classe UsuarioDAO do pacote dao e criando seu objeto dao
            UsuarioDAO dao = new UsuarioDAO();
            dao.adiciona(usuarios);
            JOptionPane.showMessageDialog(null, "Usuário "+jTextField1.getText()+" inserido com sucesso! ");
        }
// apaga os dados preenchidos nos campos de texto
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");


Certamente algumas mensagens de erro aparecerão. Isto porque temos que importar no início do código as classes Usuario (pacote modelo) e UsuarioDAO (pacote dao). Além destas, precisamos importar a classe JOptionPane, responsável pelas janelas de validação, aquelas que aparecem dizendo se o usuário foi ou não cadastrado, se os campos estão vazios, etc.

Coloque estas linhas no início do código, abaixo de “package gui”, na aba Código-fonte:

import modelo.Usuario;
import dao.UsuarioDAO;
import javax.swing.JOptionPane;


Agora sim não aparecerá erro nenhum e o cadastro poderá ser feito.
Faça um teste! Veja:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_23.png


Passo 10: Consulta através do Console do MySQL Server

Vá até o console do MySQL Server.
Digite:

use projetojava;
select * from usuario;


A seguinte tela aparecerá:

http://www.oficinadanet.com.br//imagens/coluna/3389/td_24.png



Pronto. Se todos os passos foram seguidos corretamente, sua aplicação foi executada com sucesso. O Java não é uma tecnologia fácil de se aprender logo de início, mas depois que você entende os principais conceitos de orientação a objetos e as hierarquias de classes, o entendimento fica bem mais elucidado. Espero mesmo que este artigo possa ajudar seus projetos na empresa que você trabalha, na sua faculdade ou mesmo nos seus estudos.

Numa próxima oportunidade podemos tratar todas as etapas do CRUD: inserção de dados (que vimos hoje neste artigo), alteração de dados, exclusão de dados e consulta de dados em um datagrid.

Um abraço a todos, Bons estudos e até a próxima!

Read More →

Por que devo estudar acessibilidade digital?


Ao falar em acessibilidade, logo nos vem à cabeça a palavra acesso e, realmente, acesso tem tudo a ver com acessibilidade. Mas o que se pode entender por acessibilidade? Quais são suas primícias? E seus benefícios? Por que profissionais de TI devem estudá-la? É exatamente para respostas a essas perguntas que esse texto é direcionado.

Primeiramente, é importante dizer que acessibilidade está relacionada com fornecer condição para utilização, com segurança e autonomia (total ou assistida) dos espaços, mobiliários e equipamentos urbanos, das edificações, dos serviços de transporte, dos dispositivos, sistemas e meios de comunicação e informação. 
De forma análoga, acessibilidade digital remete à acessibilidade no ambiente virtual, sendo que "acessibilidade na web significa que qualquer pessoa, utilizando qualquer tipo de tecnologia de navegação - navegadores gráficos, textuais, especiais para sistemas de computação móvel, etc. - deve ser capaz de visitar e interagir com qualquer site, compreendendo inteiramente as informações nele apresentadas" (DIAS, Cláudia. Usabilidade na Web - criando portais mais acessíveis. RJ: Alta Books, 2003). Em sua concepção inicial, a acessibilidade estava ligada a indivíduos portadores de deficiência, entretanto sua amplitude tem se estendido a qualquer barreira que possa inviabilizar o acesso a qualquer pessoa. Diante disso, vejamos agora alguns dos motivos que impelem o estudo da acessibilidade por parte dos profissionais de TI.

Grande número de pessoas com deficiência

Segundo o IBGE (Instituto Brasileiro de Geografia e Estatística), por meio do censo realizado em 2000, a população brasileira possui 14,5% de portadores de deficiência. Destes, 48,1% (que constituem 16,6 milhões de pessoas) são deficientes visuais (150 mil se declaram cegos), 27,1% com deficiência física, 16,6% com deficiência mental e 8,2% com deficiência auditiva.

Maior visibilidade no Google

É de conhecimento que diversos buscadores, dentre eles o Google, levam em consideração a organização do conteúdo das páginas web. Por exemplo, se uma página apresenta imagens sem texto alternativos (tag alt), conteúdo não estruturado de acordo com o grau de importância (tags title, p1,p2,p3..), frames sem página alternativa (através do elemento "noframe") e etc, essa página tende a ser classificada com menor relevância em comparação a outra que segue os padrões de acessibilidade. Ou seja, uma boa acessibilidade também contribui para uma boa visibilidade em sistemas de busca.

Valorização da calda longa

Não é intuito deste texto o aprofundamento no estudo da teoria da Calda Longa mas, de forma simplificada, podemos dizer que a Calda Longa remete à força das minorias. Considerando que um pequeno grupo insolado tende a não ser muito relevante em relação ao todo. Entretanto, um conjunto de pequenos grupos possui uma relevância significativa. Esse conceito ganhou força com a expansão da Internet e é baseado nisto que muitas lojas virtuais estão se sobressaindo (a Amazon.com é uma prova disso), pois também disponibilizam produtos dedicados as minorias. Mas o que quero dizer com isto? Quero dizer que se você atender somente a população de deficientes auditivos, talvez seu retorno não seja expressivo, mas atendendo a população de deficientes auditivos, visuais, físicos... a probabilidade de retorno expressivo pode crescer consideravelmente.
(Imagem retirada do artigo "O que é Web 2.0?" acessado aqui

Conformidade com o decreto de lei 5296

O Decreto-lei 2596, de 2 de dezembro de 2004, também conhecido como Lei de Acessibilidade, tem por finalidade regulamentar o atendimento a indivíduos com deficiência em diversos aspectos, dentre estes o de comunicação e informação. Sendo que portais e sites da administração pública são obrigados a se tornarem acessíveis para o uso das pessoas portadoras de deficiência visual. Logo, se você trabalha em projetos web para o governo, estes projetos devem ser acessíveis. 

Proteção contra processos

O primeiro caso oficial de processo motivado por acessibilidade digital foi direcionado ao Comitê de Organização dos Jogos Olímpicos de Sydney. Na ocasião, Bruce Lindsay Maguire processou o comitê pela falta de acessibilidade em seu site. O fato é que atualmente vários países possuem leis específicas que tratam a questão da acessibilidade: na Inglaterra existe a DDA; nos EUA, a ADA e a Seção 508 e na Austrália, a DDA. Assim sendo, seguir os padrões de acessibilidade reduz significavelmente o risco de eventuais processos.

Conclusão

A acessibilidade digital tem ganhado força nos últimos anos e tudo leva a crer que este é um caminho sem volta. Particularmente, acredito que de forma semelhante ao crescimento das políticas de sustentabilidade, salvo as devidas proporções, a acessibilidade chegará a um patamar de relevância significante. De modo que é impraticável ignorar as consequências e implicações que tão assunto sugere.

Read More →

E-Commerce - Parte 1


   
O comércio eletrônico ou mais popurlarmente conhecido como E-commerce, pode ser entendido como a realização de transações envolvendo a troca de bens ou serviços entre duas ou mais partes utilizando meios eletrônicos.
    A idéia de comércio eletrônico não é nova, a técnica de vender produtos utilizando novas mídias e meios de comunicação já vem desde os serviços de tele-vendas ou vendas pelo correio, através de catálogos. A internet é mais um veículo que possibilita a comercialização de produtos de forma a atingir novos consumidores.
   Há uma grande expectativa de que cresça a cada dia uma grande parcela de pessoas no Brasil conectadas a internet, realizando suas compras on-line. Automaticamente quanto mais realizarem compras, mais confiança terá neste tipo de mercado, principalmente para cada vez mais adquirirem produtos de valores mais altos. 
Abaixo um vídeo bem interessante sobre o assunto.


Read More →

 

Copyright © 2011 Fabiolafas | Powered by Blogger | Template by 54BLOGGER