quinta-feira, 27 de março de 2014

Android Wear e Java 8 você já está preparado?

Recebi um e-mail sobre o lançamento mundial do Java 8 , a um tempo atrás, porém não tive tempo de postar aqui , mas como já era esperado a linguagem recebeu diversas modificações e melhorias principalmente aquelas que nós desenvolvedores sempre requisitamos. Chegando em casa , resolvi terminar meus projetos ,  percebi que havia uma atualização no SDK do Android, e nele junto a versão 4.4.2 veio a atualização para trabalhar com o Android Wear a plataforma de tecnologia vestível da google, ainda estou estudando as duas atualizações , mas aconselho a vocês também acompanharem a evolução do mercado :


Agora e o Java 8 ? você já esta preparado ? veja as melhorias e modificações que ocorreram na linguagem :


O Java 8 estava marcado para ser lançado em meados de 2014(eis aqui em que estamos) , e nele veio a maior mudança na linguagem desde a versão 5 (Tiger) , que são as expressões : Lambda que alteram a forma de codificação da linguagem bruscamente , herdando contextos de outras linguagens funcionais como : Lisp e o Haskell. Se você já programa nessas linguagens ou em Scalla (Executada pela JVM) não terá tanta dificuldade em assimilar essas mudanças, mas se você nunca utilizou essa função ou não sabe por onde começar , só tenho algo a lhe dizer : estude, pois isso vai mudar seu jeito de programar significativamente.

API de datas


Como todos nos sabemos(ou não) a API antiga de datas do Java era muito complicada,insegura e estranha de se programar, tanto que muitos optavam para API's externas como a JODATime(quem não conhece, vale a pena conferir) , mas devido a inúmeros pedidos da comunidade, eles acataram e atualizaram ela , de uma formal geral ficou muito mais fácil e seguro utiliza-la. 


Bom galera, é isso.

até a próxima.

domingo, 16 de março de 2014

Ciclos de Vida de uma aplicação Android

Os dispositivos móveis quando começaram a engatinhar nas aplicações móveis tinham um grande problema,eles suportavam uma unica aplicação em execução, ou seja : se você estivesse a utilizar algum aplicativo e não tivesse salvado seus dados e do nada seu telefone móvel tocasse, logo você perderia
tudo pois a aplicação era removida da pilha de memoria, quando criaram o sistema de multi-tarefas 
também não foi diferente , o "multitask" do inglês em tradução live : multitarefas , trouxe uma liberdade
maior para o usuário móvel , nele era possível executar duas ou mais funções simultaneamente.

Como funciona o sistema multitarefas ? 
-Ele é basicamente como nós conhecemos no Windows, as aplicações entram na pilha da memória e ficam
em execução em segundo plano quando não estão em uso.

O que é o ciclo de vida de uma aplicação e como ele funciona ? 

-Bom , nos dispositivos móveis que ainda são  carentes de hardwares robustos na maioria dos casos, ou até mesmo pelo excesso de aplicações rodando simultaneamente ou mesmo pela prioridade de uma aplicação,abandono da mesma e no caso do fechamento de uma aplicação, temos os ciclos de vida , que nada mais são que os estados de uma aplicação, veja a imagem abaixo : 




O tipos de ciclo de vida são : 

onCreate() : Criando a aplicação, desenhando a tela ,  em suma preparando a aplicação para iniciar.

onStart() : Iniciando a aplicação de fato, o "boot" do aplicativo , quando ela esta em onStart() ela já esta visível para o usuário. 

onRestart() : Quando a aplicação é reiniciada , ela volta no método onRestart.


onResume() responsável pela retomada da aplicação , você esta voltando para ela.

onPause() responsável por deixar a aplicação em pausa,aguardando a interação.

onStop() responsável por operar uma aplicação que foi "abandonada" pelo usuário. 

onDestroy() : remove a aplicação da pilha, ou seja semelhante ao System.exit(0);

Tipos não utilizados no projeto :

onSaveInstanceState() : Responsável por salvar os dados do aplicativo antes dele entrar em onPause;

onRestoreInstanceState() utilizado para trazer os dados novamente depois da aplicação entrar em onResume(); 


um video demonstrando os ciclos de vida em uso : 


o código da aplicação ai : 


terça-feira, 11 de março de 2014

Explorando a falha do Whatsapp com o Java

"Falha grave no Whatsapp permite que qualquer aplicativo roube suas mensagens. "


confira a materia completa : 

Bom galera, hoje vim mostrar como utilizar a falha encontrada no Whatsapp de uma forma "didática", vou ensinar vocês a transformar o arquivo em códigos binários ,  ,assim você terá acesso as informações contidas nele(mas não vou ensinar como)e bom isso vai até o Facebook (atual proprietário) lançar uma atualização de emergência , então enjoy.

Para essa tarefa iremos precisar de :
conhecimentos em Java.
uma conta no Whatsapp ativa e com mensagens.
uma ide  ou compilador Java

bom esse é o caminho das pedras , aqui estão todas as suas mensagens enviadas/recebidas pelo whatsapp, você terá de aprender a encontra-las,mas adianto que elas ficam na parte de backup.

mas vamos focar no Java, nossa tarefa e transformar esses arquivos em bytes, vamos copia-los, pois esse é o intuito do post, vamos aprender a copiar arquivos em Java, mas se você se interessar em abrir as mensagens nada te impede de fazer isso copiando isso para a mesma pasta do seu smartphone e abrindo com o whatsapp.

bom eu vou copiar o arquivo "mensagem_descriptografada_whats" da pasta original para a pasta copia e vou mostrar como fazer isso :




