quarta-feira, 31 de dezembro de 2014

Buttons - Bootstrap

Foi um bom ano, aprendi muitas coisas novas, e compartilhei parte desse conhecimento aqui. Pude ajudar e conhecer algumas pessoas. Mudei alguns conceitos, o emprego, a vida. E aos poucos venho me tornando a tal da Desenvolvedora. Agradeço a todos os leitores pelo apoio dicas, e pelas duvidas que me motivaram muito a escrever, ajudar e estudar ainda mais. Espero ter ajudado de alguma forma algum leitor ou futuro desenvolvedor. Aos poucos o Blog vai avançando, os assuntos e o nível de sabedoria também. Espero que em 2015 possamos aprender ainda mais. Que haja mais dicas, duvidas, sugestões e novos posts com novos temas. Pra finalizar segue abaixo uma dica que encontrei e  venho aqui compartilhar com vocês. Que venha 2015!



Pra quem constrói Sites e não quer perder tempo com alguns detalhes, segue opções de botões, baseado em CSS puro e utilizando o Framework de css mais famoso do mundo, o bootstrap, bem bonitinhos e fofinhos, rápidos e fáceis de se utilizar. 


Melissa Lobo.

sexta-feira, 26 de dezembro de 2014

Certificações Java

O ano está acabando, 2015 começando e não tem hora melhor para fazermos um bom planejamento, estipular metas, e tirar aquelas certificações Java. Por isso segue agora um pouco mais sobre as certificações Java Oracle.

A Oracle divide as certificações Java em cinco categorias ou credenciais, que condizem com o grau de habilidade e conhecimento do indivíduo em relação à tecnologia Java.


Oracle Certified Associate
Oracle Certified Associate (OCA) é normalmente o primeiro passo para alcançar o carro-chefe das certificações, a Oracle Certified Professional. A credencial OCA garante que o indivíduo é conhecedor dos fundamentos da tecnologia.

Oracle Certified Professional
Oracle Certified Professional (OCP) é a referência de habilidade profissional e conhecimentos técnicos necessários para gerir, desenvolver ou implementar em toda a empresa bases de dados, middleware, ou aplicações. Cada vez mais os gerentes de TI usam a credencial OCP para avaliar as qualificações dos funcionários e candidatos a emprego.

Oracle Certified Master
Oracle Certified Master (OCM) reconhece o nível mais recente e avançado das habilidades do indivíduo comprovando sua capacidade de conhecimento. Esses profissionais são qualificados para responder às perguntas mais difíceis e resolver os problemas mais complexos.

Oracle Certified Expert Program
O programa Oracle Certified Expert (OCE) é uma parte do Programa de Certificação da Oracle que concede credenciais que reconhecem a competência em tecnologias específicas, arquiteturas ou domínios atualmente não abrangidos no caminho baseado nas Certified Associate e Certified Professional.

A Oracle Certified Specialist
As credenciais Oracle Certified Specialist são tipicamente certificações orientados para a execução de nível fundação dirigidas aos trabalhadores dos seus parceiros atuais da Oracle, funcionários de integradores que desejam se tornar parceiros da Oracle e pessoas que tencionem candidatar-se para o trabalho com os parceiros da Oracle-autorizados. Além disso estas certificações seria aplicável a qualquer pessoa que deseje adicionar credibilidade e ampliar suas habilidades em produtos específicos Oracle.

O que estudar?
Cada certificação possui seu próprio conteúdo ou tópicos, como são chamados pela Oracle. Para conhecer os tópicos de cada certificação é necessário acessar o site da Oracle (mais precisamente: http://education.oracle.com), entrar em Certificações, localizado no menu à esquerda, e em seguida em Java and Middleware. Os tópicos exigidos no exame da OCAJ, por exemplo, são: 

1. Conceitos fundamentais de Orientação a Objetos (tipos primitivos, enumeration, classes concretas e abstratas, interfaces, objetos, etc.);
2. Conceitos OO em UML (classes, interfaces, objetos, herança, visibilidade, composição, associação);
3. Conceitos OO em Java (declaração, instanciação, associação, sobrecarga, arrays, polimorfismo).
4. Concepção e Implementação de Algoritmos (variáveis, escopo, condicionais, iterações, operadores, comparação);
5. Fundamentos de Desenvolvimento em Java (pacotes, importação, comandos java e javac e principais pacotes);
6. Plataformas Java e suas tecnologias (J2SE, J2EE, J2ME, RMI, JDBC, RDBMS, SQL, JNDI, JMS);
7. Tecnologias executadas no cliente (HTML, JavaScript, J2ME, Applets, Swing, etc.);
8. Tecnologias executadas no servidor (JSP, Servlets, EJB, HTTP, Web Services, etc.).

O Exame
Para realizar o exame é necessário primeiro comprar um voucher, que lhe dá o direito de
fazer a prova. Existem duas maneiras de adquiri-lo:
1) entrar em contato com a Oracle University através do telefone 0800-891-6502;
2) por meio do site da Pearson Vue, agência credenciada para aplicar as provas. Esta é a maneira mais vantajosa porque através deste site, além de possibilitar a compra do exame, é onde fazemos o agendamento e a escolha do local em que a prova será aplicada.
Caso o exame seja adquirido pela Oracle University, o agendamento do exame ainda assim deverá ser realizado pelo site da Pearson Vue.

  As certificações oferecidas pela Oracle têm como objetivo certificar que o usuário da linguagem Java possui o conhecimento necessário para trabalhar na área. A conquista de uma certificação se torna um diferencial na concorrência do mercado de trabalho, porém conquistar este diferencial não é uma tarefa fácil, pois exige muita dedicação, estudo e muita prática no uso do Java.

Melissa Lobo.

quinta-feira, 18 de dezembro de 2014

O que é o Dojo?

Dojo é um Framework JavaScript open source, uma coleção gratuita de funções e Widgets de cross-browser compatível, lançado pela primeira vez em 2006. Cada arquivo JavaScript é um objeto com vários atributos e funções, referido como um módulo Dojo. Por exemplo, dijit.form.TextBox é um módulo Dojo que converte um tag HTML de entrada para uma caixa de texto Dojo de estilo. Os módulos podem também estender outros módulos Dojo, então dijit.form.ValidationTextBox e dijit.form.NumberTextBox tanto estender dijit.form.TextBox . Isto permite aos desenvolvedores adicionar funcionalidade, criando suas próprias extensões sem a necessidade de modificar os arquivos pré-instalados. Um dos pontos fortes destes módulos Dojo é que eles são projetados especificamente para apoiar os desenvolvedores a lidar com requisitos de acessibilidade.

