26 de dezembro de 2008

Boas Festas

Pessoal 2009 está chegando e desejo a todos BOAS FESTAS, vamos postar muitos mais tutoriais em 2009.

Abraços

4 de novembro de 2008

Scrum e XP Direto das Trincheiras

Pessoal, desculpe pela falta de tempo para postar mais tutoriais e artigos, saiu na InforQ a tradução do livro Scrum e XP das trincheiras.
Vale a pena dar uma olhada.
É grátis.

Download do livro

30 de setembro de 2008

Equipe da Masterdom

Opa hoje vou falar um pouquinho da qualidade da equipe que trabalho aqui na Masterdom/IBM.
Thiago Senna = Programador Java, muito bom e técnico, eu e ele vivemos conversando sobre metodologias, refatoração de código, livros, frameworks, é realmente um cara muito inteligente.
Adrian Dantas = Arquiteto Java, é outro que vivo conversando sobre metodologias, arquiteturas e frameworks, é um dos nossos "gurus" de metodologias e tecnologias recentes (Apesar que de todo mundo eu e o Thiago somos os mais tecnicos).
Juliano Claiton = Arquiteto Java, o Juliano é mais sério do que eu, inteligente, tem grandes conhecimentos de tecnologia e gerencia, atualmente eu e ele estamos vendo a melhor forma de implantar metodologias ágeis no nosso padrão de desenvolvimento.
Christian Reichel = Analista de Sistemas Java, profissional Linux e um monte de outras coisas, bom o Christian é um cara que manda mto bem em Linux, servidores, Java, frameworks e está sempre melhorando a qualidade e segurança do código aqui da empresa, com ele eu falo mais de Linux (uma pq ele entende bem mais que eu, então tem que "chupinhar" conhecimento).
Fernando M. Miguel de Souza (My Friend) = Analista Java da IBM, é um cara inteligente e o atual "pai" (pq foi o único q ficou no projeto desde bem antes de nós).
Elaine = DBA, nossa DBA da empresa, muito inteligente, é a pessoa que eu mais incomodo quando preciso de uma query muito complexa ou quando a base de dados trava ou cai (NOTA 02/06/2011 - atualmente trabalha na mesma empresa que estou ;) ).
Heloisa = Nossa mestra e analista de requisitos, a Helo é muito inteligente e uma pessoa super dedicada.
Bom não vou ficar falando de mim (seria meio engraçado), mas o que posso dizer é que curto estudar tecnologias e metodologias ágeis.
Carlos Neves = Gerente de projetos, o Carlinhos é uma pessoa bem dinâmica e está sempre disposto a verificar o que é melhor para o projeto, está também apoiando na adoção de Scrum no nosso projeto atual.
Edson Eiti = Gerente de Projetos, trabalha junto com o Carlinhos, é sério e comprometido com o trabalho exercido.
Haroldo Macedo = Analista WebSphere da IBM, inteligente, é uma pessoa que manda muito bem nos produtos da IBM, sempre focado nisso, é muito legal trocar idéia com ele para comprar alguns projetos Open Source VS produtos da IBM, sempre sai algumas coisas interessantes.
Wanina - Gerente de Projetos da IBM, é a pessoa que está sempre indo pra lá e pra cá pra facilitar no desenvolvimento da burocracia do sistema.
Marcos Roberto - Gerente de Contas da Masterdom, é o nosso chefe, pessoa que sempre se empenha em resolver os problemas que ocorrem na gestão de pessoas.

Bom essa é a equipe de deenvolvimento que garanto que muitas consultorias ou clientes queriam, todos procuram sempre estudar e ver coisas novas para sempre melhorar o sistema e entregar tudo no melhor estado com qualidade e segurança.

Bom fica aqui uma pequena homenagem para essa equipe.

29 de setembro de 2008

Agile


Agile SCRUM

From: eduardo.bregaida, 1 minute ago


Agile SCRUM
View SlideShare presentation or Upload your own. (tags: Ágeis metodologias)



Gostaria de agradecer ao Danilo Sato, Emmanuel Santana, Luca Bastos, Maciel, Moreira, Luiz Aguiar, Fernando Boaglio (ele tem umas fotos de Kanban muito boas no qual utilizei nessa apresentação), Rodrigo de Toledo e Roberto Nogueira pela ajuda e revisão dos Slides e também gostaria de agradecer toda lista de discussão do Visão Ágil, que me deram muitas dicas e fontes interessantes.


SlideShare Link

23 de setembro de 2008

Aproveitando

Bom fui no JJ, vi as palestras de:
Quarta-Feira
Scrum com Suporte Java: Um Caso Pratico - Andre Piza
Domain Driven-Design - Sérgio Lopes
JPA com Hibernate na Prática - Paulo Silveira
Desmistificando a TV Digital - Robinson Cris Brito & Ricardo Ogliari

Quinta-Feira
Não pude ir

Sexta-Feira
Os 7 hábitos dos arquitetos altamente eficazes - Paulo Silveira
Desenhando um Servidor JavaEE com IoC e AOP - Um estudo de caso - Flavia Rainone
Gerenciamento de Projetos JavaEE usando Scrum e FDD - Manoel Pimentel Medeiros

Bom sinceramente curti muito o evento, ainda comprei o livro Pro JSF e Ajax.
Atualmente estou lendo o livro do Thiago Senna, Refactoring do Martin Fowler e o livro do Pro JSF e Ajax.

11 de setembro de 2008

Just Java 2008

