segunda-feira, 29 de junho de 2009

Lula no FISL - Ubuntu na cabeça!

Sempre que possível estava acompanhando o que acontecia no FISL e participação do presidente no evento vai ser inesquecível. Não só pelo apoio ao software livre, mas também porque ele virou garoto propaganda do UBUNTU (Tá todo mundo usando, quem usa Ubuntu responda esse post com eu uso!).


Outra coisa, veja o que nosso presidente Lula disse: "... e graças a Deus prevaleceu no nosso pais a questão e a decisão do Software Livre. Porque nós tínhamos que escolher ou nós íamos para cozinha preparar o prato que nós queríamos comer com os temperos que nós queiramos colocar e dar um gosto brasileiro na comida ou nós iriamos comer aquilo que a Microsoft queria vender para gente." Luiz Inácio Lula da Silva




Antes que eu esqueça:
Eu uso Ubuntu!
Minha mãe usa Ubuntu!

Quem mais usa Ubuntu?

Download do Netbeans 6.7


Foi liberada a versão final do Netbeans 6.7 para download. Para saber um pouco mais sobre todas as novas funcionalidades dessa versão acesse essa página.
Ainda não pude relizar nenhum teste nessa versão, mas em breve algum integrante do blog deve postar suas conclusões.

Até a próxima.

quarta-feira, 24 de junho de 2009

IDE Eclipse

O Lançamento do Eclipse Galileo está prometido para hoje 24.06.09.

Dentre outras coisas a atualização do JUnit para o 4.5.

Outra coisa são as melhorias para quem usa MAC OS X.

terça-feira, 23 de junho de 2009

Site com Treinamentos gravados

Mais um site daqueles que achei que todo mundo conhece.

http://www.treinatom.com.br/pt/cafe-com-o-tom

Nesse site tem alguns treinamentos (palestras) gratuitos e online.

Ao final do evento eles disponibilizam o evento gravado para download.

Palestras interessantes como:
Flex e Java
GIT
Scrum
e etc.

sexta-feira, 19 de junho de 2009

Site sobre PMI e Gerencia de Projetos

Talvez mais um site que todos já devem conhecer, mas não custa apresentar o dono do site:

Ricardo Vargas | MSc, IPMA-B, PMP
Especialista em gerenciamento de projetos, riscos e portefólio. É autor de dez livros em português e inglês. Consultor em projetos, administra um portfólio de investimentos gerenciados superior a US$18 bilhões mundialmente. É Chairman do Project Management Institute (PMI), maior associação do mundo em gerenciamento de projetos.


http://www.ricardo-vargas.com/


Vale a pena o acesso la tem muito material sobre gerência de projeto. Ele faz um podcast semanal bem interessante, alem das apresentações e entrevistas disponíveis para download.

quarta-feira, 17 de junho de 2009

Fusion Tables: Google lança oficialmente um banco de dados

A google lançou oficialmente um banco de dados "nas nuvens". Essa notícia da IDGNow explica melhor como foi esse lançamento. Como não poderia deixar de ser, a google não lança simplesmente um produto, ela lança uma forma de dominar o mercado:

"A idéia é driblar as limitações dos bancos de dados tradicionais e simplificar as operações de relacionamento de informações. O Google afirmou que, com a implementação em cloud computing, simplificará também a possibilidade de colaboração em grupos de dados."

Não que eu seja a favor de nenhum tipo de discórdia entre rivais, mas a notícia ainda traz o texto:

"Se você é a IBM, a Microsoft e Oracle, seu pior pesadelo está vivo. O Google irá criar espaços de dados automaticamente e implementar novos tipos de pesquisas."

Apesar dessa expectativa toda, o produto ainda é um embrião, está apenas no comecinho. Quem se interessou pode acessar esse tour da própria Google e ter uma prévia.

terça-feira, 16 de junho de 2009

Idiomas Java

Aproveitando a abordagem de Mário sobre padrões de projeto, vou falar um pouco sobre idiomas. Um idioma é um conjunto de práticas, assim como padrões de projeto, mas específico de uma linguagem de programação. Ou seja, existe para Java, C++, C#, PHP... Estranhamente não é um princípio muito conhecido(eu pessoalmente nunca tinha ouvido falar até fazer uma pós graduação). Se você, por exemplo, buscar no google "idiomas java" vai se deparar com links relativos a cursos de inglês, dúvidas de gramáticas e outros resultados irrelevantes. Nada relacionado a boas práticas de desenvolvimento.
Para clarear as idéias(ou ideias de acordo com as novas regras gramaticais) vou apresentar um exemplo conhecido como "Double Brace Initialization" ou Inicialização Dupla Chave.
Vejam o código abaixo:

private Set JaliVE = new TreeSet(){{
add("Fábio");
add("Mário");
add("Diego");
add("Ian");
}};


Repararam nas duas chaves? Apesar de não ser muito comum, essa abordagem é uma maneira bastante conveniente de inicializar coleções em Java.

Espero que tenham gostado. Em breve postarei mais sobre esse interessante assunto.

domingo, 14 de junho de 2009

Padrões de Projeto: Observer + Aspectos

Apresentamos o Padrão de Projeto Observer em 2 versões. Implementando todas as classes do padrão ou implementando com o uso das classes da API. Nos dois casos existem problemas para o reuso do código.
Para implementar o Padrão de Projeto podemos definir uma interface ou uma classe abstrata para o Subject. A classe concreta nos 2 casos vai ter "código extra" que não faz parte do negócio. Com o uso da interface Subject a classe Concreta deve implementar os métodos do padrão de projeto. Se utilizar a classe abstrata Suject a classe Concreta deve estender dessa classe impedindo que se faça reuso da classe por meio de herança (Java não permite herança múltipla).



/**
* Estendendo de uma classe abstrata Subject.
* Em vermelho código adicionado em virtude do padrão.
*
*/
public class ConcreteSubject extends Subject {

private int estado = 0;

public int getEstado() {
return estado;
}

public void setEstado(int estado) {
this.estado = estado;
this.notifyObservers(estado);
}

}


Isso levanta uma discussão quanto ao uso desse padrão e a possibilidade de reuso das classes. Uma outra forma de implementar o padrão é utilizando aspectos, dessa maneira a classe a ser observada não ficaria com nenhum código estranho.



/**
* Utilizando Aspectos.
* O padrão é implementado sem interferir diretamente na classe ConcreteSubject.
*/
public class ConcreteSubject {
private int estado = 0;

public int getEstado() {
return estado;
}

public void setEstado(int estado) {
this.estado = estado;
}
}


Faça o download da versão utilizando Aspectos: PadraoObserverImpl_3.zip

No post anterior temos download de 2 formas de implementação do padrão e um exemplo de aplicação do padrão.