Melissa Lobo.

quarta-feira, 3 de dezembro de 2014

O que é o Maven?


O Maven é uma ferramenta de gerenciamento de dependências e do ciclo de vida de projetos de software no sentido técnico, utilizada primariamente em projetos Java.
O Maven utiliza um arquivo XML (POM) para descrever o projeto de software sendo construído, suas dependências sobre módulos e componentes externos, a ordem de compilação, diretórios e plug-ins necessários. Ele vem com objetivos pré-definidos para realizar certas tarefas bem definidas como compilação de código e seu empacotamento.
O Maven baixa bibliotecas Java e seus plug-ins dinamicamente de um ou mais repositórios, e armazena-os em uma área de cache local. Este cache local de artefatos baixados pode também ser atualizado com artefatos criados por projetos locais. Repositórios públicos podem também ser atualizados.
O Maven é construído utilizando uma arquitetura baseada em plugin, que permite que ele faça uso de qualquer aplicação controlável através da entrada padrão. Teoricamente, isto permitiria qualquer um escrever plugins para fazer interface com ferramentas de construção (compiladores, ferramentas de teste de unidade, etc.) para qualquer outra linguagem. De fato, o suporte e uso para linguagens diferentes de Java tem sido mínimas. Atualmente existe um plugin para o framework .NET e é mantido, e um plugin nativo C/C++ é mantido para o Maven 2.

Vantagens:
  • Facilitar a compilação do código, o empacotamento (JAR, WAR, EAR, …), a execução de testes unitários, etc.
  • Unificar e automatizar o processo de geração do sistema. Nada mais de uma coleção de passos e scripts a serem executados manualmente.
  • Centralizar informações organizadas do projeto, incluindo suas dependências, resultados de testes, documentação, etc.
  • Reforçar boas práticas de desenvolvimento, tais como: separação de classes de teste das classes do sistema, uso de convenções de nomes e diretórios, etc.
  • Ajuda no controle das versões geradas (releases) dos seus projetos.

Melissa Lobo.

terça-feira, 2 de dezembro de 2014

Desbravando Java e Orientação a Objetos

Olá Pessoal. Essa semana a Casa do Código lançou um novo livro de Java e Orientação a Objetos, Desbravando Java e Orientação a Objetos: Um guia para o iniciante da linguagem do Rodrigo Turini. Para quem está começando agora, a leitura pode ser bem interessante. O que achei bem legal no livro é que desde o inicio se trabalha com uma IDE e é abordado alguns pontos sobre o Java 8. Assim em poucas horas já se é possível rodar o seu primeiro programa. 

"O livro explora importantes conceitos da orientação a objetos como encapsulamento, herança e polimorfismo. Sempre com exemplos mão na massa, pensados para que você saiba exatamente quando e como utilizá-los. Além disso, serão ensinadas boas práticas de programação e recursos essenciais que com certeza farão parte de sua rotina, dos mais tradicionais aos mais novos introduzidos no Java 8. É sua vez de desbravar o mundo Java!"

O E-book está custando R$ 29,90 um bom investimento para quem quer iniciar seus estudos/carreira na linguagem.  


Melissa Lobo.

segunda-feira, 1 de dezembro de 2014

Soluções Web

Hoje vou disponibilizar para vocês uma lista com opções de framework para o desenvolvimento de soluções web:

RIA*

Full Stack Gerador

*RIA - Rich Internet Application: São Aplicações Web que tem características e funcionalidades de softwares tradicionais do tipo Desktop. RIA típicos transferem todo o processamento da interface para o navegador da internet, porém mantém a maior parte dos dados (como por exemplo, o estado do programa, dados do banco) no servidor de aplicação.

Melissa Lobo.



sexta-feira, 28 de novembro de 2014

Java Server Faces

Hoje vou disponibilizar para vocês uma lista com opções para framework de componentes visuais para o desenvolvimento de soluções web com JSF, futuramente, estarei disponibilizando outras dicas/listas de Java Frameworks, para que vocês possam baixar e conhecer um pouco mais de cada um deles.

Provedores de JSF
Componentes JSF
Extensões JSF
Melissa Lobo.

terça-feira, 25 de novembro de 2014

Porque programar em Java?

A tecnologia Java esta presente em mais de 4,5 bilhões de dispositivos e é utilizada em todos os principais segmentos da indústria, estando presente em uma ampla gama de dispositivos, computadores e redes. Sua versatilidade, eficiência, portabilidade de plataforma e segurança fazem dela a tecnologia ideal para soluções corporativas integradas. A tecnologia Java está em todo lugar! Ela pode ser encontrada em laptops, datacenters, consoles de jogo, supercomputadores científicos, telefones celulares, smartphones, tablets, TVs, cartões inteligentes e até na Internet. Alguns números publicados no www.java.com são:
  • Mais de 800 milhões de PCs
  • 2,1 bilhões de telefones celulares e outros dispositivos portáteis
  • 3,5 bilhões de cartões inteligentes
  • Além de set-top boxes(TV), impressoras, webcams, jogos, sistemas de navegação para automóveis, terminais lotéricos, dispositivos médicos, guichês de pagamento de estacionamento etc.
O Java foi testado, refinado, ampliado e experimentado por uma comunidade dedicada. E, com mais de 6,5 milhões de desenvolvedores, é a tecnologia mais ampla e ativa do planeta. Com sua versatilidade, eficiência e portabilidade, o Java tem valor inestimável para desenvolvedores, pois permite:
  • Criar um software em uma plataforma e executá-lo em praticamente qualquer outra, desde que seja habilitado com Java.
  • Desenvolver soluções para serem executadas em estações de trabalho (desktop), servidores de grande porte (High End Servers), navegadores de internet W3C, diversos dispositivos móveis da atualidade, todos eles 100% integrados usando web services.
  • Combinar aplicativos ou serviços para criar soluções ou serviços altamente personalizados.
  • Versatilidade de selecionar ou combinar diferentes tipos de linguagens de programação (Atualmente com mais de 240 diferentes linguagens).
  • Independência de fornecedores na utilização de produtos tecnológicos de terceiros através das especificações JCP.
  • Integração total entre as partes da soluções sendo simultaneamente executadas nos diferentes estilos e diferentes plataformas da necessidades do mercado atual.
