14th May2012

Entrevista com Bruno Souza, o Javaman

escrito por: Luca Bastos

          “Not I, nor anyone else can travel that road for you.
          You must travel it by yourself.
          It is not far. It is within reach.
          Perhaps you have been on it since you were born, and did not know.
          Perhaps it is everywhere – on water and land.”

                                              Walt Whitman, Leaves of Grass

 

Na 6a feira e sábado 11 e 12 de maio, tivemos em Fortaleza o excelente JavaCE Community Conference, que nós da Concrete com muita satisfação fomos um dos patrocinadores. Eu fui lá mostrar um pouco do que sabemos fazer.

Sobre o evento, as boas palestras que assisti, os amigos que encontrei e a minha apresentação, tudo isto deixarei para um próximo post.

Neste vou mostrar a entrevista que fiz com o Bruno Souza, o Javaman. Acho que ele dispensa apresentação pelo muito que já fez pela comunidade de desenvolvimento Java e open source em geral.

Neste blog sempre apoiamos às iniciativas de compartilhamento de conhecimento. O principal motivo da entrevista é dar espaço para falar do JustJava, evento mais do que tradicional e que acontecerá semana que vem aqui em São Paulo

A entrevista foi gravada em vídeo.

Porém, por não ter podido carregar a bateria no hotel devido a tal questão de compatibilidade de tomadas, na meio da primeira parte da entrevista a bateria acabou. E antes de acabar deve ter desligado a máquina sozinha. O fato é que eu perdi o vídeo das 2 primeiras perguntas. Sorry.

Achei muito interessante a resposta da primeira pergunta. Como fiquei sem o vídeo, vou resumí-la aqui em texto:

    Perguntei como começou e se minha memória não me trai, ele disse entre outras coisas o seguinte:

      “Comecei como estagiário na Sun e logo no primeiro dia chegou um gringo, o John Gage, falando de algo novo. Acho que me mandaram falar com ele justamente por ser estagiário. Me mostrou um site em que ainda aparecia em alguns lugares o nome Oak. Era o Java ainda em gestação. Gostei da novidade e fiquei bem atento.

      Na empolgação de estagiário adorei a idéia e comecei a me dedicar. Na faculdade o povo só queria saber de C. E por meu entusiasmo, logo fiquei mais ou menos incumbido de tocar aquele assunto.”

    Segundo o Bruno, tudo foi uma questão de estar no lugar certo no momento certo. Eu acrescento que foi também uma questão de saber aproveitar as oportunidades.

    Bruno fez questão de acrescentar que ao longo da carreira aprendeu muito com o John Gage.

 
Há muitos anos o Bruno criou o SouJava, um dos maiores grupos de Java do Brasil. Não sei do tamanho dos outros grupos de Java mas acho que o SouJava só perde em tamanho e projeção para o GUJ com seus cento e tantos mil usuários registrados.

O SouJava tem tradição de realizar grandes e excelentes eventos. E no fim da semana que vem teremos de novo em São Paulo mais uma edição do JustJava.

Segundo o site, esperam cerca de 2000 profissionais no Centro Universitário SENAC – Campus Santo Amaro. Se conseguirem mesmo reunir 2000 profisionais, será o maior evento de TI no Brasil dos últimos anos.

Sou um dos voluntários organizadores do AgileBrazil, evento que a Concrete também patrocina. Sinto na pele a dificuldade para conseguir acomodar 1000 e poucas pessoas em algum espaço de eventos em SP. Como antigo desenvolvedor, torço muito para que realmente o Java mostre esta força toda. Cabe a comunidade comparecer.

 
O vídeo abaixo ficou somente com a resposta a minha última pergunta justamente perguntando pelo JustJava, evento que já tive oportunidade de ir e palestrar várias vezes.

O Bruno disse na gravação que a primeira edição do JustJava foi em 1998. Como comecei com Java em 1997, fiquei muito curioso para ver informações sobre este evento antigo mas infelizmente não achei no Google nenhuma referência para ilustrar este post.

Para minha sorte, apareceu de repente e entrou no vídeo a Loiane Groner, que muitos conhecem pelo seu ótimo blog e pelo seu recente livro Ext JS 4 First Look. Ela falou do que apresentará no JustJava.

Bem, chega de papo. Vejam o vídeo. E javeiros, compareçam ao JustJava.

09th May2012

Workshop Scala – 16/04/2012

escrito por: Bruno Pereira



Introdução

Em 2012 estamos com uma programação de Workshops e Tech Talks repleta de coisas interessantes. Fizemos no dia 16/04 um Workshop sobre Scala, no escritório de SP. A idéia era dar uma visão inicial para pessoas que ainda não conhecem a linguagem, e também mostrar para desenvolvedores Java como começar a usar Scala em seus projetos Java atuais.

Estamos disponibilizando abaixo o conteúdo na íntegra do material do Workshop. A interação dos participantes foi bem interessante e trouxe muitas idéias para evoluir o material e trazer mais casos práticos para discussão.

Pré-requisitos

Projeto Java inicial

Vamos começar com o projeto Java de exemplo do Alexandre Saudate Este é um projeto Java web comum, com o seguinte pom.xml: Introduzindo repositórios Scala, configurando Java 6 e adicionando Scala 2.9.1 ao projeto: Adicionando suporte a Scala no Eclipse: Depois de configurar o projeto para Scala, vamos criar 2 source folders: src/main/scala e src/test/scala.

