Exemplo de Documentação para Gestão de Projetos

Olá, pessoal!

No post de hoje irei compartilhar um trabalho desenvolvido pelo meu grupo na pós, este é um exemplo de documentação para gestão de um projeto de desenvolvimento de sistemas.

Caso tenham duvidas ou sugestões por favor comentem.

Obrigado, um grande abraço!

 

 

Conhecendo HSQLDB banco de dados em memória

Olá, no dia de hoje irei mostrar a simplicidade da instalação do HSQLDL. Antes disto irei falar um pouco sobre ele. HSQLDB ou Hyper Structured Query Language DataBase é um SGBD de código aberto escrito em Java. É uma solução simples comparado ao Oracle e SQL Server, possui poucos recursos, porém um bom desempenho. É mais indicado para aplicações desktops. Dá suporte a schemas, seleções, joins, functions, sequences,  triggers e views. Pode ser classificado também como banco de dados em arquivo texto e em memória. Pode ser utilizado em projetos embarcados pois salva as informações dentro do .jar do projeto, em memória ou no servidor. As informações Uma das vantagens é o pouco espaço de disco necessário. Possui um client SQL simples para acessar o banco. Link de acesso para download do HSQLDB.a1

Acessando o Client e Server do HSQLDB com o hsqldb.jar com dublo click.01

a2

 

Siga as configurações abaixo para configurar o banco de dados:

Criando base de dados:

Crie uma basta chamada db no diretório de sua preferência. Ex: C:\Users\fulano\db.c2

Configure a conexao:

Setting Name: MyServerDB, Type: HSQL Database Engine Server, Driver: org.hsqldb.jdbcDriver, URL: jdbc:hsqldb:hsql:file:C:\Users\fulano\db\restaurantes, User:sa, Password: sa .

c3

Clique em OK.c4

c5

Base de dados criada com sucesso.

Teste a base de dados com os comandos abaixo:c6 c8

c9

 

Está é uma configuração básica para utilizar o HSQLDB, espero que tenham gostado. Deixem um comentário com dúvidas ou sugestões.

Um grande abraço!

 

Montando o CUBO MÁGICO em CAMADAS passo a passo

cubo2

Pessoal, no post de hoje irei compartilhar um dos algoritmos para resolver o CUBO MÁGICO. Vi alguns tutoriais, vídeos e posts sobre o assunto.

Confesso que no começo pareceu impossível, nunca imaginei que fosse conseguir montar este cubo até porque não conhecia ninguém que já o tivesse resolvido.

Tenho no trabalho alguns colegas bem bacanas que conseguem resolver o cubo em pouco mais de 1 minuto.

Isto me deixou intrigado e resolvi tentar. Estou bem longe deste tempo ‘POR ENQUANTO’.

Resolvi escrever o passo a passo para resolver o cubo, baseado no que estudei e funcionou.   

Resumo para melhor entendimento do algoritmo.

20151017_165248

cubo4