Além de ser uma das linguagens mais procuradas e bem pagas no mercado de trabalho. 

Profissional mais procurado e mais bem pago - Desenvolvedor Java


sexta-feira, 21 de novembro de 2014

O que é XPage?

XPage é uma tecnologia de desenvolvimento rápido para criar aplicativos colaborativos baseados na web. O XPages fornece um conjunto complexo de controles da interface com o usuário e de acesso a dados construídos com a tecnologia Java Server Faces. O XPages suporta a integração de ativos NSF do IBM Notes e Domino existentes, como documentos, visualizações, agentes, fórmulas e segurança. Esses aplicativos podem ser renderizados como páginas dinâmicas da web 2.0 em um navegador e no Notes Client. A interface de desenvolvimento fornece um ambiente de design arrastar e soltar intuitivo e um ambiente de origem XML. A apresentação é controlada por meio de Folhas de Estilo em Cascata (CSS) e lógica de negócios podem ser desenvolvidas usando LotusScript, Java e JavaScript.

Melissa Lobo.

O que é IBM® Domino® Designer?

O IBM® Domino® Designer 9 Social Edition é uma solução de desenvolvimento rápido de aplicativos para modernizar aplicativos colaborativos ou criar aplicativos colaborativos novos que executam no IBM Notes e Domino. O Domino Designer inclui o XPages, que permite aos desenvolvedores usar aptidões em HTML, CSS, Java e JavaScript, juntamente com conjunto de controles modernos da web, Dojo e serviços Ajax integrados para desenvolver aplicativos para Notes e Domino para uso em desktop, remoto ou na web.


Melissa Lobo.

quarta-feira, 12 de novembro de 2014

Princípios de bons Relacionamentos


-O primeiro princípio necessário para a correta utilização dos relacionamentos é: 
Todo relacionamento tem que ter um lado dominante. 
O que quer dizer lado dominante? Qual tabela do banco de dados terá a chave estrangeira. É possível definir o nome da chave estrangeira através da anotação @JoinColum
como no código:

@OneToOne
@JoinColumn(name = "id_nome_chave")

A anotação tem o atributo name para indicar qual deve ser o nome da chave localizada na tabela.


-O segundo princípio a se entender sobre relacionamentos é: 
Pode existir relacionamento Unidirecional ou Bidirecional. 
Um relacionamento unidirecional é o relacionamento em que apenas uma entity conhece a outra; 
E o Bidirecional ambas se conhecem, porém é necessário informar qual é o lado dominante, adicionando o atributo mappedBy no relacionamento que não for dominante.

segunda-feira, 27 de outubro de 2014

Desenvolvendo uma classe

  • Definimos o que a classe deve fazer.
  • Listamos as variáveis de instancia e métodos
  • Escrevemos um código preparatório para os métodos
  • Escrevemos um código de teste para os métodos
  • Implementamos a classe
  • Testamos os métodos
  • Depuramos e reimplementamos quando necessário

quarta-feira, 15 de outubro de 2014

Métodos úteis da classe String

  • O método replace() faz a substituição de um determinado conjunto de caracteres por outro, retornando uma nova String.
  • O método trim() retorna uma String sem os espaços em branco no começo e no final da mesma.
  • O método contains() não tem como retorno uma nova String, mas sim um boolean. Ele avalia se a String original contém a String passada como parâmetro para o método.
  • O método lengh() retorna um int indicando o tamanho da String, ou seja, a quantidade de caracteres que há na String atual.
  • O método toUpperCase() retorna uma nova String com o mesmo conteúdo da original,
  • só que com todos os caracteres em letras maiúsculas.
  • O método toLowerCase(), retorna uma nova String com o mesmo conteúdo da original, mas com todos os caracteres em letras minúsculas.



Estou um pouco ausente, devido a aulas e projetos que estou realizando no momento, e que tem me ocupado bastante. Mas logo voltarei a postar frequentemente com novidades, sobre Frameworks como o JSF, Spring, etc. Se houver alguma dica, duvida ou sugestão, fiquem a vontade para entrarem em contato. Ficarei honrada em ajudar. 

Melissa Lobo.

segunda-feira, 6 de outubro de 2014

Regras de Declaração para Arquivos-Fonte Java

  • Um arquivo de código-fonte só pode ter uma classe pública (ex.: public class Hello{…}).
  • Se o arquivo de código-fonte tiver uma classe pública, seu nome terá que coincidir com o nome dessa classe.
  • O arquivo só pode ter uma instrução package, porém, várias de import.
  • A instrução de package (se houver) deve ficar na primeira linha (fora os comentários) do arquivo de código-fonte.
  • A instrução import (se houver) deve vir depois de package e antes da declaração class.
  • Se não houver instrução package, as instruções import terão que ser as primeiras (fora os comentários) do arquivo de código-fonte.
  • As instruções package e import são aplicadas a todas as classes do arquivo.
  • O arquivo pode ter mais de uma classe não pública.
  • Os arquivos que não tiverem classes public não apresentarão restrições de nomeação, ou seja, podem ter um nome que não seja o mesmo de nenhuma das classes do arquivo.

quinta-feira, 2 de outubro de 2014

Instalando o MySQL Server no Ubuntu

Abra o terminal e digite o seguinte comando:

sudo apt-get install mysql-server

Defina a senha do usuário root do MySQL Server e aperte enter.
Repita a senha do usuário root do MySQL Server e aperte enter novamente. Aguarde o término da instalação, pois o Ubuntu irá baixar os pacotes de instalação e fazer a configuração básica do sistema para você.

Testando o MySQL
Para verificar se o MySQL está funcionando,  digite o comando:

sudo netstat -tap | grep -e mysql

A saida devera ser semelhante a imagem abaixo:

Alterando a Senha do MySQL


Se você não se lembra da senha, pode recadastrar a senha, com o seguinte comando:

mysqladmin -u root password novasenha

Como você pode ver, no Ubuntu instalar programas é bem fácil. Divirta-se!

terça-feira, 30 de setembro de 2014

Cursos Técnicos Gratuitos