Opa ontem fui no JJ (hoje quinta não) e amanhã vou de novo.
As palestras estão muito boas, vi a do Sergio Lopes de DDD, um pedaço da palestra do Paulo Silveira sobre JPA, a palestra de Java TV (muito boa) e a de Rest do Rafael Nunes.
Foi bom rever meus amigos, como o Paulo, Pedrosa, Fabio, Sergio, Vanessa (tinha sumido), quase todo mundo que fez algum dos cursos da Caelum comigo, conheci pessoas novas, o Michael (mister M) a lista é muito grande de boas amizades que revi lá.

Bom espero amanhã ver mais amigos meus ainda e curtir as palestras.

26 de agosto de 2008

Maus Profissionais de TI

Pessoal aí vai uma dica, como confio em alguém que diz que Java é orientado a pacotes (package)?
Um curso que vi em uma instituição me fez pensar seriamente se as universidades querem formar profissionais qualificados ou apenas pegar dinheiro dos pobres alunos que pagam cursos para tentarem aprender.
Uma instituição séria para cursos de verão é a USP e a FIAP (no meu conhecimento), porém muitas outras deixam a desejar.
O fato é que um cara que diz ter anos de experiência na área de informática fala só besteiras para um monte de aluno que está ali querendo aprender é realmente lamentável...
Certificação? Bom é sempre bom ter uma, tenho a minha da IBM, estou para tirar as outras, mas com 4 anos de experiência a certificação tiro pela minha satisfação pessoal e não mais para provar para as empresas que tenho conhecimento da linguagem em questão, hoje em dia muitos bons programadores não tem certificação, assim como muitos certificados (que decoraram livrinhos) não sabem se virar no dia a dia, assim como também há aqueles que estudam, tiram e são exemplos de programadores, ou seja, é trivial, lógico que é um diferencial em entrevistas, principalmente no início de carreira, mas é no dia a dia que veremos se o cara é bom, cursos? sim tenho muitos caro instrutor, é ótimo estar sempre estudando e se atualizando, é realmente uma pena saber que uma instituição que tem como professor um cara tão ruim ganhando e enganando pessoas inocentes e vir criticar os outros, falar de certificação, sendo que ele nem sabe o que é isso...
Pessoal procurem saber quem é o seu instrutor, coloque no GUJ e pesquise, participe de fóruns, não seja enganado por qualquer pilantra.

22 de agosto de 2008

Apresentação Java Básico IT Training

Montei uma apresentação básica que será apresentado neste Sábado dia 23/08/2008 na Rua Amazonas, número 521 em São Caetano do Sul, sobre o novo curso de Java na IT Training, vale a pena conferir.

Bug no sistema da Anatel

Hoje falando com meu amigo Diego Plentz descobri que ele havia achado um Bug muito básico, porém extremamente perigoso no site da Anatel.
Esse bug é o seguinte eu consigo entrar no sistema de Ordem de Serviço deles, pegar informações pessoais de usuários como telefones, e-mails, dentre outras informações, assim como abrir nova ordem de serviço, como fazer isso? Muito simples bastava pegar o CPF e o e-mail do usuário que solicitou o chamado para a Anatel... mas como fazer isso? Bastava pegar essa URL: http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094111 sendo que o idSolicitacao é sequencial, ou seja, se eu continuar colocando outros números, vou pegar ordem de serviços de outras pessoas...
Uma falha grave, aparentemente a Anatel colocou em manutenção este sistema.

Caso queira visualizar a reclamação, leia o blog do Diego ou veja no GUJ a notícia.

Como nosso amigo Kumpera disse em seu blog sobre esse Bug:
Segurança como essa é inadmissivel para um órgão governamental. Isso é ridículo, é um afronte a nossa privacidade. Os amadores que fizeram esse sistema ignoraram todas regras básicas de segurança que qualquer desenvolvedor safo tem a obrigação de saber. Anatel, corrija isso com urgência e tome as devidas medidas administrativas para esse tipo de desastre não ocorra novamente. Por favor, a todos que lerem este texto, liguem já para a Anatel no 0800 33 2001, registrem uma reclamação formal e divulguem esse problema para o quanto antes ser solucionado.

12 de agosto de 2008

Criar um relógio digital utilizando SWT.

Olá galeraaaa...

Essa é a minha estréia aqui no Java Anywhere. Minhas postagens vão parecer no mínimo interessantes...pois dificilmente irei abordar temas avançados de Java, mas principalmente aqueles que parecem ser mais básicos...que todos acham que sabem...mas sempre fica alguma dúvida. Principalmente para quem está começando na área.
Bom, vamos falar de interface gráfica, mais especificamente o SWT. Atualmente eu trabalho única e exclusivamente com SWT. Porque o SWT e não o Swing? O SWT é "portável". Roda em qualquer plataforma. É preciso adaptá-lo ao sistema operacional, mas ainda assim ele é vantajoso. É bonito e tem algumas particularidades que facilitam para nós desenvolvedores, e outras que nos deixam com mais cabelos brancos.
Eu precisei desenvolver um relógio digital que deveria aparecer em uma tela de agendamento de consultas. Não seria nenhuma novidade, afinal, existem vários exemplos de relógios digitais na Web, mas, todos em Swing. Aí começa o problema. O SWT tem a sua própria metodologia para o uso de Threads. Aliás, ele tem a sua própria Thread, se me permitem afirmar. E como compreender isso? Eu procurei muito. Fiz várias perguntas no GUJ...mas ninguém sabia responder, até um amigo meu de trabalho me mostrar como é que se trabalha com Threads em SWT (Valeu Charles).
Bem, vamos lá. Vamos criar o nosso relógio digital.

Em primeiro lugar é importante que você já tenha o seu Eclipse com o devido Visual Editor e as Libs do SWT.

Primeiro passo: Construa uma Visual Classe chamada Relogio. Deixe como composite e mantenha o método main assinalado.

Nesse momento sua classe estará assim:

import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;

public class Relogio extends Composite {



