Artigos recentes
Inicio » Informativo
Mostrando postagens com marcador Informativo. Mostrar todas as postagens
Mostrando postagens com marcador Informativo. Mostrar todas as postagens
sábado, 17 de março de 2018
No artigo de hoje vamos falar não só de uma, mas sim de três versões do Java, a versão 9 (e os módulos), as melhorias da versão 10 e a futura versão 11. Este artigo é apenas para apresentar mudanças e não ensinar todos os aspectos delas.
Java 9
O Java 9 trouxe muitas melhorias, concatenação dinâmica de string, API de processos, cliente HTTP 2 (incubado, falarei disto também), Stack-Walking API, métodos privados em interfaces, métodos factory em coleções e o mais importante, sistema de módulos (Projeto Jigsaw).
Concatenação dinâmica de string
No Java 9, as concatenações de string, ou seja, isto:
"Seu nome é: " + person.getName() + ", e seu email: " + person.getEmail();
agora é compilado para um código dinâmico, ao invés de estático, mas o que muda com isto? Em relação a código Java, nada, você continua escrevendo a mesma coisa e recebendo os mesmo resultados, mas na prática, o desempenho deste código poderá ser melhorado com mudanças na máquina virtual Java, ao invés de apenas serem perceptíveis ao recompilar o código, como era antes do Java 9.
API de processos
No Java 9 agora temos uma nova API de processos, muitas coisas foram adicionadas nas classes existente e novas classes foram introduzidas, como a ProcessHandle. Com a nova API, você pode obter informações que antes não eram possíveis, como o id do processo (PID), processos filho, processo pai, argumentos, usuário, tempo na cpu, momento de inicialização, e até fechar o processo de forma natural ou forçada.
Cliente HTTP 2
O novo cliente de HTTP tem suporte ao HTTP/2, com autenticação, gerenciador de cookies, SSL, Proxy, classe para respostas de pedidos, etc... Veja a documentação da API.
Esta feature foi adicionada como incubação, o que isto quer dizer? É uma API que está em desenvolvimento mas foi exposta aos desenvolvedores por meio de um módulo de incubação, este módulo não é importado por padrão e as classes nele vão deixar de existir em futuras versões, seja porque foram descartadas, ou porque foram liberadas e movidas para outro modulo.
Stack-walking API
Esta nova API tem o propósito de tornar mais simples o ato de caminhar na stack, ou seja, conseguir inspecionar e encontrar os elementos da stack do Thread atual, os elementos estão ordenados do topo (sendo os primeiros elementos da stream) ao fundo (sendo os últimos elementos da stream).
Milling Coin e factory methods em coleções
Agora podemos declarar métodos privados em interfaces (teoricamente, já era possível desde o Java 8, com os lambdas dentro de métodos default), isto vai ajudar a diminuir códigos duplicados em métodos default em interfaces, permitindo a funcionalidade ser movida para um outro método sem ter que expor ele a quem irá consumir a API.
Agora também temos a possibilidade de anotar métodos privados com @SafeVarargs, usar o operador diamante (<>) em classes anonimas e também podemos usar variáveis efetivamente finais no try-with-resources, exemplo:
Resource res = openResource(...);
Resource res2 = openResource(...);
try (res; res2) {
...
}
Além disso, o underscore ('_') agora é uma 'palavra' reservada, ou seja, você não poderá usar ele como identificador.
Agora também temos métodos factory em coleções, como List.of, Set.of, Map.of, mas tenha em mente que a coleção retornada por estes métodos são imutáveis, diferente das coleções retornadas pelo Collections, que normalmente são visualizações de outras coleções, visualizações nas quais, em alguns casos, seus métodos de modificação não refletem na listas originais, mas sim lançam uma exceção.
Spin-wait hints
Este recurso foi adicionado com o propósito de diminuir latência e consumo de energia em threads com spin loop. Spin loops são loops que são executados a todo momento enquanto esperam um trabalho ser finalizado por outro thread, sabe aquele while (foo.isRunning()) Thread.sleep(100);, então, ao invés de usar Thread.sleep ou algo similar (ou simplesmente só o while), você poderá usar Thread.onSpinWait, que faz com que o Thread espere alguma atividade terminar para continuar trabalhando, isto também abre portas para a JVM otimizar este código e determinar até quando o Thread deve aguardar.
Outras mudanças
Também houve várias outras mudanças, como G1GC tornar-se o coletor padrão, suporte a Unicode 7.0 ,8.0 e UTF-8 em arquivos de propriedades, Javadoc em HTML5, novo formato de string de versão, pipeline de anotações 2.0, e muitas outras que você pode ver aqui.
Sistema de módulos e o famoso Jigsaw
Finalmente chegamos aonde importa (na verdade todas as mudanças importam, mas essa importa mais): o sistema de módulos e o projeto Jigsaw. Com o sistema de módulos, partes do seu sistemas podem ser separadas em módulos, o que permite um melhor desenvolvimento, já que você poderá trabalhar com os módulos separadamente (até mesmo com equipes separadas) e testar seu sistema com estes módulos mesmo que os demais não estejam prontos (contanto que os módulos dependentes estejam prontos), também permite melhor escalabilidade, segurança (com encapsulamento forte) e que a JVM faça melhores otimizações de performance. Também tivemos a extensão do sistema de serviços, agora é possível prover e requisitar serviços por meio da declaração do módulo.
Também foram introduzidas novas ferramentas para construir uma máquina virtual com apenas alguns módulos (jlink), isto é perfeito para aplicações standalone, você não precisará mais ter uma aplicação com 190MB da JVM e 1MB da aplicação em si, você poderá ter uma JVM com a aplicação com apenas ≃20MB (diminui pela metade com compressão).
Também tivemos algumas mudanças que quebraram compatibilidade, como por exemplo, o fato do ClassLoader da aplicação não ser mais um URLClassLoader.
Você deve estar se perguntando, e o Jigsaw? (Ou não né). O Jigsaw é o projeto que engloba todo o sistema de módulos: a modularização da própria plataforma Java, as novas ferramentas, o encapsulamento das APIs internas, e etc...
Também foram introduzidas novas ferramentas para construir uma máquina virtual com apenas alguns módulos (jlink), isto é perfeito para aplicações standalone, você não precisará mais ter uma aplicação com 190MB da JVM e 1MB da aplicação em si, você poderá ter uma JVM com a aplicação com apenas ≃20MB (diminui pela metade com compressão).
Também tivemos algumas mudanças que quebraram compatibilidade, como por exemplo, o fato do ClassLoader da aplicação não ser mais um URLClassLoader.
Você deve estar se perguntando, e o Jigsaw? (Ou não né). O Jigsaw é o projeto que engloba todo o sistema de módulos: a modularização da própria plataforma Java, as novas ferramentas, o encapsulamento das APIs internas, e etc...
Mudanças importantes
Como disse anteriormente, o Java 10 não virá com o Valhalla, tivemos grandes mudanças não só no Java como também no modelo de lançamento, agora o Java será lançado de 6 em 6 meses com menores quantidades de novidades; e como o projeto Valhalla é um projeto que ainda não está pronto então ele não será incluído no Java 10, e talvez nem mesmo no 11 (provavelmente, com sorte, no 12 ou 13). Além disso, teremos suporte por tempo limitado, assim que sair o Java 10 (que está perto, 20/03), provavelmente não teremos mais atualizações para o Java 9 depois de um tempo, e quando sair o 11, não teremos mais atualizações para o 10, mas não se preocupe, o Java 8 é LTS, então terá suporte até 2019 ou 2020 (ou mais tempo), e o Java 11 será uma LTS também, porém o tempo de suporte ainda será divulgado em setembro¹.
E falando em suporte, a Oracle irá parar de dar suporte gratuito a Oracle JDK (hora de mudar para outra JDK com a OpenJDK, Eclipse OpenJ9, Zulu. Fique a vontade, ou você pode pagar pelo suporte da Oracle JDK).
Java 10
Temos a omissão do tipo de variável por meio do var, ele poderá ser usado na declaração de variáveis no lugar do tipo, e ficará a cargo do compilador inferir o tipo da variável, exemplo:
Predicate<User> isEmailValidated = User::isEmailValidated; var users = userManager.getOnlineUsers().stream().filter(isEmailValidated.negate()).collect(Collectors.toList()); // List<User> var names = users.stream().map(User::getUserName).collect(Collectors.toList()); // List<String>
Isto tornará os códigos mais legíveis (ou menos, depende de como você usar), porém note que para o caso do predicado foi necessário especificar o tipo explicitamente, isto também acontecerá com métodos genéricos, operador diamante ou array sem tipo explicito (tipo var x = {1, 2}; não é possível, mas var x = int[]{1, 2}; é possível). Entretanto, diferente de outras linguagens de programação aonde você pode utilizar outra palavra, como o val, para declaração de variável final, isto não foi incluso no Java 10, mesmo após altos números a favor.
Parecido com o invokedynamic, mas para constantes, removendo assim alguns limites do invokedynamic e dando mais suporte ainda a linguagens dinâmicas e abrindo mais portas para melhorias de desempenho (tanto da linguagem Java quando de linguagens dinâmicas).
Um novo coletor de lixo que não coleta lixo (que?), este coletor de lixo irá gerenciar o alocamento de memória, mas não irá reivindicar a memória, se o memória ficar cheia a JVM irá ser fechada. Este coletor poderá ser usado para testes de desempenho, já que ele irá afetar o minimo possível o desempenho (isso se não afetar nada), poderá ser usado para testar a pressão na memória, também para tarefas rápidas onde o tempo de vida da máquina virtual é pequeno, ou até mesmo para aplicações que são muito sensitivas a latência; eu que não gostaria do GC coletando o lixo bem na hora que o piloto automático deveria fazer uma curva, brincadeiras a parte, este novo coletor será muito útil para vários outros propósitos.
Para quem ta por fora, o Java EE não é mais um projeto da Oracle, agora é um projeto da Eclipse, e alias, foi renomeado para Jakarta EE.
Mas bom, o motivo da remoção não é esse, mas sim porque o Java EE era entregado juntamente ao Java SE apenas por conveniência, tanto Java EE como CORBA serão removidos, se você precisar deles, bom, já sabe, terá de incluir as bibliotecas deles na sua aplicação (alias, alguém usa ou tem interesse em usar CORBA?).
Outras mudanças
Tivemos também a interface do coletor de lixo, coleção de lixo totalmente paralela para o G1, compartilhamento dos dados de classe da aplicação, remoção do javah, etc.. Veja todas aqui.
O que esperar do Java 11
Com o Java 10 próximo de ser lançado (dia 20/03), já temos uma ideia do que teremos na versão subsequente:
Constantes dinâmicas
Parecido com o invokedynamic, mas para constantes, removendo assim alguns limites do invokedynamic e dando mais suporte ainda a linguagens dinâmicas e abrindo mais portas para melhorias de desempenho (tanto da linguagem Java quando de linguagens dinâmicas).
Epsilon - um novo coletor
Um novo coletor de lixo que não coleta lixo (que?), este coletor de lixo irá gerenciar o alocamento de memória, mas não irá reivindicar a memória, se o memória ficar cheia a JVM irá ser fechada. Este coletor poderá ser usado para testes de desempenho, já que ele irá afetar o minimo possível o desempenho (isso se não afetar nada), poderá ser usado para testar a pressão na memória, também para tarefas rápidas onde o tempo de vida da máquina virtual é pequeno, ou até mesmo para aplicações que são muito sensitivas a latência; eu que não gostaria do GC coletando o lixo bem na hora que o piloto automático deveria fazer uma curva, brincadeiras a parte, este novo coletor será muito útil para vários outros propósitos.
Remoção dos módulos Java EE e CORBA
Para quem ta por fora, o Java EE não é mais um projeto da Oracle, agora é um projeto da Eclipse, e alias, foi renomeado para Jakarta EE.
Mas bom, o motivo da remoção não é esse, mas sim porque o Java EE era entregado juntamente ao Java SE apenas por conveniência, tanto Java EE como CORBA serão removidos, se você precisar deles, bom, já sabe, terá de incluir as bibliotecas deles na sua aplicação (alias, alguém usa ou tem interesse em usar CORBA?).
Sintaxe para variáveis locais de lambdas
Eis algo que incrementará a sintaxe Java, mas nada muito grande, esta mudança permitirá a utilização do var nas declarações de variáveis de lambdas, permitindo assim a adição de anotações sem perder a brevidade das declarações lambdas. Exemplo:
Function<String, Integer> toInteger = (@NotNull var s) -> Integer.parseInt(s);
Bom era apenas isso, se houver mais novidade com relação ao Java 11 farei um outro artigo. Obrigado por ler :D Atualizações do mundo Java
domingo, 15 de novembro de 2015
Se você planeja entrar no mundo Linux, ou acabou de entrar, este artigo terá o proposito de te ajudar.
Primeiramente, o que é Linux? Muitas pessoas usam o termo Linux para designar o sistema em si, mas na verdade Linux é somente um núcleo (Kernel), o núcleo é responsável por fazer a comunicação entre o Hardware (parte física) e o Software (parte lógica). Geralmente o sistema operacional que carrega o Kernel Linux é o GNU, um exemplo de sistema que não é GNU e carrega o Kernel Linux é o Android, que contém bem poucas coisas do GNU, e não chega a nível de ser considerado GNU.
* Enfim, a pronuncia correta é GNU/Linux pois os sistemas são baseados no GNU, com exceção alguns. Porém neste artigo vou usar o termo Linux para facilitar o entendimento.
Porque usar Linux?
O correto seria, porque EU deveria usar Linux? pois depende da necessidade do usuário.
Vou citar alguns motivos relevantes: Segurança, Estabilidade, Comunidade Ampla, Diversidade de Sistemas*, Diversidade de Interfaces Gráficas, Desempenho.
Estabilidade e desempenho não é a mesma coisa, isto é óbvio, mas usuários mais leigos podem não saber diferenciar muito bem, um sistema estável é um sistema com poucas falhas (não digo nenhuma pois nada é perfeito, todos sistemas operacionais tem falhas), um sistema que não irá dar erro enquanto você está terminando o seu trabalho que demorou 5 horas para fazer. Um sistema com bom desempenho é um sistema que não irá travar enquanto você via um vídeo muito interessante, ou abria um programa e precisava que ele abrisse o mais rápido possível.
* Ou seja, desempenho = velocidade, estabilidade = livre de erros (ou quase livre).
Porque o asterisco no Diversidade de Sistemas? Simplesmente pois isto é tanto uma vantagem como desvantagem, as ramificações do Linux divide um pouco a comunidade (apesar dela geralmente ter conhecimento amplo de vários sistemas), e dificulta a escolha entre qual supri melhor suas necessidades.
Antes de começarmos a falar das distribuições, e qual melhor se adaptaria a um certo tipo de usuário, vamos lembrar uma coisa, Linux não é Windows, então muitos programas poderão não estar presentes no Linux, há uma forma de emular, que falarei em outro artigo, também há programas parecidos, que podem suprir suas necessidades.
Vejamos alguns programas que há no Windows e estão presente no Linux:
Principais navegadores como: Chrome/Chromium, Firefox, Opera.
Principais programas de comunicação como: Skype, TeamSpeak.
E outros como: Spotify, VLC, etc..
Programas substitutos a outros:
Office: Microsoft Office - LibreOffice
Editor de imagens: Photoshop - GIMP
Editor de videos: Adobe Premiere - Cinelerra
Gerenciadores de Torrent: uTorrent - Transmission
Entre outros...
Mas se você é gamer, sinto muito lhe dizer, mas nem todos jogos estão presente no Linux (digamos que uma pequena parcela está presente), um exemplo: League Of Legends não está presente no Linux, e até o momento não planeja vir ao pinguim, mas existem vários jogos na Steam.
Distribuições
O Linux tem uma variedade grande de distribuições, as distribuições são vários sabores (ou versões) diferentes do Linux, cada distribuição é voltada para um tipo de usuário, algumas voltadas a usuários leigos, outras para usuários mais simples, que querem um sistema com softwares(programas) básicos, como navegador, editor de documentos (office), etc... Já outros, são voltados a usuários mais avançados.
Linux Mint: Uma interface amigável, se você está migrando do Windows, recomendo começar pelo Linux Mint. Linux Mint é baseado no Ubuntu, e é voltado aos usuários iniciantes.
Ubuntu: Não vem com uma interface muito amigável para usuários leigos, mas também não tem muito segredo, é um sistema voltado aos usuários iniciantes.
OpenSUSE: A escolha da interface fica a seu critério, eu recomendo a KDE. Este sistema tem uma das melhores ferramentas de configuração, e voltado aos iniciantes.
Fedora: Não é um sistema difícil, porém, é voltada a desenvolvedores, e a usuários de diversos tipos, não chega a ser para iniciantes, mas não fica longe disto.
Manjaro: Baseada no Arch Linux, é uma distribuição simples, você pode escolher a interface gráfica que achar melhor, ela é voltada ao usuário que não conhece muito sobre Linux e que deseja ter a simplicidade do Arch Linux.
Quer algo mais... difícil? Para aprender mesmo a mexer com Linux? Aprender como ele funciona? Que tal tentar o Arch Linux
Arch Linux não vem com instalador, nem interface gráfica, você precisa fazer tudo na mão, desde particionar o disco até instalar os drivers e configurar o sistema.
Como vimos, vários "sabores", porém, isto também tem uma desvantagem, vejamos, Linux Mint é baseado no Ubuntu, que por sua vez, é baseado no Debian, eles compartilham o mesmo tipo de pacote, o deb. OpenSUSE e Fedora compartilham dos pacotes do tipo RPM. E o Manjaro e Arch Linux (Manjaro deriva do Arch Linux), utilizam pacotes PKG, logo, estes pacotes não são compatíveis um com o outro, o que dificulta um pouco, porém, há algumas forma de obter os programas diretamente do seu código fonte, mas nem sempre é necessário.
* Resumindo, distribuições derivadas compartilham o mesmo pacote, com algumas exceções, e outras distribuições outros tipos de pacotes, o que dificulta um pouco.
Por mais que haja esta divisão, na maioria das vezes, o programa que roda em uma distribuição especifica roda também na outra.
Eu preciso mesmo instalar para testar o sistema?
Não, a maioria disponibiliza um Live CD, que permite testar sem a necessidade de instalar, e você também pode utilizar máquinas virtuais para testar o sistema sem ter que sair do seu atual.
Conclusão
Todo sistema tem suas vantagens e desvantagens, use o que melhor se adapte a você, no Linux temos várias distribuições, cada uma com aspectos distintos, que focam em um certo tipo de usuário.
Importante: Algumas distribuições Linux são mais leves que outras, e você poderá instalar-las em computadores mais fracos (para isto recomendo Arch Linux, ou até mesmo o Manjaro com XFCE). O Linux e a maioria de suas distribuições são código aberto, logo qualquer um pode fazer contribuições e ajudar o projeto, e quando um erro é encontrado é rapidamente corrigido, por isto as atualizações quase diária dos pacotes. O código sendo aberto a qualquer um, todos podem ver o que o sistema faz, e como funciona (é claro, precisa de conhecimento na área de programação)!
Importante²: Não mude de sistema por achar que um é melhor que o outro, ou por simplesmente alguém dizer "é melhor", mude somente se o sistema suprir as suas necessidades, existem sim, sistemas melhores, porém, o melhor é aquele que te oferece todos os recursos que você necessita.
Importante³: Compatibilidade não é defeito e nem qualidade, os sistemas operacionais não são responsáveis por ela, e sim os desenvolvedores, os sistemas operacionais não podem colocar a mão em qualquer programa e torna-lo compatível, geralmente, a falta de compatibilidade é fruto do desinteresse das empresas e desenvolvedores.
Haverá tutorial em vídeo falando sobre tudo isto, e também, um outro ensinando instalar os sistemas (talvez nem todos os listados).
Quer entrar no mundo linux? Conhecer um pouco mais? Veja este artigo!quarta-feira, 30 de setembro de 2015
Será que realmente estamos seguros quando o assunto é senha?
Só quem já foi hackeado sabe como é ter algo roubado, e as até ter danos a sua imagem, mas antes de falarmos sobre senha e sobre os hackers, vou explicar de forma breve a diferença entre hacker e cracker.
- Cracker: Individuo que se aproveita de seu conhecimento sobre tal assunto, e de falhas para ações maléficas, como roubar contas de banco, senhas, etc..
- Hacker: Individuo que utiliza seu conhecimento sobre tal assunto, e de falhas para ações benéficas, como informar e ajudar a corrigir as falhas, criar coisas novas a partir de seu conhecimento, modificar coisas já existentes, etc...
As pessoas confundem muito o termo, pois a imprensa está sempre promovendo o termo hacker como o lado ruim, para você ter uma ideia, quem inventou a lampada foi um hacker, pois usou seus conhecimentos para criar algo inovador, e benéfico.
Como os crackers obtém minha senha?
Existem algumas formas de um cracker obter sua senha
- Criar um vírus que registre tudo o que você digita e envie para ele.
- Aproveitar se de falhas e falta de anti-vírus em seu sistema, quando você acessar aquele site duvidoso ele poderá obter o endereço de seu computador, e com este endereço invadir o computador desprotegido e com falha, e acessar seus arquivos (e até ver sua tela), este processo é mais limitado, mas imagina se você tem fotos/videos íntimos, ou arquivos com dados e senha de sites, banco, etc. Se ele tiver criado um vírus melhor ainda (para ele), poderá colocar o vírus em seu computador sem que você perceba.
- Aproveitar-se de falhas em programas de conversa e outros, este é um pouco mais complicado, imagine se o cracker descobre uma falha no Skype, que permite a invasão em seu computador, ele irá se aproveitar para beneficio próprio, e usando esta falha fazer várias coisas em seu computador (como ver suas lindas fotos, aquelas que você está horrível, ou nu, e postar em redes sociais).
Existe outra forma, que eles utilizam quando não tem outra opção
Existem programas que tentam numero por numero, letra por letras, baseado numa quantidade minima de caracteres.
Um pouco de matematica
Ex:
Quantidade minima de caracteres: 8 (Os sites geralmente dizem que deve-se ter no minimo 8 caracteres, mas isto varia).
O programa irá começar no 00000000 e ir até o 99999999, ou do AAAAAAAA até o ZZZZZZZZ, tentando com as minusculas também, parece pouco? Existem 26 letras, se levar em consideração minusculas e maiúsculas 52, considerando que inicia com 8 caracteres, ele terá que testar 416 caracteres, sem contar com os números, pois a maioria mistura números e letras, com números seriam 496 possibilidades diferentes, isto em uma senha com só 8 caracteres, números e letras, sem símbolos etc. Normalmente levarias aprox 10s (dependendo do computador) para gerar todas as 496 senhas, mas quando o programa precisa fazer o teste da senha em sites para ver se é a correta, isto pode demorar horas, até dias, na melhor das hipóteses, na pior, pode levar de meses até anos principalmente se o site conter um limite máximo de tentativas, isto quando o site não bloqueia a conta na 10-20° tentativa errada.
Então como é feito se isto demora tanto tempo?
Os crackers geralmente compram servidores (computadores especiais que ficam em empresas e podem ser "compradas" (o correto é alugada) e utilizada pelo cliente que as obteve, porém os computadores não saem de lá), estas máquinas geralmente são utilizadas também para "derrubar" sites.
Com estas máquinas e o programa que testa as senhas ele deixa o programa lá e pode sair do computador sem problema algum, pois a máquina está na empresa que presta serviço para ele, mesmo assim, pode demorar muito tempo, porém as máquinas não testam a mesma senha, cada uma trabalha com uma ordem diferente, se não seria inútil, mas um computador só para isto? Quando se trata de senhas de banco, não soa tão... inútil.
Mas, os crackers preferem achar as falhas, pois além de ser mais fácil obter senhas invadindo por meio de falhas, também não terá que desembolsar dinheiro.
Mas porque?
Pois eles são pagos para isto, por pessoas que os contratam, ou porque querem dinheiro, ou até mesmo para se vingar daquela pessoa que não gosta (ou até por diversão, sério).
Senhas
Porque ter senhas fortes?
Lembra quando falei das 496 possibilidades? Imagina uma senha de 16 caracteres (o dobro), porém, com caracteres especiais, além de letras com acentos, números e espaços, os teclados geralmente tem 101-102 teclas, mas ao ver que temos 62 caracteres considerando somente letras maiúsculas e minusculas, e números, então com os acentos e caracteres especiais ultrapassamos os 80, agora calculamos, 80 vezes a quantidade de caracteres da senha (16, 80x16), temos 1280 possibilidades, parece pouco? mas quando se fala de sites que bloqueiam e impede errar as senhas várias vezes isto é um valor muito alto e, o suficiente para uma senha mais do que forte, mas propicio a ser obtida através de vírus.
Cuidados a tomar
- Não abra um arquivo que não sabe se é seguro, em hipótese alguma, mesmo com anti-vírus alguns vírus passam despercebidos.
- Tenha sempre um anti-vírus com firewall atualizado, recomendo: Karspesky, F-Secure, BitDefender.
Dicas para as senhas
- Use senhas fortes, nunca use 123456, 654321, NUNCA, são as primeiras senhas que os programas irão tentar, tente sempre começar com sequencias não-repetitivas: 5a2k71*09c437f5g0i32p (difícil de memorizar? é bom guardar no papel, até hoje não há noticia de ninguém que hackeou um papel pela internet).
O antivírus é muito importante, mas estar ciente do que está fazendo é mais importante ainda.
Assinar:
Postagens (Atom)