Passo a passo

  1. Montar a CRUZ da face BRANCA
    1. Face BRANCA para cima;
    2. Buscar o CENTRO BRANCO.
    3. Formar uma cruz branca da seguinte forma:
      1. Peça BRANCA-AZUL alinhada com o CENTRO AZUL;
      2. Peça BRANCA-LARANJA alinhada com o CENTRO LARANJA;
      3. Peça BRANCA-VERMELHA alinhada com o CENTRO VERMELHO;
      4. Peça BRANCA-VERDE alinhada com o CENTRO VERDE;
    4. Aplicar a fórmula ( F2 ):
      1. Procurar na face oposta ao BRANCO uma peça com COR BRANCA;
        1. Alinhar a peça do meio  da 1ª CAMADA com o seu CENTRO;
        2. Aplicar a formula passo ’D’;
      2. Procurar na 1ª CAMADA uma peça com COR BRANCA;
        1. Aplicar a formula passo ’D’;
  2. Montar os cantos da face BRANCA e a 1ª CAMADA:
    1. Face BRANCA para cima;
    2. Procurar uma peça do CANTO BRANCA na face AMARELA ou 3ª CAMADA;
    3. Posicionar a peça em baixo (posição oposta(NA face AMARELA)) a posição que ela tem que ficar;
    4. Aplicar a fórmula ( R’ D’ R D ) até 5 vezes;
  3. Montar a 2ª CAMADA:
    1. Face AMARELA para cima;
    2. Procurar na 3ª CAMADA uma peça do MEIO que não tenha a cor AMARELA;
    3. Verificar a posição na 2ª CAMADA onde esta peça se encaixa;
    4. Alinhar a peça com o CENTRO da COR de sua face;
    5. Verificar qual lado da COR do CENTRO esta peça se encaixa;
    6. ESQUERDO:
      1. Aplicar a fórmula ( U’ L’ U’ L U F U F’ );
    7. DIREITO:
      1. Aplicar a fórmula ( U R U R’ U’ F’ U’ F );
  4. Montar a CRUZ da face AMARELA:
    1. Face AMARELA para cima;
    2. Regra_A: Deixar uma peça AMARELA do MEIO à esquerda e outra peça do MEIO AMARELA para frente (na 3ª CAMADA)
    3. Aplicar a fórmula ( F U R U’ R’ F’ ) sem se preocupar com o alinhamento das cores com os CENTROS até formar a cruz. Sempre respeitando a Regra_A;cubo1
  5. Alinhar a CRUZ da face AMARELA aos centros das CORES:
    1. Face AMARELA  para cima;
    2. Verificar na  CRUZ se existem peças com alinhamento CORRETO entre cores opostas;
    3. SIM:
      1. Escolher uma das cores opostas e alinhar ao seu CENTRO;
      2. Aplicar a fórmula ( R U R’ U R U2 R’ )  2 vezes;
    4. NÃO:
      1. Posicionar o cubo com as peças da CRUZ e MEIOS errados À ESQUERDA e para a FRENTE;
      2. Aplicar a fórmula ( R U R’ U R U2 R’ );
    5. Aplicar a fórmula ( U ) até que todas as peças da CRUZ estejam alinhadas com as cores do CENTRO correspondentes;
  6. Alinhar os cantos da face AMARELA (podendo ficar com o posicionamento das peças invertido):
    1. Face AMARELA para cima;
    2. Mantenha a CRUZ com as cores alinhadas aos seus CENTROS;
    3. Procurar uma peça  DO CANTO AMARELA na posição CORRETA que esteja com as cores invertidas;
    4. NENHUM CANTO CORRETO:
      1. Aplicar a fórmula ( U R U’ L’ U R’ U’ L ) para um canto ficar CORRETO;
    5. PELO MENOS UM CANTO CORRETO:( mesmo com as cores invertidas)
      1. Segurar o CUBO com a peça do canto alinhada à DIREITA do CUBO;
      2. Aplicar a formula ( U R U’ L’ U R’ U’ L )  até todas as peças dos CANTOS ficarem nas posições corretas (mesmo com as cores invertidas);
  7. Finalizar o CUBO ajustando o posicionamento das peças corretamente
    1. Escolher um canto correto na 3ª CAMADA;
    2. Posicionar o CUBO com o canto escolhido alinhado à DIREITA;
    3. Aplicar a fórmula ( R’ D’ R D ) (SEM MUDAR O POSICIONAMENTO DO CUBO);
    4. Quando a peça do canto à DIREITA estiver correta aplique a fórmula ( U);
    5. Repita os dois últimos passos até que todas as peças dos cantos estejam posicionadas corretamente;
    6. Quando todas as peças estiverem posicionadas corretamente aplique a fórmula ( U) para alinhar a 3ª CAMADA aos centros das cores.

cubo3Espero que ajude pelo menos como um início, depois existem vários outros algoritmos na WEB para conseguir montar mais rápido. Deixem um comentário  e dicas caso tenham.

Um grande abraço!

Sistemas Operacionais e Mercado de trabalho