    public Relogio(Composite parent, int style) {
        super(parent, style);
        initialize();
    }

    private void initialize() {
        setSize(new Point(300, 135));
        //setLayout(new GridLayout());
    }
    /**
    * @param args
    */
    public static void main(String[] args) {
        Display display = Display.getDefault();
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
        shell.setSize(new Point(300, 135));
        new Relogio(shell, SWT.NONE);
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
            }
        display.dispose();
    }
}

Você vai perceber que não estou utilizando o GridLayout, como o próprio Eclipse já sugere. Comente e trabalhe sem o Grid por hora.
Agora, o próximo passo é você criar duas Labels. Nomeie uma como labelData e a outra como labelHora.

Nesse momento você terá algo desse tipo:

labelData = new Label(this, SWT.NONE);
labelData.setBounds(new Rectangle(45, 60, 100, 30));
labelData.setText("");

labelHora = new Label(this, SWT.NONE);
labelHora.setBounds(new Rectangle(165, 60, 100, 30));
labelHora.setText("");
this.setSize(new Point(300, 135));
//Comente aqui//
//setLayout(new GridLayout());
}

Eu procurei ajustar a tela ao meu gosto sem seguir nenhum padrão pelo simples fato de se tratar de apenas uma demonstração.
Agora...pra deixar nossa classe bem organizada, vamos declarar a fonte assim como o tamanho do texto como atributos "private".Em seguida, dentro do construtor e antes de chamar o método initialize() adicionaremos aos atributos o tamanho e a fonte do texto.
Essa mesma variável nós usaremos agora lá no nosso Label assim como mostra o exemplo. parece que estou dando voltas não é ? Mas para quem faz manutenção esse tipo de organização ajuda muito.

public class Relogio extends Composite {

    private Label labelData = null;
    private Label labelHora = null;
    private Font fontVerdanaDataBold = null;
    private Font fontVerdanaHoraBold = null;

    public Relogio(Composite parent, int style) {
        super(parent, style);
        //Aqui declaramos como queremos o nosso texto//
        this.fontVerdanaDataBold = new Font(getDisplay(), "Verdana", 12, SWT.BOLD);
        this.fontVerdanaHoraBold = new Font(getDisplay(), "Verdana", 12, SWT.BOLD);
        initialize();
    
    private void initialize() {
        labelData = new Label(this, SWT.NONE);
        labelData.setBounds(new Rectangle(45, 60, 100, 30));
        //Aqui declaramos a variável com tamanho e fonte do texto//
        labelData.setFont(fontVerdanaDataBold);
        labelData.setText("");
        labelHora = new Label(this, SWT.NONE);
        labelHora.setBounds(new Rectangle(165, 60, 100, 30));
        //Aqui declaramos a variável com tamanho e fonte do texto//
        labelData.setFont(fontVerdanaHoraBold);
        labelHora.setText("");
        this.setSize(new Point(300, 135));
        //comente essa linha//
        //setLayout(new GridLayout());
    }
    }
Agora, vamos a parte mais gostosa do bolo. A criação desse relógio.
Bem abaixo da linha " labelHora.setText("")" iremos criar uma Thread. Essa é aquela que conhecemos. Não tem segredo algum. Logo em seguida criamos as variáveis de conversão de data e hora, não devemos esquecer dos "imports" e não esquecer de usar "data" do pacote javaUtil no "import". Mas e essa tal Thread do SWT?
Ela está lá dentro. Logo abaixo das variáveis de data e hora. Ela se chama "asyncExec". Sem ela, o relógio não funcionaria.
O código ficará assim:

(new Thread(new Runnable() {
    SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat sdfHora = new SimpleDateFormat("HH:mm:ss");

    public void run() {
        while (true) {
            if (!isDisposed() && !getDisplay().isDisposed()) {
                //Aqui chamamos a tal "Thread" do SWT///
                getDisplay().asyncExec(new Runnable() {
                public void run() {
                    if (!labelData.isDisposed()&& !labelHora.isDisposed()) {
                        Date data = new Date();
                        labelData.setText(sdfData.format(data));
                        labelHora.setText(sdfHora.format(data));
                    }
                }
            });
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                break;
           }
        } else {
            break;
        }
    
 }

})).start();

De mais é tudo Java básico. Vale a pena fazer o teste em casa. Fica muito bacana.Não esqueçam de ajustar o tamanho da tela também no "método main" ok?
Boa sorte galera. Espero ter ajudado.

Apresentação sobre Wicket do USCS.java 2008


Introdução Wicket

From: adantas, 8 minutes ago





Um breve intrução ao framework web Wicket. Esta apresentação está focada em demonstrar as vantagens do wicket que são: simplicidade e agilidade.


SlideShare Link

11 de agosto de 2008

JavaServer Faces: Facilitando o Desenvolvimento Web - Palestra É Dia de Java 2007


Produtividade com JavaServer Faces

From: eduardo.bregaida, 9 minutes ago





Palestra Ministrada na Universidade de Santa Barbara do Oeste


SlideShare Link

JavaServer Faces Produtividade em Desenvolvimento - JustJava 2007


JavaServer Faces Produtividade em Desenvolvimento

From: eduardo.bregaida, 1 hour ago





Palestra ministrada no JustJava 2007


SlideShare Link

Profiling: Como Diagnosticar Problemas de Performance


Profiling - IMES.java - Haroldo Macedo

From: eduardo.bregaida, 1 hour ago





Palestra de Haroldo Macedo para o evento IMES.java


SlideShare Link

Red Code

Red Code

From: juliano.claiton, 1 minute ago




Palestra ministrada no último evento IMES(USCS).java
Códigos mal escritos e anti-patterns. O caminho do sucesso para o Blue Code.


SlideShare Link


JSF e outras tecnologias Java Web - IMES.java

Estou postando a palestra que ministrei no evento IMES.java (USCS.java), o evento infelizmente foi marcado por um dia chuvoso.
Todas as palestras foram ótimas, logo estaremos disponibilizando as outras palestras no site do evento.








SlideShare Link

1 de agosto de 2008

Struts 1.x.x

Bom pessoal, Struts está no passado, deveria estar morto, mas ainda existem milhares de sistemas legados.
Hoje estarei falando de uma prática meio particular de desenvolvimento que ando vendo por aqui e em outros sistemas legados pelos quais já passei.


Tratando Seus objetos do Bean sem copy/paste no Form.

Hoje o que temos em alguns sistemas legados é um grande copy/paste do bean no form ou seja:

Exemplo:
public class Pessoa {
private Integer id;
private String nome;
private String endereco;
private Integer idade;
// getters e setters
}


Esse é um simples Bean Pessoa.java com seus getters and Setters.

Mas quando vamos criar o Form olha só:
PessoaForm
Integer id;
String nome;
String endereço;
Integer idade;
//getters and setters
void validate(){
//aqui validadores
}
Isso é muito feio, um jeito bonito de resolver seria:
PessoaForm
Pessoa pessoa = new Pessoa();
//getters and setters
void validate(){
//aqui validadores
}

No final nossas Actions de CRUD ficariam muito mais fáceis:
IncluirPessoaAction
PessoaForm pessoaForm = (PessoaForm)form;
Pessoa pessoa = pessoaForm.getPessoa();
pessoaDAO.inserirPessoa(pessoa);
No final, somente iria mudar a chamada do método nas outras actions, como excluirPessoa, alterarPessoa, selecionarPessoa.

E a chamada no JSP?
pessoa.jsp
<html:text property="pessoa.nome" size="60" name="pessoaForm" maxlength="50" styleId="txtNome"/>

Parece mais trabalhoso no JSP do que se tivéssemos copiado os atributos do Bean, mudado tudo para String, mas na realidade, não precisaremos mais ficar dando casts desnecessários, as validações ficariam restritas no Form e o mesmo iria ficar visivelmente mais limpo.

Se um dia o Bean aumentar, ou seja, implementar novos atributos a atualização disto será bem mais simples...


Caso seu Bean chame um outro objeto, ou seja, um outro Bean trate-o como no exemplo abaixo:
Eemplo:
Bean
PessoaFisica
Integer id;
Pessoa pessoa = new Pessoa();
//getters and setters


Form
PessoaFisicaForm
PessoaFisica pessoaFisica = new PessoaFisica();
//getters and setters
//validate

JSP
<html:text property="pessoa.nome" size="60" name=" pessoaFisicaForm" maxlength="50" styleId="txtNome"/>
Poderíamos ter casos de beans dentro de beans e no JSP é só chamar com “.” Que representam os getters.
Bom é algo que ando vendo em muitos sistemas legados, Beans tendo seus atributos copiados no form como String para tratar tudo mais fácil, depois milhões de Casts nas Actions...


Bom é isso, aí está minha dica para quem vai pegar buchas de sistemas legados.

[]sss




30 de julho de 2008

Evento USCS.java (Antigo Imes.java)

Pessoal, este ano o evento Imes.java mudou de nome para USCS.java (isto porque a faculdade mudou de nome).

Contará mais uma vez com palestrantes de qualidade e diversas palestras.

O Site do USCS.java já está no ar.

Não há inscrição.
O evento é aberto a comunidade.
Acontecerá no dia 09/08 - Sábado em São Caetano do Sul - SP.
Local: USCS (IMES) Campus I, Av. Goiás, 3400.
Site do evento: http://www.tiagocapatto.com/fire/imes/index.htm
Site da faculdade: http://www.uscs.edu.br/

Espero ver todos vocês =)

