Criando um Menu Dropdown com CSS

Se quiser ler esse post em inglês, acesse: http://codepen.io/sheldonled/blog/menu-dropdown-css-3levels

É muito comum ver sites utilizando menu dropdown, mesmo que este tipo de menu seja um pouco difícil de lidar quando vamos pro mundo mobile. Se você quer um menu desses no seu site, siga os passos abaixo e crie seu próprio menu dropdown, utilizando apenas CSS.

Primeiro, defina seus links no HTML, para nosso exemplo, usaremos a tag nav do HTML5

<nav>
	<ul>
		<li><a href="#">Inicio</a></li>
		<li><a href="#">Tutoriais</a>
			<ul>
				<li><a href="#">Php</a></li>
				<li><a href="#">Java</a></li>
				<li><a href="#">SQL</a>
                                     <ul>
                                          <li><a href="#">PostgreSQL</a></li>
                                          <li><a href="#">MySql</a></li>
                                     </ul>
                                </li>
			</ul>
		</li>
		<li><a href="#">Redes Sociais</a>
			<ul>
				<li><a href="#">Facebook</a></li>
				<li><a href="#">Twitter</a></li>
			</ul>
		</li>
		<li><a href="#">Sobre</a></li>
	</ul>
</nav>

Então veja que o mapa do menu ficou da seguinte maneira:

  • Inicio
  • Tutoriais
    • Php
    • Java
    • SQL
      • PostgreSQL
      • MySql
  • Redes Sociais
    • Facebook
    • Twitter
  • Sobre

Agora, visualizando como ficou a hierarquia de links, passamos para o CSS (Lembrando que tudo pode ser recustomizável para adequar ao seu layout):

ul {
    position: absolute;
    margin: 0;
    list-style:none;
}

li {
    display: inline-block;
    padding: 5px 10px;
    position: relative;
}

Setamos a configuração inicial para todas as listas (ul) e seus elementos (li). O position absolute dá uma independência às listas e sublistas. Agora vamos ao estilo-chave do menu

li:hover > ul {
    display: block;
}

Estamos falando para o navegador que, ao passar o mouse sobre um item da lista (li), sua sublista ( >ul) será mostrada (display block). Mas para isso acontecer, precisamos deixa-las invisíveis (display none).

ul ul {
    position: absolute;
    display: none;
    margin: 0;
    padding: 5px 10px;
}
ul ul li {
    display: block;
}

Agora sim, nosso menu já estará funcionando, porém se quiser fazer o terceiro nível funcionar corretamente, é melhor adicionar o estilo abaixo:

ul ul ul {
    position: absolute;
    top: 0;
    left: 100%;
}

O código acima faz o 3º nível do submenu aparecer ao lado do item pai dele. Veja o resultado abaixo.

See the Pen Cfqmb by Sheldon Led (@sheldonled) on CodePen.

Criando uma ConnectionFactory java com Xml

A maioria das aplicações trabalha com persistência de dados, ou seja, é necessário Gravar, Recuperar, Alterar e Deletar dados em algum Banco de Dados. Para essas 4 operações básicas é usada a sigla CRUD (Create, Read, Update, Delete) e é necessário uma conexão com o banco de dados para realizá-las. Para isso, é sempre criada uma classe com método(s) de Fábrica de Conexão (Connection Factory) e o código para isso fica parecido com o código mostrado na imagem abaixo:

Connection Factory

Os dados necessários para uma conexão com o banco são:

  • Usuário;
  • Senha;
  • URL de conexão;
  • Banco de Dados;

Porém, no exemplo da imagem acima, essas configurações ficam amarradas ao código, sendo necessário reescrever a classe e recompilar o programa a cada vez que qualquer um desses dados é alterado. Então a melhor sugestão seria criar um arquivo de configuração externo ao programa que mantem esses dados. Para isso utilizaremos dos recursos das classes: java.util.Properties, java.io.FileInputStreamjava.io.FileOutputStream.

Primeiro, criaremos uma classe que cuidará dessa parte, podemos nomeá-la JdbcConnection:

public class JdbcConnection {
private String user;
private String passwd;
private String url;
private String database;
//Criar getters e setters
}

Como o arquivo de configuração ainda não existe, teremos que criar, dentro da classe JdbcConnection um método para criação do arquivo Xml utilizando um objeto Properties:

    public void setProps(){
        Properties props = new Properties();

        props.setProperty("jdbc.user", "postgres");
        props.setProperty("jdbc.passwd", "senha");
        props.setProperty("jdbc.url", "jdbc:postgresql://localhost:5433");
        props.setProperty("jdbc.dataBase","banco");

        try {
            FileOutputStream fos = new FileOutputStream("config.xml");
            props.storeToXML(fos, "FILE JDBC PROPERTIES:","ISO-8859-1");
            fos.close();

        }catch (IOException e){
            System.out.println(e.getMessage());
        }

    }

Assim, será criado um arquivo parecido com esse:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>FILE JDBC PROPERTIES:</comment>
<entry key="jdbc.passwd">error#404</entry>
<entry key="jdbc.url">jdbc:postgresql://localhost:5433</entry>
<entry key="jdbc.user">postgres</entry>
<entry key="jdbc.dataBase">ponto</entry>
</properties>