Classes, Objects, Traits, Application, vals e vars

  • - Classes são praticamente idênticas a classes Java. Herança funciona da mesma forma, e classes Scala podem estender classes Java
  • - Objetos podem ser vistos como instâncias Singleton de uma classe definida implicitamente. Eles garantidamente são únicos.
  • - Traits são semelhantes a Interfaces em Java, especificando a assinatura dos métodos suportados. Entretanto, Traits permitem implementação parcial, como as classes Java abstratas. Entretando, não podemos ter Traits com construtores aceitando parâmetros.
  • - App é uma Trait que permite a execução de qualquer objeto Scala com a passagem de parâmetros de linha de comando. Ela já define o método main. Útil quando não precisamos manipular os parâmetros de linha de comando.
  • - Val é uma variável imutável, o equivalente a final
  • - Var é uma variável convencional, pode ser modificada livremente

Exemplo Classe


Exemplo Object


Exemplo App


Exemplo Trait


Modificadores

  • - Por padrão as classes, objetos, atributos e métodos são públicos.
  • - Modificador private funciona da mesma forma que em Java
  • - Protected é diferente, permite especificar em quais pacotes as subclasses conseguem acessar os atributos e métodos
  • - Para ter o equivalente a static, usamos Objects em vez de classes

Hierarquia de classes

  • - scala.AnyRef é o equivalente ao java.lang.Object
  • - scala.Any inclui o que em Java seria java.lang.Object e os tipos primitivos


Operadores

Exemplo definindo novos operadores

Estruturas de dados

Arrays


Lists


Tuples


Sets


Maps


Casos práticos

Scala herdando de Java

Veiculo (Java):

Motocicleta(Scala) herdando de Veiculo(Java):

Java herdando de Scala

Herança múltipla – Traits

Getters e setters

Muitos frameworks Java dependem da presença de getters and setters para correto funcionamento. Exemplo de classe Java típica:
A classe Scala “equivalente” seria:
Esta classe viraria na JVM o equivalente a:
Se utilizarmos a anotação @BeanProperty, teremos o resultado a seguir:

Entidades Hibernate com Scala


Empacotando Java e Scala na mesma aplicação

Suporte de IDEs

As principais:

Ferramentas de build

  • - SBT: complexo e não é a opção mais simples de integrar com código Java legado
  • - Maven: funciona bem e é fácil começar a usar Scala em projetos Java existentes
  • - Ant: também funciona bem e é fácil começar a usar Scala em projetos Java existentes

Tópicos a adicionar:

  • - Testes unitários
  • - BDD
  • - Programação funcional
  • - Passagem de funções como parâmetro
  • - Outros formatos de build – SBT e talvez algum outro
  • - Mostrar mais coisas de ecossistema Scala, frameworks
  • - Pattern matching
  • - Mais alguma sugestão??
08th May2012

Varnish no ar com queda do nginx

escrito por: Bruno Almeida


O Varnish, segundo seu site, é um web application accelerator também conhecido como um caching HTTP reverse proxy.

Você instala na frente de qualquer servidor que entenda HTTP e o configura para cachear o conteúdo. A velocidade de resposta aumentará de um fator de 300 a 1000 vezes, dependendo da sua arquitetura.

Uma visão de alto nível sobre ele pode ser visto em um vídeo no about do site.

O nginx [engine x] é um HTTP server, um reverse proxy server e mais um mail proxy server.

 

Vou apenas mostrar como fiz em um caso em que o cliente não podia ter indisponibilidade em seu site, isto é, o Varnish precisava continuar respondendo mesmo com a queda do nginx.

O que fiz foi incluir os seguintes parâmetros na configuração do nginx.

Nos parâmetros considere que:
- Porta 8081 é a porta de seu servidor de aplicação que irá responder;
- O IP: 127.0.0.1 é um IP local do servidor que poderá ser trocado pelo IP de seu servidor de aplicação;

No arquivo: /etc/varnish/default.vcl insira o conteúdo.

#Host servidor do nginx

backend default {
    .host = "127.0.0.1";
    .port = "8081";
    .probe = {
                .timeout = 60s;
                .interval = 10s;
                .window = 30;
                .threshold = 10;

#Parametros para teste da página antes de servir conteúdo local

    .request =
    "GET HTTP/1.1"
    "Host: PAGINA_FINAL_DO_CLIENTE:PORTA_DA_PAGINA_FINAL"
    "Connection: close";
    }
}
        sub vcl_recv {
                #Tempo útil de vida do conteúdo
                set req.grace = 6h;
                #Habilitando cache para páginas com cookies
                remove req.http.cookie;
        }

        sub vcl_fetch {
                #Tempo útil de vida do conteúdo
                set beresp.grace = 6h;
                #TTL Inserido para tempo de limite de vida do conteúdo
                set beresp.ttl = 1h;
                #Habilitando cache para páginas com cookies
                unset beresp.http.Set-Cookie;
        }

 

Como está funcionando?

O Varnish fica ativo na frente do ngnix escutando todas as requisições e mandando para o ngnix, caso o ngnix caia ou qualquer motivo que seja, irá enviar uma página estática que está armazenada em cache.

Simples assim.

Pages:1234567...18»
Concrete Solutions 2010 Todos os direitos reservados