28 de julho de 2008

Mascaras com Prototype

Pessoal, como estou caçando mais JavaScript e convertendo para usar no sistema, continuando o post anterior vou colocar mais máscaras comuns.
Peguei de exemplo um post do GUJ com as máscaras mais comuns e adaptei para utilizar com o prototype do mesmo modo do post anterior (Máscaras com JQuery), passando apenas event.

//Máscara para CEP

function AjustaCep(event){
var input = event.element();
//Ajusta máscara de CEP e só permite digitação de números
if (input.value.length == 5){
input.value += "-";
if(event.keyCode == 0){
input.value += "-";
}
}

return mascaraInteiro(input.value);
}


function MascaraTelefone(event){
var tel = event.element();
if(mascaraInteiro(tel.value)==false){
event.returnValue = false;
}
return formataCampo(tel, '(00) 0000-0000', event);
}


//formatar as máscaras
function formataCampo(campo, Mascara, evento) {
var boleanoMascara;

var Digitato = evento.keyCode;
exp = /\-|\.|\/|\(|\)| /g
campoSoNumeros = campo.value.toString().replace( exp, "" );

var posicaoCampo = 0;
var NovoValorCampo="";
var TamanhoMascara = campoSoNumeros.length;;

if (Digitato != 8) { // backspace
for(i=0; i<= TamanhoMascara; i++) { boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".") || (Mascara.charAt(i) == "/")) boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(") || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) if (boleanoMascara) { NovoValorCampo += Mascara.charAt(i); TamanhoMascara++; }else { NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); posicaoCampo++; } } campo.value = NovoValorCampo; return true; }else { return true; } } //Verifica se o que está sendo digitado é um inteiro function mascaraInteiro(){ if (event.keyCode <> 57){
event.returnValue = false;
return false;
}
return true;
}