O sistemas operacionais são utilizados por muitos de nós todos os dias, mas poucas pessoas sabem a importância do sistema operacional para atividades realizadas através do computador, tablet ou celular. Irei linkar uma apresentação que resume os fundamentos de sistemas operacionais e a sua influência no mercado de trabalho. Um grande abraço! //pt.slideshare.net/slideshow/embed_code/key/mPYh2sS5bSxyyU <div style=”margin-bottom:5px”> href=”//pt.slideshare.net/CCCarl/sistemas-operacionais-e-apresentacao-prof-carledwin” title=”Sistemas Operacionais e Mercado de Trabalho” target=”_blank”>Sistemas Operacionais e Mercado de Trabalho from Carl Edwin Antonio Nascimento “>//pt.slideshare.net/slideshow/embed_code/key/mPYh2sS5bSxyyU

Manipulação de arquivos XML com JAXB – Marshaller e UnMarshaller

No post de hoje irei falar sobre JAXB(Java Architecture for XML Binding), uma API da plataforma JAVAEE que dá suporte à manipulação de objetos XML e JAVA. Auxilia na vinculação de objetos XML e JAVA. Com essa API é possível criar classes a partir de um XSD.

Para criarmos um XML a partir de um objeto java utilizamos a interface Marshaller e para transformar arquivos XML em objetos java a interface Unmarshaller.

Para este post foi criado um projeto com a seguinte estrutura.

estrutura_projeto

No post de hoje criaremos um arquivo XML a partir de um objeto java.

Crie um POJO Usuario anotado com @XMLRootElement indicando que a classe representa um elemento XML principal e @XmlAccessorType(XmlAccess.FIELD) responsável por definir onde as anotações devem ser interpretadas, neste caso nos atributos de classe.

Anote os atributos de classe com @XmlElement indicando que os mesmos são subElementos do elemento principal.

Anote o atributo de classe codigo do elemento principal Usuario com @XmlAttribute  para representar um atributo dentro do mesmo.

Um dos atributos de classe será uma lista de endereços, anotado com @XmlElement e @XmlElementWrapper para encapsular a lista.

package com.wordpress.carledwinj.projetoXML.pojo;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Usuario {

@XmlAttribute
private Long codigo;

@XmlElement
private String nome;

@XmlElement
private Long idade;

@XmlElementWrapper(name=”lista-enderecos”)
@XmlElement(name=”endereco”)
private List<Endereco> enderecos;

public Usuario() {}

public Usuario(Long codigo,String nome, Long idade, List<Endereco> enderecos) {
this.codigo = codigo;
this.nome = nome;
this.idade = idade;
this.enderecos = enderecos;
}

// getters and setters

}

Será criado também um POJO Endereco para representar endereço do Usuario . Iremos anotar este POJO com @XmlAccessorType(XmlAccess.FIELD) apenas. Não será anotado com @XMLRootElement pois não será um elemento principal.

package com.wordpress.carledwinj.projetoXML.pojo;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Endereco {

@XmlElement
private String logradouro;

@XmlElement
private String bairro;

@XmlElement
private String cidade;

@XmlElement
private String pais;

@XmlElement
private Long numero;

public Endereco() {}

public Endereco(String logradouro, String bairro, String cidade, String pais, Long numero) {
this.logradouro = logradouro;
this.bairro = bairro;
this.cidade = cidade;
this.pais = pais;
this.numero = numero;
}

// getters and setters

}

Agora será criado o bean responsável por realizar a conversão do objeto java para XML.

package com.wordpress.carledwinj.projetoXML.sessionbean;

import java.io.File;
import java.io.FileNotFoundException;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import com.wordpress.carledwinj.projetoXML.pojo.Usuario;

/**
*
* @author CarlEdwin
*
*/
@Stateless
@LocalBean
public class Marshalling {

public Marshalling() {}

public static File marshalling(Usuario usuario, String filePath) throws JAXBException, FileNotFoundException{

JAXBContext context = JAXBContext.newInstance(Usuario.class);

Marshaller marshaller = context.createMarshaller();

File file = new File(filePath);

marshaller.marshal(usuario, file);

return file;
}

}