esse é o código para a função, vou disponibilizar em breve o código;





domingo, 9 de março de 2014

Separando String's com o método split()

Fala galera, mais uma da série "Debulhando a classe String" , dessa vez uma rapidinha pois estou com muito
trabalho, enfim ; Vou ensina-los a separar as Strings de vocês com um método muito interessante o método Split.

Aprendiz :
-Ok,mas para que ele serve?

Jhonatan :
-Bom temos o seguinte texto : José Silva de Souza, e queremos separar nome e sobre nome, como proceder? ou melhor, temos umas lista de produtos : arroz,feijão,batatas,ovos. Como separar essa String ?

Aprendiz :
-Bom Jhonatan , isso é um pouco complicado devo utilizar o método substring?

Jhonatan :
-Bom, não é a forma correta utilizar o método substring, pois temos o método Split e vou mostar como ele funciona.

Bom utilizei um simples diálogo para ilustrar o funcionamento prático do método split(), mas vamos para o lado técnico da coisa , o trabalho do Split e nos retornar um Array(Matriz) de String's de acordo como construirmos o mesmo, um exemplo :

String [] separado = nome.split(" ");

nome.split está nos retornando um array no qual as palavras separadas por " " (Espaço) serão alocadas sucessivamente em uma posição.

Logo :
"José Silva de Souza" teremos : 4 posições

separado [0] = "José"
separado[1] = "Silva";
separado [2] = "de";
separado [3] = "Souza";

agora no exemplo dos produtos temos :
uma imagem com o exemplo :

que construir o método Split com "," exemplo :

String produtos = "arroz,feijão,batatas,ovos";
String [] sprodutos = produtos.split(",");

então teremos 4 posições

onde  : sprodutos [0] = "arroz"
           sprodutos [1] = "feijão"
           sprodutos [2] = "batatas"
           sprodutos [3] = "ovos"

também podemos limitar o numero de retorno do método , já que o mesmo foi sobrecarregado na classe ancestral logo o construtor é versátil e temos a opção de fazer o seguinte :

String [] separado = nome.split(" ",2);

O que ira delimitar o numero de separações para 2 onde iremos receber agora
Logo :
"José Silva de Souza" teremos : 2 posições

separado [0] = "José "
separado [1] = "Silva de Souza";

se tivessemos contruido com  nome.split(" ",3);

teriamos :
separado [0] = "José "
seperado [1] = "Silva"
separado [2] = "de Souza";


Bom, por hoje é só pessoal, qualquer dúvida deixem ai nos comentários, abraços.




quinta-feira, 6 de março de 2014

Formatando um tipo Double para moeda

Converter valores monetarios em um Double sempre foram um problema
para programadores principiantes , principalmente no quesito separação das
casas decimais, e se fosse possível resolver esse problema com poucas
linhas de código ?
-seria perfeito.
É possivel , temos a classe NumberFormat
do pacote java.text que é responsavel por formatações
e manipulações de textos no Java , e o melhor?
- ela é nativa?
acertou!
pois bem vamos lá para a explicação marota do código :

primeiramente iremos importar nossa classe

import java.text.*; //aqui estamos importando todas as classes
do pacote java.text , não é nescessario isso ,esta ai para que
você encontre por si só a forma correta de resolver isso.

proximo passo :
dentro do método main criei a variavel primitiva do tipo Double

Double valor = 9990.0; //essa belezinha que iremos formatar

String f; //criei uma String para receber o valor formatado
é interessante frizar que : esse método é valido para mostrar
o valor para o cliente e não manipular valores com ele pois uma String
para valores não é uma boa pratica de programação(Gambiarray).

f = NumberFormat.getCurrencyInstance().format(valor);
o que entendemos por esse código?
simples : f recebe da Classe NumberFormat o método getCurrencyInstance
que pega a moeda corrente e te
 retorna uma instancia de NumberFormat
para você pegar o método format que recebe como parametro
o valor a ser formatado.

como resolver aquele pepino la do import?
simples : java.text.NumberFormat;

System.out.println(f);//exibe o f já formatado
$9,990.00

valeu, falou!

quarta-feira, 5 de março de 2014

Convertendo CharArray para String



A conversão de tipos primitivos para objetos no Java não é nenhum mistério , mas vale para os iniciantes
aprenderem como fazer uma simples conversão de um array de char para uma String.
Bom vamos lá : estamos dentro do método main , temos um array de char com as posições correntes  : J[0]
h[1],o[2].n[3],a[4],t[5],a[6],n[7], e criada uma String chamada nome e com o valor "" ,e convertemos nossa String para um CharArray com o método do mesmo nome que se encontra na classe String usamos um for de 0 ao tamanho do array já que o método length nos retorna o tamanho do array que estamos utilizando no caso 8 contando o numero 0 , nosso for vai da primeira posição até a ultima concatenando o valor a nossa String "+=" e depois imprimimos o valor da String.

viu como é fácil ? qualquer duvida deixar ai nos comentários, abraços.

domingo, 2 de março de 2014

Raiz quadrada pela Equação de Pell

Vou mostrar a forma de se resolver o calculo da raiz quadrada utilizando o método da Equação de Pell;


(1) x^2 - ny^2 = 1
Onde n é um inteiro positivo. Se n não possui raíz exata, então existem infinitas soluções inteiras x, y (Se n tiver raíz exata dá pra mostrar que a única solução é x = \pm 1 e y = 0). Vamos apresentar um algoritmo para encontrar as soluções para esse caso particular de n.




Agora em execução : 




Não é melhor que a Math.sqrt(5) pois teremos uma precisão inteira,mas é uma forma interessante de se resolver uma raiz quadrada.