Daí é só usar:
<.script type="text/javascript" src="include/script/ajax/prototype.js"><./script>
<.script type="text/javascript" src="include/script/ajax/scriptaculous.js?load=effects,controls"><./script>
<.script type="text/javascript" src="include/script/mascaras.js"><./script>

<.script type="text/javascript" src="include/script/ajax/prototype.js"><./script>
<.script type="text/javascript" src="include/script/ajax/scriptaculous.js?load=effects,controls"><./script>
<.script type="text/javascript" src="include/script/mascaras.js"><./script>

<.script type="text/javascript">
$("txtCEP").observe("keypress", AjustaCep);<.br /> $("txtTelefone").observe("keypress", MascaraTelefone);
<./script>

7 de julho de 2008

Fotos - Google Developer Day 2008


E ai galera!
Em 1º lugar me desculpe pela demora, está muito corrido esses dias!
Bom o Google Developer Day 2008 foi show de bola, os temas abordados foram muito bons!
Vou postar aqui algumas fotos do evento, os temas, comentários, códigos, endereços, novidades nas API's eu prometo que posto essa semana, ainda não consegui acabar de escrever!
É isso ai pessoal, fiquem com algumas das fotos do evento e até +!





26 de junho de 2008

Google Developer Day 2008


Amanhã sexta-feira dia: 27/06/08 estará acontecendo aqui em SãoPaulo o Google Developer Day 2008 e nós do
Java Anywhere estaremos cobrindo todo o evento eu estarei lá para trocar experiências, aprender mais, conhecer sobre novas tecnologias da Google e tendências atuais do mercado. O evento é um dos mais esperados e promete muito conteúdo e aprendizagem para todos. Em breve eu estarei disponibilizando tutorias, códigos, fotos e vídeos do evento aqui no Blog. É isso ai galera até logo!

Palestrantes:
  • Dion Almaer
  • Bruno Bowden
  • Paul McDonald
  • Chris Schalk
  • Dick Wall

Temas:

  • KML Avançado (Bruno Bowden)
  • Analisando e Gerando KML com o a Biblioteca KML do Google (Bruno Bowden)
  • OpenSocial: O Padrão para a Web Social (Chris Schalk)
  • Mashups seguros com Google Gears (Dion Almaer)
  • AJAX: O Universo em Expansão (Dion Almaer)
  • Construindo uma aplicação Android (Dick Wall)
  • Entendendo o Framework de Uma Aplicação Android (Dick Wall)
  • De Mashups a Mapplets (Bruno Bowden)
  • YouTube no seu site (Stephanie Liu)


Fiquem com Deus
Até mais!

23 de junho de 2008

Test 997 - IBM WebSphere Message Broker V6.0, Solution Development

Opa, hoje comecei bem o dia depois de um longo fim de semana com a cabeça nos livros e nos mocks, conegui tirar minha primeira certificação IBM a 997 com 96%, sobre Message Broker.
A prova tem muitas perguntas de JMS, SOAP, SOA, algumas de Java, configurações, protocolos e etc...
Ela é relativamente simples quando se tem os mocks e o PDF que pode ser baixado direto no site da IBM Certify.
Bom agora vou me dedicar 100% as certificações da SUN novamente, mas pretendo tirar outras da IBM também.

Não que certificações provem alguma coisa, mas só para preencher algumas burocracias e acariciar meu ego ;)

17 de junho de 2008

Instalando e Configurando o JBoss para porta 8080 ou 8089

Esse tutorial fiz com auxílio do grande amigo Carlos Magno da Seiva Brasil.

Descompacte o arquivo jboss-x.x.x.zip na raiz do sistema operacional, no caso do windows c:
No diretorio da pasta c:\jboss-x.x.x\server\default, fazer uma cópia do default e renomear com o nome do seu projeto, exemplo: projetoJSFXPTO
Dentro da pasta c:\jboss-x.x.x\server\projetoJSFXPTO\deploy, remover as seguintes pastas:
\jms
\jboss-hibernate.sar
\management

Copiar o projetoJSFXPTO.war (gerar o war) para dentro do diretório:
c:\jboss-x.x.x\server\projetoJSFXPTO\deploy

ficando assim: c:\jboss-x.x.x\server\projetoJSFXPTO\deploy\projetoJSFXPTO.war

Para executar o servidor, configure as variaveis de ambiente para JBOSS_HOME
ficando
JBOSS_HOME
c:\jboss-x.x.x

E configure o Path:
depois do ultimo dado da linha ;%JBOSS_HOME%\bin

no prompt de comando digite:
run -c projetoJSFXPTO

Caso visualize a mensagem JVM Bind 8080, execute o passo a seguir:

Alterar o arquivo server.xml que se encontra no path:
c:\jboss-x.x.x\server\default\deploy\jbossweb-tomcatX.sar\server.xml

Editar o arquivo e alterar onde está indicado HTTP/1.1 Connector on port 8080












Pronto é isso e rodar o run -c projetoJSFXPTO

Pronto pode usar lá a url do servidor e acessar o projeto

Lembrando q o tomcatX, tcX, jboss-x.x.x são as versões.

12 de junho de 2008

Mascaras com JQuery

Bom, necessitei de uma mascara para um campo text de valor monetário, logo pensei vamos fazer um JavaScript...
Googlei e achei vários códigos (iguais) da tal mascara de moeda... copiei funcionou, mas pesquisando ainda mais achei este site: DigitalBush Onde eles utilizam uma libs JS baseada no JQuery para montar e aí está a diferença... um código gigante que tive que adaptar com outro funcionário da empresa, para 3 linhas apenas...

