12
Mar

Publicação na OTN: Oracle CEP e Posicionamento

Dia 10 meu novo artigo sobre Oracle CEP foi publicado na OTN.

O artigo aborda casos de uso interessantes sobre Oracle CEP envolvendo localização e posicionamento e mostra como podemos enviar os dados de posicionamento a partir da JSR-179.

Acesse já o artigo em: http://www.oracle.com/technology/pub/articles/amadei-cep.html

Este blog não expressa direta ou indiretamente quaisquer opinião da Oracle.


free b2evolution skin
23
Feb

Classes Java que você só ouviu falar - javax.servlet.http.HttpSessionBindingListener

Nesse post continuo a abordar algumas classes Java que dificilmente você já utilizou. Nesse caso veremos a interface javax.servlet.http.HttpSessionBindingListener.

Essa interface quando implementada por uma classe e uma instância dessa classe é colocada na sessão, o método valueBound é invocado, notificando que o objeto foi adicionado à sessão. Quando o objeto é retirado da sessão (ou substituído) o método valueUnbound é invocado.

A grande diferença entre essa interface e os outros listeners, é que ela é implementada no próprio objeto, enquanto que os outros listeners são objetos externos notificados de eventos.

A seguir vemos um objeto que implementa o listener:

package br.com.amadei.blog.listener;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class Person implements HttpSessionBindingListener {

	@Override
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("Value bound: " + event);
	}

	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("Value unbound: " + event);
	}

}


Uma vez que esse objeto é colocado na sessão conforme código a seguir:

	Person person = new Person();
	session.setAttribute("person", person);


O seguinte é impresso no console, mostrando que nosso listener foi notificado:


Value bound: javax.servlet.http.HttpSessionBindingEvent[source=org.apache.catalina.session.StandardSessionFacade@1d38b87]

 

Quando o objeto é removido, temos o seguinte impresso:


Value unbound: javax.servlet.http.HttpSessionBindingEvent[source=org.apache.catalina.session.StandardSessionFacade@1d38b87]

Você deve ter reparado que não houve alteração no web.xml para registro do listener. Realmente, não é necessário nada além da implementação da interface para que o objeto seja notificado que ELE foi associado à sessão.

É isso. Agora cabe a você encontrar um caso de uso para aplicar essa funcionalidade.


free b2evolution skin
16
Dec

Classes Java que você só ouviu falar - parte 1 - java.util.Scanner

A classe java.util.Scanner passou a fazer parte da gama de classes que acompanham uma instalação do Java a partir da versão 5.

Seu grande propósito é escanear texto e efetuar o parse em primitivos e strings baseando-se em expressões regulares para tal.

A seguir vemos um exemplo muito simples onde você pode observar a classe em funcionamento:


    Scanner sc = new Scanner(System.in);
    while(sc.hasNextInt()) {
      int i = sc.nextInt();
      System.out.println(i);  
    }


No exemplo apresentado, o loop continua executando até que você deixe de digitar números e digite algum outro tipo de caractere

Um outro exemplo muito interessante é o seguinte:


  public static void main(String[] args) throws Exception {

    Scanner sc = null;

    try {
      sc = new Scanner(new FileReader("Arquivo.txt")).useDelimiter(",");
      while (sc.hasNextInt()) {
        System.out.println("Int encontrado: " + sc.nextInt());
      }
    } finally {
      sc.close();
    }
  }


Nesse exemplo, o arquivo denominado Arquivo.txt deve conter o seguinte:


1,2,3,4,5,6,7,8

Caso o arquivo contenha a separação por vírgula com espaços, o exemplo já não funcionará.
É aí que a classe java.util.Scanner mostra seu poder. Se você especificar uma expressão regular corretamente, veremos que é possível se adequar a esse tipo de cenário e especificar algo como 1, 2,3,     4,5,6,7,8 no arquivo, ainda obtendo o comportamento esperado.

O exemplo a seguir mostra o código com a expressão regular que atende ao cenário apresentado:


  public static void main(String[] args) throws Exception {

    Scanner sc = null;

    try {
      sc = new Scanner(new FileReader("Arquivo.txt"))
        .useDelimiter("(\\s)*,(\\s)*");
      while (sc.hasNextInt()) {
        System.out.println("Int encontrado: " + sc.nextInt());
      }
    } finally {
      sc.close();
    }
  }


Apresentei aqui uma classe Java que você provavelmente ainda não conhecia ou se conhecia, dificilmente já tinha usado. Espero que tenha gostado!


free b2evolution skin
1
Jul

Flight 666: O filme

Se aqui fosse o twitter eu diria que estou trabalhando em casa enquanto me preparo para o jogo onde o Internacional de Porto Alegre será campeão da Copa do Brasil, mas como não é, vou falar sobre o último DVD que comprei: FLIGHT 666 - The Film.

Estive nos EUA no início do mês para treinamento pela Oracle. Aproveitei para muambar e entre as muambas eu trouxe o DVD duplo, raridade de se encontrar aqui no Brasil. Procurei o Blu-ray, porém ele só sai dia 07/07, acho que foi por isso que não encontrei :D.

Por ser duplo, o DVD traz além do filme, o que eles chamaram de trilha sonora, que nada mais é que todas as músicas da tour que aparecem no filme na íntegra, ao VIVO.

Sobre o filme:

Sensacional. O filme mostra todos os bastidores da tour Somewhere Back In Time, desde seu início na Índia até o final no Canadá (se não me engano...). À medida em que o filme transcorre, é mostrada a distância percorrida pela tour, o que é realmente impressionante.

A performance da banda está, sem sombra de dúvida, melhor do que nunca. O Bruce está cantando demais. Na verdade, demais é pouco. Revelations e Wasted Years são um show a parte. Desde que estou com o DVD todo dia que chego em casa coloco nessas duas músicas, pelo menos. Todos os show lotados, mostrando que a banda vive realmente um momento especial.

O trecho sobre o Brasil deixou a desejar muito e foi o único ponto fraco do DVD. Eles mostraram um padre que tem mais de 100 tatuagens do Iron Maiden e usa as letras em suas pregações. Achei isso meio tosco. Poderiam ter explorado outras coisas.

Sobre o show:

Sensacional. O show é gravado nas principais cidade, inclusive com uma música em São Paulo (Heaven Can Wait) e outra em Curitiba (The Clairvoyant), muito bem editado e com ótima qualidade de áudio.

Em resumo, uma compra certa para qualquer fan do Iron Maiden e uma ótima sugestão para quem gosta de Rock ou Heavy Metal


free b2evolution skin
20
Jun

Scala: if que retorna valor

Vou escrever aqui sobre scala. Tenho estudado scala já há algum tempo e a linguagem tem algumas features muito interessantes.

A idéia é apresentar aqui um conceito da linguagem que parece estranho à primeira vista, mas que se torna extremamente útil e interessante à medida que entendemos seu propósito: na linguagem scala, podemos retornar valores a partir de um bloco if e valorizar uma variável ou valor com esse retorno.

O código a seguir ilustra esse conceito:


def main(args: Array[String]) {
   val valorPar = 
      if( (args(0).toInt % 2) == 0 ) {
	"Sim"
      } else {
	"Não"
      };

   println(valorPar);
}

Parece estranho, não? Mas não é...

Em Java, teríamos que criar uma variável externa e atribuí-la diretamente no if, o que torna o código mais complexo e maior. Vimos que essa construção em Scala, apesar de estranha à primeira vista, se mostra muito útil e robusta à medida que a entendemos melhor.


free b2evolution skin