Olá pessoal, uma dica legal pra quem está começando, são os cursos técnicos das Etecs, relacionados a TI temos várias opções como: Informatica, Comunicação Visual, Informatica para Internet, Manutenção e Suporte a Informatica, Programação de Jogos Digitais, Rede de Computadores e muitos outros que podem ser conferidos no site: http://www.centropaulasouza.sp.gov.br/cursos/etec .

Eu fiz dois cursos Técnicos e digo que com certeza vale a pena, o aprendizado é enorme, e já é uns pontos a mais no currículo né?!

As inscrições para os cursos começam agora dia 02/10 e vão até as 15h do dia 07/11, no site http://www.vestibulinhoetec.com.br , qualquer duvida é só ligar lá ou entrar no Site.

Instalando o Apache Tomcat no Linux e configurando no Eclipse

Apache Tomcat

O Apache Tomcat, conhecido no popular como servidor web Java ou container, é o que gerencia e roda o Servlet. Como tenho utilizado bastante ele. Vou ensinar hoje como instalar e configurar o mesmo. Eu estou usando a versão 7 do  Apache Tomcat.

Instalando o Tomcat

Acesse o link dowload Tomcat para fazer o download do programa. Escolha a versão do instalador, que vai depender do sistema operacional que estiver utilizando.


Concluindo o download, abra o terminal do linux entre no diretório em que o arquivo foi baixado. E execute o comando: tar -xzvf NOME_ARQUIVO.tar.gz
Sendo o NOME_ARQUIVO.tar.gz o nome do arquivo baixado no site do Tomcat.
Este comando irá descompactar o arquivo e criar uma pasta no diretório.

Para testar o Apache Tomcat acesse a pasta bin dentro do diretório extraído e execute o seguinte comando pelo terminal:
 sh startup.sh

Acesse a página inicial do Tomcat no navegador: http://localhost:8080:

Configurando o Apache Tomcat no Eclipse:

Agora iremos configurar o Tomcat no Eclipse. Para isso abra o Eclipse e acesse o menu Window > Preferences > Server > Runtime Environments e clique em Add:

Selecione Apache > Apache Tomcat v7.0 que é a versão que foi baixada e clique em Next:

Informe em Tomcat installation directory o local aonde foi extraído o Tomcat e clique em Finish:

Depois disso na aba Servers será criado uma nova configuração para o Apache Tomcat Server, e depois disso basta apenas inciar o Apache Tomcat Server:

Ao iniciar o Tomcat você terá a seguinte saída no console do Eclipse:


Pronto! Apache Tomcat Server instalado e configurado no Eclipse.

Instalando o Git

Para instalar o Git no Linux, é bem simples.
Abra o terminal, digite o comando:
sudo apt-get install git
passowd: sua_senha

Em seguida vai aparecer uma mensagem como:

"É preciso baixar 3.274 kB de arquivos.
Depois desta operação, 21,6 MB adicionais de espaço em disco serão usados.
Você quer continuar? [S/n] "


Você digita: 's'

Assim que concluir, configure o mesmo com nome e e-mail:
Digitando os seguintes comandos:
git config --global user.email "seuemail@exemplo.com"
git config --global user.name "Seu nome e sobrenome"

Prontinho o Git está instalado e configurado na sua máquina, agora é só comitar seus projetos.


segunda-feira, 22 de setembro de 2014

CascadeType.

O CascadeType é uma maneira de definir a forma como serão propagadas as operações em cascata de uma Entity para suas referencias. A vantagem do Cascade é a propagação automaticamente da ação configurada nos relacionamentos da entidade.
As definições do Cascade são passadas dentro das anotações @OneToOne, @OneToMany e @ManyToMany, e as possibilidades de valores para o Cascade podem ser encontradas dentro de um enum javax.persistence.CascadeType.

Tipos:
  • CascadeType.PERSIST– disparado toda vez que uma nova entity for inserida no banco de dados pelo comando entityManager.persist();
  • CascadeType.DETACH – disparado toda vez que uma entity é retirada do Persistence Context. Comandos que podem disparar essa ação: entityManager.detach(), entityManager.clear(). Ocorrerá um detach também quando o Persistence Context deixar de existir;
  • CascadeType.MERGE – disparado toda vez que uma alteração é executada em uma entity. Essa alteração pode acontecer ao final de uma transação com a qual uma managed Entity foi alterada (4.2), ou pelo comando entityManager.merge();
  • CascadeType.REFRESH – disparada quando uma entity for atualizada com informações no banco de dados. Comando: entityManager.refresh();
  • CascadeType.REMOVE – disparado quando uma entity é removida (apagada) do banco de dados, os relacionamentos marcados também serão eliminados O comando utilizado é o entityManager.remove();
  • CascadeType.ALL – todos os eventos anteriores serão sempre refletidos nas Entities relacionadas.


Exemplo para setar apenas um tipo de Cascade:

@OneToMany(cascade = CascadeType.ALL)
private List
usuarios;

Exemplo para setar um ou mais tipos, (porém não todos):

@OneToMany(cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE })
private List usuarios;



Observações sobre o Cascade:

  • É preciso ter bastante cuidado ao anotar um relacionamento com CascadeType.ALL. Uma vez que se a entidade fosse removida o seu relacionamento também seria removido do banco de dados.
  • CascadeType.ALL (ou opções únicas) pode causar lentidão em todas as ações realizadas na entidade. Caso a entidade tenha muitas listas um merge() poderia causar todas as listas a receberem merge().

sábado, 20 de setembro de 2014

O que é JPQL?

Consultas são tão importantes quanto armazenamentos de dados, por esse motivo é que é importante ter uma maneira flexível de acessar dados. Ai é que entramos no assunto JPQL. A JPQL é uma linguagem de consulta ORM que opera sobre classes e objetos, diferente do SQL que opera sobre tabelas. Ela é também uma especificação da JPA, e apesar de trabalhar com entidade (classes) é uma linguagem bem semelhante a SQL. Uma das vantagens da JPQL é que a mesma consulta pode ser executada em todos os bancos de dados.

O que é JPA?



O JPA nada mais é do que um conjunto de especificações (muitos textos, normas e interfaces do Java) de como uma implementação deve se comportar. Existem diversas implementações no mercado que seguem as especificações do JPA. Podemos citar o Hibernate, OpenJPA, EclipseLink e o “recente” Batoo.
As implementações tem a liberdade de adicionar anotações e códigos a mais que desejarem, mas tem que implementar o básico que o JPA requeira.
O que o JPA nos propõem, é que seja possível trabalhar diretamente com as classes e não ter que utilizar as consultas nativas de cada banco de dados; o JPA irá fazer esse trabalho pelo desenvolvedor.