Através das informações contidas nesse arquivo, iremos preencher os atributos de um objeto JdbcConnection, e para isso criamos o método abaixo:

    public void getProps (){
        Properties props = new Properties();

        try {
            //Setamos o arquivo que será lido
            FileInputStream fis = new FileInputStream("config.xml");
            //método load faz a leitura através do objeto fis
            props.loadFromXML(fis);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        //Captura o valor da propriedade, através do nome da propriedade(Key)
        this.setUser(props.getProperty("jdbc.user"));
        this.setPasswd(props.getProperty("jdbc.passwd"));
        this.setUrl(props.getProperty("jdbc.url"));
        this.setDatabase(props.getProperty("jdbc.dataBase"));

    }

E para finalizar, o nosso método de Conexão ficaria mais ou menos dessa forma:

    public static Connection getConnection(){
        Connection con = null;
        try {
            JdbcConnection jdbc = new JdbcConnection();
            jdbc.getProps();
            if (jdbc.getUrl() == null) {
                jdbc.setProps();
                jdbc.getProps();
            }

            con = (Connection) DriverManager.getConnection(jdbc.getUrl() + "/" + jdbc.getDatabase(), jdbc.getUser(), jdbc.getPasswd());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return con;
    }

Note que é preciso testar se o arquivo existe, para que os atributos do objeto jdbc não venham vazios. A maneira mais prática e didática que veio na minha mente foi testar se algum dos atributos ainda está nulo mesmo depois da chamada jdbc.getProps(); e, caso esteja nulo, chamo jdbc.setProps(); com as configurações “amarradas” no código-fonte do seu sistema. Porém, depois do arquivo gerado é possível alterar sem problemas.

6 dicas para efetuar uma compra online segura

Faltando menos de um mês para o Natal, os brasileiros estão em plena jornada de compras. Para fugir das filas, lojas lotadas e do risco de não encontrar o produto esperado, a cada ano que passa é maior o número de consumidores que optam pela comodidade das compras online. Um levantamento da e-bit, empresa especializada em informações de comércio eletrônico, aponta que este ano o varejo online brasileiro deve faturar cerca de R$3,25 bilhões só no período do Natal, um crescimento de 25% em relação a 2011. Na ansiedade de fechar uma boa compra, porém, muitos internautas acabam se esquecendo de um item essencial para a garantia de um bom negócio: a segurança.

 

Para evitar futuras dores de cabeça, dicas básicas ajudam a garantir uma compra online segura. “Hoje, é preciso ter cuidado não somente com o ambiente virtual, mas com o próprio meio pelo qual a compra está sendo realizada. Em um mundo onde cada vez mais a mobilidade é realidade, a tendência é que haja um aumento nas compras realizadas também por meio de smartphones e tablets, e esses dispositivos também devem estar seguros”, afirma Patrick Faria, especialista da empresa de Segurança da Informação Módulo.

 

Algumas dicas vão além do aspecto tecnológico, como desconfiar de promoções muito tentadoras e ler todas as informações da oferta anunciada. Para compras na internet, o especialista ressalta que, seguindo apenas algumas dicas básicas, listadas abaixo, já é possível diminuir consideravelmente a chance de cair em uma armadilha virtual.

Dicas ao consumidor:

 

1) Delete e-mails que chegam para você com propagandas não solicitadas, de modo a evitar alguma possível contaminação da sua máquina por vírus.

 

2) Escolha lojas que você conheça e apresentem o mesmo nível de qualidade nos ambientes físico e virtual.

 

3) Ao entrar no site, verifique se todos os links funcionam corretamente. Muitos fraudadores lançam mão de cópias de páginas reais e nestas páginas clonadas a maior parte dos links não funciona.

 

4) Verifique se existe um cadeado no rodapé da página. Clique nesse cadeado para verificar a existência de um certificado digital válido, que indica que a empresa onde você está fazendo a compra segue os preceitos legais da internet no Brasil para compras online.

 

5) Certifique-se de que está trabalhando em um ambiente seguro sempre que for inserir informações do seu cartão de crédito ou dados pessoais, como CPF. Empresas de certificação digital possuem bandeiras disponíveis em links na página da compra. Clique nesses links para verificar se estão abrindo corretamente. Assim, é possível ter mais garantia de que as informações que você disponibilizou serão protegidas e não serão utilizadas por outras pessoas.

 

6) Garanta a segurança do seu dispositivo móvel. Instale somente aplicativos confiáveis, preferencialmente de lojas oficiais, habilite a função Bluetooth somente durante o período em que for utilizado e não modifique o sistema, evitando procedimentos de desbloqueio não oficiais, como o “Jail Break” do iPhone e versões modificadas de “firmware” (sistema operacional do smartphone ou tablet). Além de causarem a perda da garantia, essas alterações podem incluir vírus ou programas que permitam o controle remoto do seu aparelho, como – roubo de informações da lista de contatos, envio das coordenadas geográficas do dispositivo e envio de fotos tiradas naquele dispositivo.

 

fonte: Assessoria de Imprensa da Módulo