Criaremos agora uma classe de teste para gerar o arquivo XML.

package com.wordpress.carledwinj.projetoXML.test;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXBException;

import com.wordpress.carledwinj.projetoXML.pojo.Endereco;
import com.wordpress.carledwinj.projetoXML.pojo.Usuario;
import com.wordpress.carledwinj.projetoXML.sessionbean.Marshalling;

public class TestMarshaller {

public static void main(String[] args) {

List<Endereco> enderecos = new ArrayList<>();
enderecos.add(new Endereco(“Rua Santos Silva”, “Jardim Miranda”, “Americana”, “Brasil”, 343L));
enderecos.add(new Endereco(“Rua Doutor Miguel”, “Cidade das Flores”, “Osasco”, “Brasil”, 976L));

Usuario usuario = new Usuario(45L,”Marcos”, 27L, enderecos);

try {
Marshalling.marshalling(usuario, “usuario.xml”);
} catch (FileNotFoundException | JAXBException e) {
System.out.println(“Erro ao tentar gerar o xml.” );
e.printStackTrace();
}
}
}

Para realizar o teste, utilizei o WildFly 8.2.

servidor
Execute a classe teste para gerar o arquivo XML.

Já com o arquivo usuario.xml criado (localizado no classPath () do projeto, atualize o projeto para vê-lo) iremos copia-lo renomeando como novo_usuario.xml, altere os dados do usuario no arquivo copiado.

Será criada o bean de leitura de um arquivo XML e conversão para objeto java.

package com.wordpress.carledwinj.projetoXML.sessionbean;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import com.wordpress.carledwinj.projetoXML.pojo.Usuario;

/**
*
* @author CarlEdwin
*
*/
@Stateless
@LocalBean
public class UnMarshalling {

public UnMarshalling() {}

public static Usuario unMarshalling(String filePath) throws JAXBException, FileNotFoundException{

JAXBContext context = JAXBContext.newInstance(Usuario.class);

Unmarshaller unMarshaller = context.createUnmarshaller();

FileInputStream fileInputStream = new FileInputStream(filePath);

return (Usuario) unMarshaller.unmarshal(fileInputStream);
}

}

Criaremos então classe de teste de converão de arquivo XML para objeto java.

package com.wordpress.carledwinj.projetoXML.test;

import java.io.FileNotFoundException;

import javax.xml.bind.JAXBException;

import com.wordpress.carledwinj.projetoXML.pojo.Endereco;
import com.wordpress.carledwinj.projetoXML.pojo.Usuario;
import com.wordpress.carledwinj.projetoXML.sessionbean.UnMarshalling;

public class TestUnMarshalling {

public static void main(String[] args) {

try {
Usuario usuario = UnMarshalling.unMarshalling(“novo_usuario.xml”);

System.out.println(“Usuario ” );
System.out.println(“Codigo: ” + usuario.getCodigo());
System.out.println(“Nome: ” + usuario.getNome());
System.out.println(“Idade: ” + usuario.getIdade());
System.out.println(“Lista de enderecos: “);
for (Endereco endereco : usuario.getEnderecos()) {
System.out.println(” Logradouro: ” + endereco.getLogradouro() );
System.out.println(” Numero: ” + endereco.getNumero() );
System.out.println(” Bairro: ” + endereco.getBairro() );
System.out.println(” Cidade: ” + endereco.getCidade() );
System.out.println(” País: ” + endereco.getPais() +”\n” );
}

} catch (FileNotFoundException | JAXBException e) {
System.out.println(“Erro ao tentar ler arquivo xml externo.”);
e.printStackTrace();
}
}
}

Para realizar o teste, reinicie o servidor.

servidor

Execute a classe teste para gerar o arquivo XML.

De acordo com os testes realizados podemos observar que os passos para o Marshaller e UnMarshaller são simples.

O caminho para acessar o projeto na integra é https://github.com/carledwin/projetoXML .

Espero que tenham gostado.

Deixe uma opinião, sugestão ou dúvida.

Um grande abraço e até o próximo post!