Código encontrado na internet já adaptado para usar com Scriptaculos e prototype:
Mascaras.js
function mascaraMoeda(e){
var objTextBox = e.element();
var SeparadorMilesimo = '.';
var SeparadorDecimal = ',';

var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';

// var whichCode = (window.Event) ? e.which : e.keyCode;
var whichCode = getKeycode(e);

if (whichCode == 13)
return true;

key = String.fromCharCode(whichCode); // Valor para o código da Chave

if (strCheck.indexOf(key) == -1)
e.stop(); // Chave inválida

len = objTextBox.value.length;
for(i = 0; i < aux =" '';" len =" aux.length;" len ="=" value =" '';" len ="=" value =" '0'+" len ="=" value =" '0'+"> 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += SeparadorMilesimo;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
objTextBox.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
objTextBox.value += aux2.charAt(i);
objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
}
e.stop();;
}


No JSP é só colocar:
<.script type="text/javascript" src="include/script/Mascaras.js"><./script>
<.script type="text/javascript" src="include/script/ajax/prototype.js"><./script>
<.script type="text/javascript" src="include/script/ajax/scriptaculous.js?load=effects,controls"><./script>

<.script type="text/javascript">
$("txtValorIndice").observe("keypress", mascaraMoeda);<.br /><./script>


Simples código do JQuery:
Isso tudo você deve colocar num JSP
<.script src="include/script/ajax/jquery-1.2.6.js" type="text/javascript"><./script>
<.script src="include/script/ajax/jquery.maskedinput-1.1.3.js" type="text/javascript"><./script>

<.script type="text/javascript"><.br />jQuery(function($){<.br />$("#txtValorIndice").mask("9.999,99");<.br />});
<./script>

Bom então estou postando aqui as formas que encontrei de fazer tal mascara.
O JavaScript que adaptei achei ele neste blog: NoDesign

outro com JQuery:

//----------------------------------------------------------------------
$.noConflict( )
jQuery(function($){
$("#IdDoCampo").maskMoney({symbol:"R$",decimal:",",thousands:"."});
});
//----------------------------------------------------------------------

site de Referência da MaskMoney

10 de junho de 2008

Sun Certified Java Programmer

É isso mesmo pessoal, agora com vida menos corrida (não muito) e sem a faculdade decidi ir atrás da minha certificação, a famosa SCJP, estou estudando pelo livro da Kathy Sierra (Certificação Sun para programador Java 5, Guia de estudo - SCJP exame 310-055 2ª Edição Revisada), também estou fazendo o curso FJ 19 da Caelum o preparatório para a certificação e lendo a Mundo Java nº18 e seus posters de certificação para ir mais tranquilo.
O Fato é que a prova aparentemente não é dificil, mas há uma série de fatores que atrapalham, nervosismo, "brancos", empolgação e etc...
Assim sendo estou me dedicando para fazer com tranquilidade, muitos me falaram: "Há mas você programa faz anos.", bom o fato é que cai muita coisa que você como programador não está acostumado a ver no dia a dia, como estou fazendo muitos simulados nos tempos livres (hora do almoço e antes de dormir rs) vou deixar uns links úteis para os leitores do meu blog.

CaelumUltraMock
JavaRanch- Simulado da Vaquinha.
Sun Education
Java Certification HQ
Dan Mock Exams
Java Mock

Passos para a certificação:
Primeiro compre um voucher (um passaporte) para a certificação, basta entrar no site da Sun Education ou ligar na Sun do Brasil e comprar, sai em torno de $200,00 dólares, em reais está +/- R$ 350,00, logo após fazer o pedido pague o boleto e aguarde a chegada do seu voucher, logo depois quando o tiver em mão entre no site da Prometric e marque a data do exame.
Estude bastante, vá com calma, na hora só erá você e o computador com uma camera na cara, não tente burlar, não fique nervoso, use papel e caneta que eles dão antes da prova para fazer o rascunho e Boa Sorte.

Conforme eu for estudando eu vou tentar ir jogando um resumo aqui no blog.

Abraços.

21 de maio de 2008

Como preencher o JCP.

Para quem tem curiosidade e gostaria de participar do JCP aí vai um tutorial, já agradecendo a ajuda Michael Nascimento (Mister M) e Pablo Madril (o criador do passo a passo).

Como preencher o JCP.
-------------------------------
Neste exemplo, JOAO SILVA e apenas um nome figurativo.
Qualquer semelhanca com a realidade e mera coincidencia.

1) Baixar os arquivos do site e imprimi-los
JSPA with Exibit B: http://jcp.org/aboutJava/communityprocess/JSPA-IND.zip

2) Rubricar todas as paginas (faca isto primeiro pra nao esquecer depois)


3) JSPA pag 1 de 11
campo 1 - seu nome em letra de forma. Ex: JOAO SILVA
campo 2 - a data em formato americano (MM/DD/AAAA): 01/31/2007

4) JSPA pag 3 de 11
campo 1,2 e 3 deixar em branco
campo 4 - Individual representing self only .... No Feee ... :As suas
inicias em maiusculas. Ex: JS

5) JSPA pag 10 de 11

MEMBER:
Signature: __assine aqui__
Name: seu nome. Ex: JOAO SILVA
Title: Mr ou Miss (homem ou mulher)
Date: a data em formato americano (MM/DD/AAAA)

SUN MICROSYSTEMS, INC:
deixar estes campos em branco, eles serao prenchidos pela Sun e
devolvidos via fax pra voce

6) JSPA pag 11 de 11 (eh o Exibit A)

1. Primary contact person
Name: _seu nome_. Ex: JOAO SILVA
Title: Mr ou Miss
Email Address: _seu email_. Ex: joaosilva@hotmail.com
Telephone Number: _seu telefone_ Ex: (5511) 5555-5555 (sem a operadora)
Fax Number: _um numero de fax onde vc possa receber fax_ Ex: (5511)
5555-5555