sexta-feira, 12 de setembro de 2014

O que é um DAO?

DAO significa Data Access Object. É uma estratégia de implementação que tem como objetivo separar a lógica de acesso a dados das regras de negócio de sua aplicação.
É um padrão para persistência de dados, por exemplo em uma aplicação que utilize a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos Java para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes DAO. A  ideia é escrever o código de acesso a dados em uma classe separada que implemente uma interface. Fazendo assim com que o resto do seu sistema tenha acesso direto apenas a esta interface.

Quais as vantagens?

A vantagem de usar objetos de acesso a dados é a separação simples e rigorosa entre duas partes importantes de uma aplicação que não devem e não podem conhecer quase que nada uma da outra, e que podem evoluir frequentemente e independentemente. Alterar a lógica de negócio pode esperar apenas a implementação de uma interface, enquanto que modificações na lógica de persistência não alteram a lógica de negocio, desde que a interface entre elas não seja modificada.


  • Pode ser usada em uma vasta porcentagem de aplicações;
  • Esconde todos os detalhes relativos a armazenamento de dados do resto da aplicação;
  • Atua como um intermediário entre a aplicação e o banco de dados;
  • Mitiga ou resolve problemas de comunicação entre a base de dados e a aplicação, evitando estados inconsistentes de dados.


Como mostrado no diagrama, a abordagem escolhida é isolada ao DAO, enquanto apenas os métodos de acesso a dados pertinentes estão expostos através da interface. Em  um projeto que implemente o DAO, é bastante fácil de trocar de uma implementação para outra com um impacto mínimo para a sua aplicação.


Melissa Lobo.

O que é uma Taglib?

Uma Taglib é nada mais nada menos que uma biblioteca de tags customizadas que são utilizadas na  Taglib é nada mais nada menos que uma biblioteca de tags customizadas que são utilizadas na composição de páginas JSP. Podemos dizer que uma Taglib é uma biblioteca de “classes Java” que são utilizadas “na forma de tags” para auxiliar na geração de conteúdo dinâmico em uma página JSP.


Melissa Lobo.

sábado, 6 de setembro de 2014

Relacionamento OneToOne

Confesso que sempre me confundo um pouco com os relacionamentos do Hibernate, por isso hoje vou falar do Relacionamento @OneToOne (com annotation) e posteriormente sobre os demais.

Relacionamento convencional @OneToOne

O relacionamento convencional um-para-um trata-se de um relacionamento onde os atributos das entidades relacionadas serão persistidas em tabelas distintas. O relacionamento das classes Pessoa e Endereço em um relacionamento convencional um-para-um é declarado da seguinte forma:

package testes;
import javax.persistence.*;
@Entity
public class Pessoa {
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
@OneToOne(cascade = CascadeType.ALL)
private Endereco endereco;
//get's e set's
}

package testes; 
import javax.persistence.*;
@Entity
public class Endereco { 
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String logradouro;
@OneToOne(mappedBy = "endereco")
private Pessoa pessoa;
//get's e set's
}

O annotaion @OneToOne(mappedBy = "endereco") serve para indicar um relacionamento bidirecional, informando que Endereço é o final do relacionamento entre Pessoa-Endereço e que é mapeado em Pessoa pelo atributo endereço. Ou seja, a tabela Pessoa terá a chave estrangeira para Endereço. Com esses Annotations, o Hibernate irá criar duas tabelas: Pessoa e Endereço com os seguintes atributos:

Pessoa
id bigint not null
nome varchar(255)
endereco_id bigint

Endereco
id bigint not null
logradouro varchar(255)