2. Accounts Payable Contact Person
____Seu nome___. Ex: JOA SILVA

Coporate Name:
___deixe em branco___

Accounts Payable Contact Address:
__Seu endereco___. Exemplo:
Rua XX, 123 Ap 10
Sao Paulo,SP, Brazil
CEP: 123123-000

EMail Address: _seu email_. Ex: joaosilva@hotmail.com
Telephone Number: _seu telefone_ Ex: (5511) 5555-5555 (sem a operadora)
Fax Number: _um numero de fax onde vc possa receber fax_ Ex: (5511)
5555-5555

7) EXIBIT B

Campo 1: Participant _seu nome__....
Campo 2: ...property rigths to _o nome da firma onde vc trabalha_. Ex:
Silva Ltda
Campo 3: ...#_____(Entitled:_____). Deixe em branco.
Campo 4: Signature: ____Aqui assina seu chefe____
Campo 5: Name: ___nome do seu chefe___
Campo 6: Title: ___cargo do seu chefe___
Campo 7: Date: ___data em formato americano___

Envie TODAS as folhas via fax ao numero indicado na pagina 11 de 11 (+1
408 276 7129).
Eh, isso mesmo, TODAS AS 12 FOLHAS, por isso que precisa rubricar TODAS
AS FOLHAS.


Acabou!!!

Vc deve receber um fax de resposta em algums dias. Na verdade, vc recebe
um fax de 12 folhas com a pag. 10 de 11 preenchida pela Sun.

18 de maio de 2008

Falando em Java 2008

Vou ver se consigo falar melhor durante a semana o que aconteceu lá, mas o evento foi demais, quem perdeu, infelizmente deixou de ver grandes apresentações, como sempre a Caelum se superou.

6 de maio de 2008

Eventos Mês 05 e 06 de 2008

Dia 18/05 acontecerá o evento Falando em Java 2008 veja o Link:
Caelum - Falando em Java 2008

Dia 27/06 ocorrerá o Google Developer Day 2008, muito legal este evento também.

Dia 07/06 estarei dando palestra de JSF em Santa Barbara do Oeste no evento É dia de Java 2008.

Os eventos do dia 31, 27 e dia 07 serão gratuitos, o evento Falando em Java é pago, mas vale a pena conferir, estarei em todos eles.

Se tudo der certo tentarei postar as palestras e códigos, também fazer uma cobertura destes eventos.

11 de fevereiro de 2008

Vaga de emprego

Conforme combinado com Katia segue o perfil da vaga de Java:



Analise especificação, acompanhamento e desenvolvimento de aplicativos na plataforma JAVA ( SCJP, Structs, EJB, Hibernate, MVC, Patterns)

Analise especificação e Modelagem de Dados - UML

Banco de Dados - ODBC, SYBASE, SQL SERVER

Experiência em Procedures, Views e Triggers

Plataforma LINUX, WINDOWS 95,98, NT, XP e LINUX

IDE - Tomcat, JBOSS, ECLIPSE

.



Qualquer dúvida estou a disposição.



Um abraço!



Esther Ribeiro Santos

Analista de Recursos Humanos

(11) 4052-4300 (pabx)

(11) 4052-4332 (direto)

esantos@proit.com.br

www.talentproit.com.br

24 de janeiro de 2008

SOA não é WebService!

Esta postagem é apenas uma visão de um estudante de TI, procurando soluções para alguns dos paradigmas encontrados nos conceitos de lógica e desenvolvimento de software.
Em uma série de matérias, artigos, fóruns e discuções. vejo uma grande confusão, a de que SOA somente pode ser concebido com WebServices.

Os WebServices são grandes aliados do SOA, porém não só este tipo de tecnologia que permitem que o conceito de SOA seja reproduzido.

Conceito

Na verdade o SOA é um conceito que define que, para se obter boa aplicabilidade e integração entre sistema deve-se ter, baixo acoplamento e granularidade grossa, criando assim módulos funcionais do sistema, e permitindo a reutilização do código.

Isto sisgnifica que serviços devem ser criados e disponibilizados por completo, por exemplo:

Reservar um quarto de hotel;

O serviço terá que verificar a disponibilidade de quartos, alterar o estado do quarto para reservado e adicionar esta reserva ao banco de dados, isto define uma granularidade grossa, e as classes são de granularidade fina, inserir quarto, inserir reserva. alterar status do quarto, cada uma dessas é um metodo e uma interação diferente com o objeto.

E o baixo acoplamento é reproduzido nas aplicações reduzindo as interdependencias dos módulos do sistemas, que segundo a teoria de "Page-Jones", poderia ser uma classe, mas eu prefiro acreditar que devemos criar uma classe que disponibilize o "serviço" ou que na própria classe seja criada um método que disponibilize o "serviço" com um baixo acoplamente, ou seja o método não irá esperar por tipos complexos como parametros, mas irá cuidar de tudo que se deve existir para resolver o assunto.

Por exmplo, no caso da reserva iriamos tem um método criando um objeto de um quarto que estará disponível e irá alterar seu estado e gravar isto no banco.

C#
class Quarto
{
public void ServicoReservar(int idCliente, DateTime chegada, DateTime saida)
{
List oListQuarto = Quarto.Disponiveis(chegada, saida);
if(oListQuarto.Count > 0)
{
oListQuarto[0].Reservar(new Cliente(idCliente));
}
}
}

Para não se ter um método muito complexo, optei por reservar o primeiro quarto que estiver disponível, mas poderia receber o tipo do quarto que deveria estar disponível para reserva, por exemplo.

Este é o conceito básico, não muito detalhado, mas prometo estudar mais sobre a arquitetura SOA para poder disertar melhor sobre o assunto.

Tecnologias

Existem algumas tecnologias que permitem com que o SOA, possa vir a ser reproduzido.
Algumas delas são:

  • Programas de linha de comando;
Em alguns casos esta pode vir a ser a melhor opção, como integração de sistemas que estão alocados em uma mesma máquina ou rede, permitindo que algumas liguagens e tecnologias diferentes, possam se conversar.
  • Via Protocolo Http (WebServices);
Ótima opção para integrar sistemas via intranet e internet, geralmente, são as mais utilizadas pelos arquitetos, por se tratar de uma tecnologia bem disseminada e difundida, e por grande parte das tecnologias suportarem e serem compatíveis.
  • Via TCP/IP (Sockets);
Esta é uma opção bastante performatica, quando precisamos integrar sistemas em Rede, cada tecnologia tem uma forma para se desenvolver com este tipo de protocolo, mas a integração é bastante performática.
  • Com envio de mensagens;
O envio de mensagens é uma ótima opção para garantir que a integração tenha consistência e garantia, geralmente são feitos com sistemas de terceiros MSMQ (Microsoft), MQSeries (IBM), entre outros.
  • Via arquivos (Text/XML);
Existem vários padrões de gravação de arquivos de integração, alguns como CSV, XML, arquivo posicional, entre outros, e esta seria uma boa opção para casos em que a integração não deve ser imediata, mas este é o serviço mais demorado, pesado e menos performático, porém, pode ser uma solução para algumas empresas.
  • Outros;
Eu não conheço nenhum tipo de integração que seja diferente dessas, mas pode ser que existam, ser alguém conhecer, por favor me avisem, que estudarei melhor.
WCF
O WCF é uma tecnologia que decide qual a melhor forma de se integrar com o sistema legado, ele tem que decidir se a integração deve ser feita com HTTP, TCP/IP, via NamedPipes, Text/XML, entre outros...

Esta tecnologia foi desenvolvida, pensando na arquitetura SOA, e para mostrar que não se deve utilizar apenas uma tecnologia como WebServices, .NET Remoting ou MQSeries para se desenvolver uma arquitetura SOA.

Conclusão do autor

Não devemos dizer que SOA é apenas uma tendência, e também que é uma nova tendência, assim como a OOP os conceitos do SOA, foi desenvolvido a alguns anos atrás, mas hoje existe uma necessidade grande das empresas de integrar seus sistemas, e a melhor forma encontrada para se fazer isto é disponibilizando serviços para esta integração, e ainda isto permite que seja feita uma grande organização dos processos da empresa, na visão comercial, isto é ótimo, mas nem por isso devemos utilizar SOA em qualquer projeto que iremos desenvolver, é isso mesmo, não devemos ser movidos pela empolgação, mas sim pela razão.
SOA não é desenvolvido apenas com WebServices, existem várias opções para se desenvolver SOA.


NOTA: Qualquer erro conceitual tecnologicos, sugestões, criticas, etc... poste um comentário aqui e tentarei entrar em contato.

2008 no Java Anywhere

Bom pessoal, estávamos de "férias" (do blog apenas) nesse fim de ano, estaremos voltando agora em Fevereiro trazendo muitas novidades.
O ano de 2007 foi muito corrido, TCC + meu trabalho, projetos OpenSource ou sociais, palestras e etc...
Este ano estou quase que full time na empresa, de segunda a sábado, a noite estou fazendo o curso FJ-91 de Arquiteto Java na Caelum com o Fabio Kung, então quase não tenho tempo de parar para fazer um tutorial, mas prometo me esforçar.
Uma outra novidade legal também, é que o Daniel Quirino (GUJ) está no mesmo projeto que eu, então esperem mais posts pois estou aprendendo demais lá.
O Blog cresceu, temos novos membros de alta qualidade, falarei de alguns aqui e do que esperamos para este ano.
Bom vamos as apresentações:
Eduardo Bregaida - TCS
Tecnologia Java.
Roger Niero - IBM
Tecnologia Java.
Guilherme Moreira - Caelum
Tecnologias Java, Linux.
William Silva - Projeto JEDI
Tecnologia Java.
Carlos Osés - BRQ
Tecnologia Java.
Rodrigo Dias - EDS
Tecnologia Java e Suporte.
Fabiana Anjos - TCS
Tecnologia Java.
Alexandre Campelo - TCS
Tecnologia Java.
Danillo Vellozo - Analista de Sistemas
Tecnologias Java, VBA.
Luis Henrique Caruso Crescenzo - Analista de Sistemas
Tecnologias Metodologias e .NET.
Wesley Forti (Virgulino) - Analista de Sistemas
Tecnologias Java.
Elias Estevão Goulart - Professor de Sistemas de Informação - IMES
Tecnologias Diversas.
Alberto Ribeiro - Analista de Sistemas
Tecnologia Java.

Como dá para se observar a galera trabalha em diversas empresas com diferentes sistemas, este ano espero colocar de JSF, Metodologias de Desenvolvimento Ágil, Materiais para introdução a Lógica e Java, JEE, EJB, WebServices, Análise e Gerência de Requisitos e de Sistemas, VRaptor, Hibernate, JPA dentre diversos outros.

Pessoal, fiquei de colocar minha palestra do JustJava de 2007 aqui mas o link está disponível neste endereço: http://www.sucesusp.org.br/mailing2007/congresso/justjava/apresentacoes/JavaServer.zip

O Paulo Silveira e o Shoes (Phillipe Calçado) também deram uma palestra sobre arquitetura muito legal no JustJava que está disponível neste endereço:
http://www.sucesusp.org.br/mailing2007/congresso/justjava/apresentacoes/arquitetura.pdf


Infelizmente ainda estou vendo um espaço para deixar fontes e apresentações das palestras que o pessoal vai dando durante este ano de 2008.