Podemos também declarar um relacionamento unidirecional. Para isso basta não declarar o atributo Pessoa em Endereço:
package testes; 
import javax.persistence.*; 
@Entity
public class Endereco { 
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String logradouro;
//get's e set's}



Embedded

O relacionamento "embedded one-to-one" trata-se de um relacionamento onde os atributos das entidades relacionadas serão persistidas na mesma tabela.
Por exemplo temos uma classe Pessoa que tem um relacionamento um-para-um com a classe Endereço, esse relacionamento será definido da seguinte forma:

package testes;
import javax.persistence.*;
@Entity
public class Pessoa { 
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome; 
@Embedded
private Endereco endereco;
//get's e set's
}

package testes;
import javax.persistence.Embeddable;
@Embeddable 
public class Endereco {
private String logradouro;
//get's e set's
}

Com esses 'Annotations', o Hibernate irá criar uma tabela Pessoa com os seguintes atributos:

id bigint not nulllogradouro varchar(255)
nome varchar(255)  


Hibernate e JPA

O Hibernate é uma ferramenta ORM open source e é a líder de mercado, sendo a inspiração para a especificação Java Persistence API (JPA). O Hibernate nasceu sem JPA mas hoje em dia é comum acessar o Hibernate pela especificação JPA. Como toda especificação, ela deve possuir implementações. Entre as implementações mais comuns, podemos citar: Hibernate da JBoss, EclipseLink da Eclipse Foundation e o OpenJPA da Apache. Apesar do Hibernate ter originado a JPA, o EclipseLink é a implementação referencial.

O Hibernate abstrai o seu código SQL, toda a camada JDBC e o SQL será gerado em tempo de execução. Mais que isso, ele vai gerar o SQL que serve para um determinado banco de dados, já que cada banco fala um "dialeto" diferente dessa linguagem. Assim há também a possibilidade de trocar de banco de dados sem ter de alterar código Java, já que isso fica de responsabilidade da ferramenta.

quinta-feira, 21 de agosto de 2014

O que são Threads?

Threads são linhas de execução de um processo. É a maneira de um processo se dividir em duas ou mais partes para que possam ser executadas "ao mesmo tempo". Nem sempre é ao mesmo tempo porque na maioria das vezes temos somente uma CPU disponível. Então alguém fica a cargo de dividir as fatias de tempo entre os concorrentes. Embora quase sempre, mesmo com apenas uma CPU, temos a impressão de que tudo está sendo feito ao mesmo tempo. Mas não está! A CPU está processando um pouco de cada coisa pra te dar essa impressão. Este assunto é bem vasto, mas vamos nos ater aos threads.

Um processo no contexto que estou falando seria o programa. Poderíamos desejar que o programa faça várias coisas ao mesmo tempo. Por exemplo, um browser: Quando o browser carrega uma página com muitas imagens, ele se conecta a vários links para baixar as imagens ao mesmo tempo. Ele não abre uma por uma, existe um thread para cada tarefa de forma que todas são executadas ao mesmo tempo. Lembre-se que "ao mesmo tempo" nem sempre é verdade, mas vamos acreditar que seja.

Em Java, podemos implementar threads instanciando a classe java.lang.Thread. Um objeto do tipo Thread é um objeto como qualquer outro, possui métodos e variáveis. A grande diferença é que ele possui sua própria pilha de chamada. O método main é responsável por iniciar todo o processamento, portanto ele é considerado o thread principal.

Existem duas formas de se trabalhar com threads, implementando Runnable ou estendendo Thread. Você deve conhecer estas duas formas, mas geralmente a melhor prática é implementar, pois assim fica livre para estender outra classe.
Quando implementamos Runnable devemos sobrescrever o método run. Dentro do método run colocamos todo o trabalho que desejamos executar concorrentemente. Se por acaso tivéssemos escolhido estender Thread, o método run deveria ser sobrescrito da mesma forma.

quarta-feira, 20 de agosto de 2014

O que é um construtor?

Um construtor contem o código que será executado quando você instanciar um objeto. Em outras palavras, o código que será executado quando você escrever new em um tipo de classe.
Ex: Adicao adicao = new Adicao ();
Um construtor deve ter o mesmo nome que a classe, e o mesmo não tem nenhum tipo de retorno (nunca).Ex:


public Adicao (int size) { }
 

Toda classe que for criada terá um construtor, até mesmo quando não o escrevemos, quando isso acontece o compilador cria um construtor. (o construtor criado pelo compilador não tem nenhum tipo de argumento).Ex: 

public Adicao () { }


Porém o compilador só irá criar o construtor se você não informar absolutamente nada sobre eles. Se você criar um construtor o compilador entende que você é o responsável por eles e não irá se interferir.
Quando há mais de um construtor em uma classe eles são chamados de construtores sobrecarregados, porém cada construtor terá que ter uma lista de argumentos diferente. Uma lista de argumentos inclui a ordem e o tipo dos argumentos.


O que diferencia um construtor de um método, é que todo método deve ter um tipo de retorno, e os construtores não, eles nunca retornam nada.

Pra não esquecer:
Um construtor é o código que é executado quando escrevemos new em um tipo de classe, ou seja, instanciar a classe que foi definida;


Melissa Lobo.

Exception -Try/Catch

Pra não esquecer:

Um método pode lançar uma exceção quando algo falhar no tempo de execução. Uma exceção é sempre um objeto do tipo Exception.
Um método lança uma exceção com a palavra chave trhow, seguida de um novo objeto de exceção.
O bloco try/catch informa ao compilador que você sabe  que algo excepcional pode acontecer.
try(Insere o método perigoso) executa algo arriscado, se por um acaso não funcionar, o catch tenta resolver (ele só será executado se uma exceção for lancada.)

segunda-feira, 11 de agosto de 2014

O que é MVC?

MVC (Model-View-Controller) é um padrão de projeto arquitetural criado com o objetivo de separar a lógica de negócios da camada de apresentação.

Porque utilizar o MVC?
Com o aumento da complexidade das aplicações desenvolvidas, sempre visando a programação orientada a objeto, torna-se relevante a separação entre os dados e a apresentação das aplicações. Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout.
Esse padrão resolve este problema através da separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interação com o utilizador, introduzindo um componente entre os dois: o controlador.
Como funciona?
 O MVC guia o desenvolvedor na tentativa de organizar a aplicação de forma que tenhamos três papéis bem definidos, onde o MODEL (modelo) é responsável por todo o processamento da aplicação (regras de negócio e acesso ao banco de dados), o VIEW (visão) serve apenas para apresentação de resultados como também entrada de informações e o CONTROLLER (controlador) faz a comunicação entre o MODEL e o VIEW.

MODEL, VIEW e CONTROLLER

Além de dividir a aplicação em três tipos de componentes, o desenho MVC define as interações entre eles.
  • Um controller (controlador) pode enviar comandos para sua visão associada para alterar a apresentação da visão do modelo (por exemplo, percorrendo um documento). Ele também pode enviar comandos para o modelo para atualizar o estado do modelo (por exemplo, editando um documento).
  • Um model (modelo) notifica suas visões e controladores associados quando há uma mudança em seu estado. Esta notificação permite que as visões produzam saídas atualizadas e que os controladores alterem o conjunto de comandos disponíveis. Uma implementação passiva do MVC monta estas notificações, devido a aplicação não necessitar delas ou a plataforma de software não suportá-las.
  • view (visão) solicita do modelo a informação que ela necessita para gerar uma representação de saída.

E assim esses três formam o padrão arquitetural chamado de MVC, ou Model View Controller. Lembrando que ele pode sofrer variações de diversas maneiras. E o que o MVC garante é a separação de tarefas, facilitando assim a reescrita de alguma parte, e a manutenção do código.

segunda-feira, 4 de agosto de 2014

Banco de Dados - HSQLDB

-Ligando e configurando Banco de dados HSQLDB com o Eclipse

O HSQLDB é um sistema de bancos de dados relacional de código livre, totalmente escrito em Java (portanto totalmente portátil) que é leve e rápido, podendo ser usado para aplicações simples onde não se espera uma carga de dados e acesso muito alta. Download 

Configurando o Eclipse

Para que o banco de dados esteja disponível em sua aplicação no Eclipse, importe o arquivo hsqldb.jar para o diretório Nome_Do_Projeto/WebContent/WEB-INF/lib/ . Para importar o arquivo .jar, selecione o diretório Nome_Do_Projeto/WebContent/WEB-INF/lib/ no Package Explorer do Eclipse, clique com o botão direito do mouse, selecione Import , selecione General/File System como método para importação, clique next e escolha o diretório onde o arquivo hsqldb.jar se encontra. Selecione o arquivo e clique em Finish .
É importante observar que no Package Explorer do Eclipse o arquivo será mostrado como parte do diretório Web App Libraries e não do diretório Nome_Do_Projeto/WebContent/WEB-INF/lib/ .


O HSBSDB pode funcionar em diversos modos:

  • Servidor (protocolo de comunicação proprietário);
  • Servidor Web (HTTP);
  • Servlet (HTTP);
  • Stand Alone (acesso direto);
  • Somente memória (acesso direto).

Ligando em modo Servidor:

Para ligar o Banco de Dados HSQLDB, basta você abrir o terminal, entrar no diretório onde foi baixado o Banco de Dados, em seguida entrar no diretório lib do diretório do banco de dados, e rodar o comando:

java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:Nome_Do_Projeto --dbname.0 Nome_Do_Projeto 

O HSBSDB possui uma ferramenta de gerenciamento, para iniciá-la digite em outro terminal dentro do mesmo diretório (lib do banco de dados) o comando:

java -cp hsqldb.jar  org.hsqldb.util.DatabaseManager

Configurando o Banco de Dados

Setting Name: o nome pelo qual o banco de dados será posteriormente referenciado em “Recent settings”
Type: o tipo do banco de dados, no caso como estamos ligando de modo servidor configuramos como HSQL Database Engine Server 
Driver: driver para conexão com o banco de dados (Deixe com está: org.hsqldb.jdbcDriver)
URL: o endereço e o nome do banco de dados (jdbc:hsqldb:hsql://localhost/)
User: o usuário (SA)
Password: a senha do usuário ( )

Melissa Lobo.

quarta-feira, 23 de julho de 2014

Quanto mais aprendo, mais vejo o quanto sou ignorante

Quanto mais aprendo, mais vejo o quanto sou ignorante. Parece cruel dizer isso mas é verdade. Posso saber muito sobre um assunto, ou um pouco sobre vários assuntos. Mas nunca muito sobre todos os assuntos. E quanto mais vou aprendendo, mais descubro o quanto ainda posso aprender. Se tem uma coisa da qual se pode ter certeza, é que o aprendizado é infinito, independente do quão inteligente você é.

Melissa Lobo

quarta-feira, 16 de julho de 2014

O que é o retorno de um método exatamente

Temos um programa que é uma calculadora os métodos do nosso programa é que vão realizar as funções (o comportamento) da calculadora, como a função somar por exemplo, ao chamar o método de soma, você digita dois números aleatórios, o método é executado, somando os dois números, e então ele te retorna o resultado.

public class Calculadora{

   public int somar ( int num1int num2 ){
       return num1 + num2;
   }

   public int subtrair (int num1int num2){
       return num1 - num2;
   }

   public int multiplicar ( int num1int num2 ){
       return num1 * num2;
   }

   public int dividir ( int num1int num2){
       return num1 / num2;
   }

}

Método somar:

Retorno do método somar:



Ou seja o retorno de cada método da calculadora é o resultado da operação (função ou comportamento) realizada.


OBS. Esse post foi especial para tirar a duvida de um leitor. Acho que ficou bem explicadinho. Espero ter ajudado. 

Melissa Lobo.

terça-feira, 15 de julho de 2014

Enums Java

Um enum especifica uma lista de valores constantes que podem ser atribuídos a um determinado tipo. Ele não é uma String nem um int; o tipo constante de um enum é o tipo do próprio enum. Por exemplo, INVERNO, PRIMAVERA, VERÃO e OUTONO são do tipo enum estação.
O enum pode ser declarado fora ou dentro de uma classe, mas não em um método, quando declarado fora de uma classe não pode ser marcado com static, final, abstract, protected ou private.
Os enums podem conter construtores, métodos, variáveis e corpos de classes constantes. As constantes enum podem enviar argumentos para o construtor enum, usando a sintaxe BIG(8), onde o literal int 8 é passado ao construtor enum. Os construtores enum podem ter argumentos e podem ser sobrecarregados, porém nunca podem ser chamados diretamente no código. Eles são sempre chamados automaticamente quando um enum é inicializado.
O ponto-e-vírgula ao final da declaração de um enum é opcional. Ambos são válidos:

enum TestEnum {ONE, TWO, THREE}

enum TestEnum {ONETWOTHREE};




segunda-feira, 14 de julho de 2014

Criando Projeto Servlet no Eclipse

Para criar um projeto Servlet no Eclipse é bem simples: Botão Direito do mouse: New > Project 
Ai você escolhe o modelo do seu projeto: Web > Create a Dynamic Web project > Next  :
Project name: nomeDoProjeto > Finish :

Em seguida criaremos um pacote dentro do nosso novo projeto:

 E dentro desse pacote criamos uma classe:
E para que esta classe seja configurada como um Servlet, 'extendemos' (extends ) ela de HttpServlet, e importamos o mesmo:


Para configurar a nossa Servlet para responder na raiz do nosso projeto, utilizamos a anotação @WebServlet(urlPatterns = "/") e a importamos:

Para programar o que o Servlet retornará ou enviará, é necessário faze-lo dentro do método doGet ou doPost. A assinatura deste método recebe objetos do tipo HttpServletRequest (Request) e HttpServletResponse (Response), que são responsáveis por ler o que foi recebido para processar e por escrever a saída ao utilizador:
O Request é usado para ler o que chega pelo HTTP (HTML, Cookies, etc), e o Response para escrever o resultado do Servlet (Conteúdo, Content Type, Cookies, etc).


Dentro da pasta WebContent criamos um arquivo index.html ou index.jsp :
E lá colocamos o conteúdo da pagina a ser exibido: <h1>Bem Vindo ao nosso primeiro projeto Servlet!</h1><br/> : 

Agora vamos rodar o projeto. Para isso,  precisamos adicionar o nosso projeto a um servidor web (Tomcat) como um novo projeto.
Vá na guia Servers do Eclipse encontre o Tomcat e Clique com o botão direito sobre o Tomcat e selecione Add and Remove :

 Na janela de Add and Remove, selecione o projeto clique em Add > e em seguida em Finish: 


Agora para iniciar o Webserver. É só clicar com o direito sobre o Tomcat e clicar em Start:

Quando o status aparecer Started, Synchronized, vá até seu navegador e digite o endereço http://localhost:8080/nomeDoProjeto :

E assim nosso primeiro projeto (bem simples) está pronto.

Pra não esquecer:
Boa Prática: nome do projeto começa com letra minuscula, nome da class maiúscula.
Link do projeto para quem quiser baixar : Primeiro Projeto Servlet no Eclipse

Melissa Lobo.

Posteriormente iremos conectar com o Banco De Dados. 

sexta-feira, 11 de julho de 2014

O Fim do Orkut

Há um bom tempo já sabíamos que o Orkut ia morrer, assim como Msn se foi junto de seus emoticons. Achei até que demoram pra tomar essa decisão. Mas agora é oficial, hoje já não é mais possível criar perfil no orkut. E quem já tem conta na rede social só tem mais três meses de uso.
  • 29/06/2014, domingo
Foi o último dia para criar perfis.
  • 29/09/2014, segunda-feira
Último dia da rede social. Último dia para exportar suas fotos para o Google Plus.
  • 30/09/2014, terça-feira
Fim do Orkut.
  • Setembro de 2016
Último mês para fazer um backup de suas informações do orkut para o computador. Servem mais para lembrar o passado mesmo, por enquanto não dá para exportar essas informações para outra rede social.

Porque o Orkut morreu?

Primeiro a queda do Orkut começou quando os próprios usuários bombardearam o site com propagandas e spans, o fato de poder enviar uma unica mensagem pra todos os 'amigos' de uma só vez, fez com que se tornasse impossível controlar as mensagens recebidas. Assim aos poucos o Orkut acabou estagnado, virando coisa do passado, enquanto o Facebook surgia com direito a filme e tudo, conseguindo controlar as propagandas e direcionando melhor os interesses dos usuários. Fora que o Orkut era praticamente uma rede social nacional, enquanto o Facebook não. E com o passar dos anos, surgiu uma grande necessidade de se conectar com o mundo inteiro.

Porque o Orkut vai deixar saudade?
Porém o Facebook não tem alguns recursos dos quais nós brasileiros amávamos no Orkut. Como por exemplo:
  • Depoimentos - Até o Linkedin tem depoimentos. E quem não se comovia ao abrir o Orkut e ter recebido um depoimento, seja de um amigo, da pessoa amada, da família, ou aquele que vinha na primeira hora do dia do seu aniversário. Era tão fofo quanto flores e chocolates.
  • Fóruns e Comunidades - Até o Yahoo! Respostas funciona melhor como fórum do que os grupos do Facebook. E venhamos, as comunidades eram a melhor coisa do Orkut, você conhecia pessoas com gostos musicais parecidos, encontrava os melhores links para baixar música, filmes, etc. Passava a noite discutindo com desconhecidos. E nunca ia para um Show sozinho. 
  • Visitantes - Todo mundo adorava conferir a sua lista de visitantes, e ver quem andou fuçando a sua rede social. E para quem não queria ser visto tinha a opção de desabilitar essa função.
  • Todo mundo era feliz jogando a Colheira Feliz e o Café Mania. Roubando e regando o jardim do vizinho, era uma competição danada quem estava em qual nível, ou como decoravam o seu Café. Ao contrario do Facebook que os jogos se tornaram um inferno, por causa de um monte de solicitações que realmente enchem o saco.
  • Por fim, o Orkut sempre lhe mandava uma frase especial todos os dias. Que muitas vezes eram boas frases de se ler.
Mais informações sobre esse fim, acesse a página de suporte do Google ou o Blog Oficial do Orkut.

Melissa Lobo.

terça-feira, 1 de julho de 2014

HTML

O HTML significa 'Hyper Text Markup Language',  é uma linguagem  de marcação utilizada para produção de páginas na web, que permite a criação de documentos que podem ser lidos em praticamente qualquer tipo de computador e transmitidos pela internet. Para escrever documentos HTML não é necessário mais do que um editor de texto simples e conhecimento dos códigos que compõem a linguagem.
  Para testar os códigos, basta salvar o arquivo em formato .HTML e executar. Para o teste é necessário ter um navegador configurado como padrão. Não é necessária internet, pois o arquivo com os códigos esta na maquina onde esta sendo executado.
  Os códigos (conhecidos como Tags) servem para indicar a função de cada elemento da página Web. Os tags funcionam como comandos de formatação de textos, formulários, links (ligações), imagens, tabelas, entre outros. A  maioria dos códigos em HTML precisam ter um código de inicialização e um de finalização (Tag de abertura e Tag de fechamento).
Por exemplo, para definir o titulo da pagina, é necessário escrever:
<title>Título da minha Página</title>
</title> serve para “avisar” que ali acaba o titulo, caso não seja posto, todos os códigos definidos depois serão considerados parte do titulo.
Ai os browsers (navegadores) identificam essas tags e apresentam a página conforme está especificada. 

Agora segue abaixo algumas Tags básicas das quais são bastante utilizadas:


Tags HTML básicas:
TagDescrição
<html>Define um documento HTML
<body>Define o corpo do documento
<h1> a <h6>Define título 1 a título 6
<p>Define um parágrafo
<br>Insere uma única quebra de linha
<hr>Define um filete horizontal
<!-->Define um comentário

Tags de Formatação de Textos:
TagDescrição
<b>Define texto em negrito
<big>Define texto grande
<em>Define texto enfatizado;
<i>Define texto em itálico
<small>Define texto pequeno
<strong>Define texto forte
<sub>Define texto subescrito
<sup>Define texto superescrito
<ins>Define texto inserido
<del>Define texto cancelado

Tags de "Saída de Computador":
TagDescrição
<code>Define texto de código de computador
<var>Define uma variável

Tags de Listas:
TagDescrição
<ol>Define uma lista ordenada
<ul>Define uma lista não ordenada
<li>Define um item de lista
<dl>Define uma lista de definições
<dt><Define um termo de definição
<dd>Define uma descrição de definição

Tags de Tabelas:
TagDescrição
<table>Define uma tabela
<th>Define um cabeçalho de tabela
<tr>Define uma linha de tabela
<td>Define uma célula de tabela
<caption>Define um título de tabela
<colgroup>Define um grupo de colunas de tabela
<col>Define os valores de atributo para uma ou mais colunas em uma tabela
<thead>Define um cabeçalho de tabela
<tbody>Define o corpo de uma tabela

Link de Tags:
TagDescrição
<a>Define uma âncora

Tags de Cabeçalho:
TagDescrição
<head>Define informação sobre o documento
<title>Define o título do documento
<base>Define o URL base para todos os vínculos numa página
<link>Define a referência do recurso
<meta>Define meta informação

TagDescrição
<!DOCTYPE>Define o tipo do documento. Esta tag vai antes da tag de início <html>