quinta-feira, 29 de outubro de 2009

Ubuntu 9.10 Liberado para Download

A poucos instantes o Ubuntu 9.10 foi liberado para download. Para fazer o download da sua cópia acesse aqui.
Essa nova versão traz algumas melhorias de design e software, veja aqui.

sábado, 24 de outubro de 2009

REST sem rodeios

REST (Representational State Transfer): é uma técnica de engenharia de software para sistemas hipermídia distribuídos como a Internet.

"A REST (Transferência do Estado Representacional) é pretendida como uma imagem do design da aplicação se comportará: uma rede de websites (um estado virtual), onde o usuário progride com uma aplicação selecionando as ligações (transições do estado), tendo como resultado a página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso." (Fielding,2000)

Os serviços Web RESTful são serviços construídos com o estilo de arquitetura RESTful. A construção de serviços Web com a abordagem RESTful está surgindo como uma alternativa popular ao uso de tecnologias baseadas em SOAP para implantação de serviços na Internet, por ser mais leve e possuir a capacidade de transmitir dados diretamente através de HTTP.

A JSR 311: JAX-RS: The JavaTM API for RESTful Web Services define uma especificação para java do RESTful e o Jersey é a implementação de referencia dessa especificação.

Despois dessa rapida explicação vamos a pratica e fazer o famoso "alô mundo" (Esse é na unha e pode ser feito em qualque IDE).

1. Crie um projeto Java
2. Baixe as seguintes bibliotecas:
. jersey-core
. jersey-server
. grizzly-servlet-webserver
. jsr311-api
. asm

3. Importe para o seu projeto as bibliotecas

4. Crie as seguintes classes:
a. Classe do Serviço

package br.javalinuxevatapa.jersey.resource;

import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

@Path("/alomundo")
public class AloMundoResource {
@GET
@Produces("text/plain")
public String getClichedMessage() {
return "Alô Mundo!";
}
}


b. Classe de implantação e execução

package br.javalinuxevatapa.jersey.teste;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.sun.grizzly.http.SelectorThread;
import com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory;

public class Inicio {

public static void main(String[] args) throws IOException {
final String baseUri = "http://localhost:9998/";
final Map initParams = new HashMap();
initParams.put("com.sun.jersey.config.property.packages","br.javalinuxevatapa.jersey.resource");
System.out.println("Starting grizzly...");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri,initParams);
System.out.println("baseUri: "+baseUri);
System.in.read();
threadSelector.stopEndpoint();
System.exit(0);
}
}


Para testar acesse cm o navegador http://localhost:9998/alomundo


Aguardem os proximos post
[]'s

terça-feira, 29 de setembro de 2009

Definitivo Mac OS X Snow Leopard e HP 1020

Como sei que cada vez mais tem gente utilizando Mac OS X, que é UNIX, isso me permite escrever sobre esse Sistema Operacional em um blog para linux. Bom a motivação tambem veio de que muita gente adiquiriu a HP 1020 (Como eu! Otima compra assim como o MacBook!) e o Mac OS X e a HP não liberou suporte para essa impressora no Mac OS X.

Na versão Leopard encontrei uma receita simples de como colocar os drivers para HP 1020 e funcionou tranquilo o problema é que atualizei para Snow Leopard (Vale a pena!) e a mesma receita não funcionou.

Já quase desistindo encontrei esse forum que me levou a essa pagina com o procedimento.

Demora e é um tanto chato mas funciona.

[]'s
Mario

terça-feira, 22 de setembro de 2009

Nova versão do Skype para Linux

Olá pessoal, vim aqui escrever pra informar aos usuários linux que saiu uma versão nova do skype para linux. A versão ainda é BETA, porém meus primeiros testes foram muito agradáveis. Portanto, recomendo.

Vale lembrar também que agora nas opções de download, pelo menos para ubuntu, vc pode escolher entre as plataformas 32 ou 64 bits.

url para download:

http://www.skype.com/download/skype/linux/choose/

Abraços

quinta-feira, 3 de setembro de 2009

Curso Ágil na Prática em Salvador (Scrum, XP, etc)

1. Apresentação

A Index TI, empresa especializada em metodologias ágeis, oferece o curso “Ágil na Prática”, composto por aulas presenciais teóricas e práticas, demonstrando a aplicabilidade das metodologias de gerenciamento e desenvolvimento ágil Scrum e XP (Extreme Programming) utilizando o framework Ruby on Rails.

2. O Curso

Serão apresentadas às práticas de Gerenciamento Ágil Scrum e XP, assim como as metodologias de desenvolvimento.

O aluno desenvolverá um software utilizando tecnologia Ruby on Rails com práticas ágeis, simulando um ambiente de desenvolvimento empresarial.

3. Treinamento

O curso será dividido em 3 módulos com abordagens práticas, totalizando 44 horas. No terceiro módulo será desenvolvido um software, aplicando os conceitos discutidos nos módulos anteriores.

Será ministrado em 4 finais de semana de 2009, nos dias:
25/09 (4 h/a) e 26/09 (8 h/a) – Gestão de projetos ágeis (Scrum e XP)
02/10 (4 h/a) e 03/10 (8 h/a) – Metodologias e desenvolvimento ágil (XP)
16/10 (4 h/a), 17/10 (8 h/a) e 24/10 (8 h/a) – Desenvolvimento de uma solução aplicando metodologias ágeis com Ruby on Rails

* Horários: Sextas-Feiras: 19h ás 22h / Sábados: 08h ás 17h
* *Em cada turno haverá um coffee break de 15 min

4. Local do curso

Prédio de aulas 7 da Unifacs - Rio Vermelho.

Maiores informações http://www.indexti.com/inscricoes

terça-feira, 1 de setembro de 2009

Java 7: As alterações aprovadas

No GUJ tem uma lista interessante de discussão sobre as alterações aprovadas no Java 7. Dêem uma olhada, vale a pena conferir.

1001 Utilidades para o Ubuntu

segunda-feira, 31 de agosto de 2009

Problema no PoliceKit do Ubuntu com usuários da rede

Na empresa onde eu trabalho, as estações de trabalho Ubuntu logam na rede através de um servidor Active Directory, através do pacote Likewise Open. Estava tudo bem, quando eu precisei alterar o ip da máquina e percebi que para fazer isso o Ubunto mostra uma tela do PoliceKit onde eu devo confirmar a senha do usuário, se o mesmo possuir privilégios para tal, e então realizar alguma alteração.
O problema começa aí, pois o PoliceKit não identifica o meu usuário, pois é um usuário de rede, e eu não consigo alterar graficamente o ip da máquina, tenho que fazer isso via linha de comando.
insatisfeito com essa solução, eu desativei o PoliceKit para alterações de conexão com a rede, o que me permite agora alterar graficamente o ip da minha máquina, mas ainda acho que esta não é a melhor solução.

sexta-feira, 21 de agosto de 2009

VRaptor 3 Beta Lançado pela Caelum

A Caelum liberou a versão beta do VRaptor 3, "um framework MVC para web focado no desenvolvimento ágil".
Eu, particularmente, utilizei a versão 2 do VRaptor em um projeto e gostei bastante dos resultados, acho que só faltou mesmo algum tipo de auxílio nos componentes JSP (TagLIB). Mas realmente a velocidade de desenvolver utilizando VRaptor é impressionante.

"Através da inversão de controle e injeção de depêndencias ele corta drasticamente o tempo de trabalho que seria perdido com o código repetitivo: validações, conversões, direcionamentos, ajax e lookups ".

Assim que puder, vou testar essa nova versão e posto aqui as minhas impressões sobre o framework.

Até mais!

quarta-feira, 19 de agosto de 2009

ANPAD



Equivalente ao Poscomp existe também o ANPAD mais voltado para Pós-Graduação na área de Administração.

Estão abertas as inscrições para a Edição de Setembro de 2009 do Teste ANPAD.

POSCOMP 2009



O Exame Nacional para Ingresso na Pós-Graduação em Computação (POSCOMP) é um exame aplicado em todas as regiões do País.

Para o POSCOMP 2009:
As inscrições do POSCOMP 2009 encontram-se abertas de 28 de julho a 31 de agosto de 2009.

A prova será realizada dia 27 de setembro de 2009.

A sua nota pode ser utilizada para seleção para Ingresso em cursos de Pós-Graduação em Computação (mestrados, doutorado, especialização).

Não Sócio da SBC R$ 35.00
Sócio da SBC R$ 30.00

Inscrevam-se vale a pena.

http://sistemas.sbc.org.br/poscomp2009/public/

quinta-feira, 13 de agosto de 2009

IE6 No More!

O JaLiVE está aderindo à campanha IE6 No More. Todos nós que trabalhamos com desenvolvimento para web temos muitos problemas para manter a compatibilidade com este browser, que já não representa mais a maioria dentro os browsers. Dê uma olhada no site e verifique todos os sites que já aderiram a essa campanha.

quinta-feira, 30 de julho de 2009

OndeTrabalhar.com - uma iniciativa da Caelum

Lançado mais um site de empregos OndeTrabalhar.com. Mas segundo a Caelum, este site é uma forma muito mais simples de fazer isso, sem ter que preencher formulários, milhares de filtros e tudo mais... Entenda aqui como o projeto funciona.
Esse é o post no Blog da Caelum que fala um pouco mais sobre a ferramenta e o seu lançamento.

quinta-feira, 23 de julho de 2009

Curso de JavaFX

Um curso de Java FX ministrado na UFPB.







Finalmente a versão 2.8 do skype para Mac OS X


Essa versão deixou o skype para Mac OS X em iguais condições com as versões para linux e windowns.

O que tem de novo:
- Compartilhamento de área de trabalho;
- Acesso a zonas skype WiFi, pagando com credito skype;
- Melhorias significativas na qualidade do som;

download

Gmail não é mais beta

Poucos perceberam mais a google removeu a pa;avra beta do gmail, do docs e de outros produtos.

Podemos pensar que foram 5 anos de teste do gmail e agora finalmente deixou de ser beta.

O que muda?

Aparentemente nada. Isso parece apenas uma estrategia para atrair uma fatia do mercado. princialmente empresas que não gostam da ideia de algo não estar inacabado.

As inovações continuam....

sábado, 18 de julho de 2009

Como instalar o Java media Framework (JMF) com suporte a mp3 no Mac OS X.


Java Media Framework (JMF) é uma API para o desenvolvimento de aplicações com recursos de multimidia. Essa API é usada para fazer captura de video e audio, reprodução de arquivos de mídia e distribuição de audio como video via streaming. Para criar aplicações com essas funcionalidades podemos utilizar a API JMF.

O primeiro passo é instalar a API e para windows, linux e Solares existem instaladores. Esse foi o meu primeiro problema, pois eu prefiro usar o Mac OS X. Nem tudo esta perdido existe no site uma versão Cross-platform Java. Então na hora do download podemos escolher qualquer plataforma e depois verifique que logo abaixo da versão referente a plataforma existe a versão cross-plataform.
(http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html)

Depois do download, descompacte o arquivo jmf-X_x_x.zip.
Copie toda a pasta descompactada para /volume/Developer/

Para o suporte a mp3 faça o download da JMF MP3 Plugin (http://java.sun.com/javase/technologies/desktop/media/jmf/mp3/download.html)

Descompacte o arquivo javampX-x_x.zip
Dentro da pasta descompactada copie o arquivo mp3plugin.jar que esta em /lib/ext para
/volume/Developer/jmf-X_x_x/lib e para /volume/Library/Java/Extensions

Copie tambem o jmf.jar que esta dentro da pasta /volume/Developer/jmf-X_x_x/lib para a pasta /volume/Library/Java/Extensions

Através do Terminal execute o arquivo jmfinit que esta na pasta jmf-X_x_x/bin/
Ao executar o Terminal deve apresentar as seguintes informações:
JavaSound Capture Supported = true
JavaSoundAuto: Committed ok

Ainda no terminal execute o arquivo jmfregistry na pasta jmf-X_x_x/bin/
Selecione a aba PlugIns e depois a aba Codec.

No campo de texto ao lado do botão add digite a seguinte caminho para a classe com.sun.media.codec.audio.mp3.JavaDecoder e depois clique no botão Add.

Verifique na lista se a classe foi adicionada, clique na linha.

Clique em Commit e feche o jmfregistry.

Para testar execute o jmstudio.

Vá File, open file, procure um arquivo de audio no formato mp3 e abra.

Execute o mp3 e se você ouvir o arquivo a instalação esta ok!

quinta-feira, 16 de julho de 2009

Regulamentação da profissão Analista de sistemas e correlatas

O Projeto de Lei número 607 de 2007 em trâmite no Senado Federal, que dispõe sobre a regulamentação do exercício da profissão de Analista de Sistemas e suas correlatas, cria o Conselho Federal e os Conselhos Regionais de Informática e dá outras providências, recebeu relatório positivo na Comissão de Constituição e Justiça (com correções), recentemente publicado em 09/07/2009.
Segundo a proposta, embora os Conselhos tenham caído na revisão pela CCJ, teríamos uma espécie de “OAB da Informática”, conselhos existentes que passam a gerir a atividade e a habilitação dos profissionais de tecnologia da Informação. O Projeto foi em março de 2008 aprovado na Comissão de Ciência e Tecnologia.
Você sempre trabalhou com informática mas não tem formação na área? Comece a se preocupar com o tema! Porém aí vai o alívio: se comprovar 5 (cinco) anos de profissão na época da entrada em vigor da Lei, permanecerá com seu emprego e profissão.

Acompanhe o andamento do projeto de lei aqui

Particularmente acho uma maravilha, a nossa profissão com o passar do tempo está ficando cada vez mais desvalorizada. E se o médico, advogado ou contador tem a proteção da lei sobre sua profissão, porque nós também não poderíamos ter? Já que lidamos no dia a dia com softwares que gerenciam informações tão importantes, que podem tratar desde toda a movimentação financeira de uma empresa até a vida de um paciente no hospital que precisa de um aparelho para sobreviver.

terça-feira, 14 de julho de 2009

Sun Java Programmer Plus Certification

A Sun Microsystems anunciou a mais nova certificação java: Sun Java Programmer Plus Certification, com o objetivo de comprovar habilidades de programação, projeto e solução em geral.

Leia mais no blog da Vanessa Claessen de Miranda.

quarta-feira, 8 de julho de 2009

Google estreia Sistema Operacional próprio em 2010

A gigante de Softwares Google anuncia através de seu blog oficial que está desenvolvendo um sistema operacional para computadores pessoais. A companhia vai contar com a ajuda da comunidade de desenvolvedores de código aberto para criar o sistema operacional, que deve estar disponível a partir do segundo semestre de 2010.
O Google Chrome OS será voltado inicialmente para netbooks, computadores portáteis menores, mais baratos e com menos recursos que os laptops. Máquinas equipadas com o Google Chrome OS devem estar no mercado em meados do ano que vem. A idéia é, no futuro, usar o sistema operacional também em PCs.

Os autores do post, Sundar Pichai, vice-presidente de produtos do Google, e Linus Upson, diretor-engenheiro da empresa, disseram que o novo sistema foi desenhado "para ser rápido e leve, iniciar e levá-lo para a internet em questão de segundos".
"Os sistemas operacionais que os usuários têm à disposição foram desenhados em uma era em que não havia a rede", eles argumentaram, acrescentando que o Chrome OS é "nossa tentativa de repensar o conceito de sistemas operacionais".
A pesquisa levou os programadores de volta aos princípios, afirmaram. "Estamos redesenhando completamente a arquitetura de segurança subjacente do sistema, de forma que os usuários não tenham que lidar com vírus, programas malignos e atualizações de segurança."

Blog oficial: googleblog.blogspot.com

terça-feira, 7 de julho de 2009

Liberado PostgreSQL 8.4.0

Para os usuários de banco de dados opensource, finalmente saiu a versão 8.4 do PostgreeSQL, na minha humilde opinião, o melhor SGBD freeware/opensource e ainda melhor do que alguns SGBD pagos. Veja aqui as notas da versão. Aqui você pode fazer o download da versão 8.4 para o S.O. que desejar (FreeBSD, Linux, Mac OS X, Solaris e Windows ).

Como alterar diretório root do tomcat

Recentemente no trabalho precisamos fazer essa alteração para que o caminho padrão do tomcat fosse uma aplicação nossa em vez do diretório ROOT. Entrei em vários foruns, jugs e etc sobre java em busca dessa informação mas foi difícil. Vi muitas perguntas e poucas respostas e a maioria dessas poucas respostas não atendia. Eis que enfim encontrei um site que dizia como fazer. Infelizmente, por estar meio na correria pois tinha que passar essa informação com certa urgência para um colega de trabalho, eu não anotei o endereço onde encontrei a informação mas gostaria de deixar aqui a informação para quem também precisar.

Entre no diretório
/conf/

procure o arquivo server.xml

localize a tag:
<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">


e insira a tag dentro dela
 <context path="" docbase="nomedasuaaplicacao" debug="0"/>



ficaria mais ou menos assim:

 <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<context path="" docbase="nomedasuaaplicacao" debug="0"/>
</host>



Por enquanto é só, espero que a informação tenha sido útil


Abraços

Ganhe Brindes da Eclipse Foundation

A Empresa Eclipse Foundation quer ouvir o que os usuários pensam do release Eclipse Galileo,
e está convidando a comunidade a publicar reviews, que podem ser na língua nativa.

Os vencedores ganharão brindes como entradas para EclipseCon 2010 ou Eclipse Summit Europe 2009,
jaquetas do Eclipse, camisetas do Eclipse.

Serão aceitos trabalhos postados até 31/07/2009 às 16:00 EST (18:00 pelo horário de Brasília).

Fonte: GUJ

sábado, 4 de julho de 2009

Tecla Hospedeira e problemas com Resolução de tela na VirtualBox do Ubuntu

Olá Todos, para abrirmos os trabalhos do mês de Julho, voltaremos a falar sobre VirtualBox.
No ultimo post mostramos como é simples instalar a VirtualBox em seu Ubuntu, - sem trocadilhos, por favor, hein?! Hoje, conforme prometido, falaremos sobres dicas para simplificar mais ainda a usabilidade da VirtualBox. De teclados em punho?!
Pressupondo que sua VirtualBox está funcionado normalmente, eu também posso supor que você precisa ficar ativando e desativando a tecla Hospedeira (CTRL lado direito) para alternar o teclado e o mouse entre os dois S.O.. Além disso enfrenta problemas diversos com a resolução da tela no S.O. hospedeiro. Para a VirtualBox gerenciar a melhor resolução da janela em qualquer tamanho, e permitir alternar entre os dois S.O. normalmente como se fosse uma janela comum, siga os passos abaixo:
1) Abra a sua VirtalBox, clique na opção Geral -> CD/DVD-ROM. Na tela que se mostrará, selecione a opção arquivo de imagem ISO;
2) Provavelmente o arquivo ISO (VBoxGuestAdditions.iso) já estará disponível, mas se não apareceu vamos encontrá-lo. Clique no ícone da pasta, a direita da tela, para abrir a janela onde encontraremos a ISO. Na tela que que se abriu selecione o botão Adicionar, navegue até a pasta /usr/share/virtuabox, selecione o arquivo VBoxGuestAdditions.iso e clique em abrir. O resultado dever algo do tipo:3) Clique em selecionar, depois Ok e pronto, sua VirtualBox já está com a imagem do disco que contém os arquivos de configuração que vc precisa instalar no seu S.O. hospedeiro. Inicie seu S.O. hospedeiro e instale o pacote de softwares disponível na ISO montada dentro do hospedeiro. Não há o que responder, é só clicar em avançar e ser feliz. Se precisar, reinicie seu S.O. hospedeiro e PUFF! Esqueça a tecla hospedeira e os problemas com a resolução da tela;4) Para voltar a acessar a unidade de CD/DVD normalmente, não esqueça de voltar na tela onde configurou a imagem ISO e selecionar Drive de CD/DVD do hospedeiro e habilitar a função PassThrough;
5) Aproveitando que já viemos até aqui, lá vai mais uma dica. Ainda na tela de configuração da VirtualBox, na opção USB, clique no ícone de adicionar para marcar quais os dispositivos USB poderão ser reconhecidos pelo S.O. hospedeiro.Bem, acho que por hoje é só hehehehe..., se surgir alguma dúvida sobre esse ou qualquer outro assunto deixe um comentário que lhe responderemos assim que pudermos, não sabemos tudo, mas o pouco que sabemos é compartilhado. Espero ter ajudado, um forte abraço.

"May The Force be with you!"

segunda-feira, 29 de junho de 2009

Netbeans 6.7 - O que tem de novo!

Mais breve impossível. (he he he)

Vamos direto ao assunto, o quem tem no Netbens 6.7:

1. Integração com o projeto Kenai, super falado na Java One . O Project Kenai (http://kenai.com/) é um ambiente colaborativo para os desenvolvedores hospedarem seus projetos open-source de forma bem simples e agora integrado ao Netbeans (acho que vale um post sobre o projeto!)

2. Struts (http://struts.apache.org/) migrado para a versão 1.3.8

3. Suporte nativo ao Maven (http://maven.apache.org/)

4. Integração com o Hudson (https://hudson.dev.java.net/)

5.Glassfish v3 Prelude (https://glassfish.dev.java.net/) pré-configurado e com Derby (Java DB - http://db.apache.org/derby/) integrado.

6. Groovy e Grails completando código e mais umas firulas.

7. Para quem gosta do Qt (http://www.qtsoftware.com/) agora tem integração e suporte a biblioteca Qt.

8. JME e Java Card agora com suporte ao JDK 3.0

9. Melhorias no Profiler e no Debugger (Que ainda vou futucar mais!)

10. Mais apoio aos desenvolvedores PHP, C e C++.

Acho que para inicio de conversa está bom!

[]'s

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.

quinta-feira, 11 de junho de 2009

Padrões de Projeto: Observer

Os Padrões de Projeto são soluções genéricas para problemas recorrentes, “cada padrão descreve um problema no nosso ambiente e o cerne da solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira”(Alexander, C. et al. apud Gamma, E. et al., 2000).

Ao utilizar um padrão de projeto na solução de um problema no desenvolvimento do software significa que optamos por uma solução de boa qualidade e já testada.

O padrão Observer é também conhecido como Publish-Subscribe, Event Generator ou Dependents (Salve, J.,2008). Esse padrão é endereçado a família de problemas que tem a intenção de “definir uma dependência um-para-muitos entre objetos, de maneira que quando um objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente” (Gamma, E. et al., 2000 ).

O padrão Observer que é aplicável quando a alteração no estado de um objeto implica em notificar ou alterar outros objetos. Além disso, os objetos que vão sofrer alteração ou ser notificados não são conhecidos pelo objeto que sofreu a mudança, conseguindo assim um fraco acoplamento.

No padrão Observer temos um objeto que será observado, chamado de Subject. Na API Java temos as classes java.util.Observable e java.swing.EventSource são implementações do Subject. Temos também o objeto que observa e é notificado chamado de Observer, em Java as classes que o implementam são java.util.Observer e o java.swing.Listener. Java usa o padrão na API de duas formas diferentes (Sauvé, J.,2006).



Download de uma implementação do Observer completa: PadraoObserverImpl_1.zip
Download de uma implementação do Observer com uso das classes da API java.util.Observable e java.util.Observer : PadraoObserverImpl_2.zip

Para exemplificar o uso do padrão de projeto Observer definimos uma aplicação que vamos chamar de “Bolsa de Valores”. Essa aplicação obtém o índice da bolsa de valores e exibe em formato texto ou em um gráfico. (Exemplo completo disponível no artigo download)

Download da implementação do Observer aplicado ao exemplo da Bolsa de Valores: PadroObserverBolsa.zip




Considerações:

O padrão atende as expectativas reduzindo bastante o acoplamento entre as abstrações. No entanto, em java, quando o ConcreteSubject precisa estender a classe Subject não pode estender de outra classe dificultando sua reutilização.

Na solução do padrão Observer apresentada existe apenas um método de atualização onde devemos passar o Subject ou o estado do Subject. Isso torna a missão de descobrir quem disparou a mudança no estado uma tarefa árdua (Sauvé, J., 2006).

A solução de proposta utilizando o Listner (equivalente ao Observer) é implementa pelo Java Swing. Permite a criação de vários eventos que são disparados executando os métodos associados. Ela também facilita a descoberta da fonte do evento. Conseguimos obter um código mais claro e os observares são registrados de forma mais específicada (Sauvé, J., 2006).

As duas implementações do padrão Observer citadas tem problemas pois tanto o ConcreteSubject quanto o ConcreteObserver não estão apenas com seus métodos de “negócio”. É necessário inserir código para tratar o problema da notificação dos observadores não sendo possível a reutilização direta desses objetos.

Espero ter contribuído para seus estudos sobre padrões de projeto.

1001 utilidades em Java


O nome da biblioteca é Alfred mais poderia se chamar "BomBril".
Alfred é uma biblioteca para Java que contém dezenas de classes utilitárias que faz de tudo para você. Desde uma simples formatação de CPF ao cálculo de envio de encomendas por Sedex.

Mais informações: http://code.google.com/p/alfredlibrary/

Eu já estou contribuindo para essa iniciativa e você também pode contribuir.

Parabéns ao meu grande amigo Marlon por essa iniciativa e valeu por ter me chamado para entrar nessa.

terça-feira, 9 de junho de 2009

Java é 10, Linux é 10 e o Java, Linux e Vatapá é 100!

Chegamos ao centésimo post e a família Java, Linux e Vatapá cresceu.

Parabéns a todos que vem contribuindo com post's, comentários, acessos e divulgação. Isso nos da mais vontade de postar. :)

Seus comentários e acessos é que direcionam as informações que são adicionadas.

Site Nerd (Geek)


Moda Geek, esse site já vende tudo que um Nerd precisa para viver, acessórios, roupas e diversas utilidades. Vale a pena conferir:
http://www.thinkgeek.com/

Os produtos vão de relógio que apresenta as horas em binário ate camisetas que mostram o nivel do sinal wireless do local.

JaLiVE Google Search Firefox Plugin

Nós, do blog JaLiVE, estamos sempre pensando em facilitar a sua vida, caro leitor. Sendo assim, criamos um Search Plugin para firefox, que permite você fazer as buscas no nosso blog sem a necessidade de acessá-lo primeiro.

Siga os passos:

faça o download do arquivo xml clicando aqui

Salve o arquivo na pasta:

LINUX:
/usr/lib/firefox-addons/searchplugins

WINDOWS: (Algum leitor utiliza mesmo isso?)
c:\arquivos de programas\mozila... sei lá não lembro não, é na pasta searchplugins do firefox. Blz?

Feito isso é só reiniciar o firefox e verificar se consta na lista o google-jalive


Abraços! :)

Receita de Vatapá Baiano em Java

Pegando um gancho na receita da Família de Obi-Allan Kenobi, tentei recriar esta em Java, como o mesmo havia dito, ficou um pouquinho grande, mas em relação ao entendimento acho que consegui manter o nível necessário para o propósito desse blog, tentei seguir as explicações originais da receita e construir a implementação desse delicioso prato típico, o Vatapá.

public class Pao {
private Double quantidade;
private Double dureza;

public Pao(Double quantidade, Double dureza) {
this.quantidade = quantidade;
this.dureza = dureza;
System.out.println(this.quantidade + " pães");
}

public Double getDureza() {
return dureza;
}

public void setDureza(Double dureza) {
this.dureza = dureza;
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public Pao getPapaDePaoMole(){
System.out.println("amolecendo o pão com leite de côco");
LeiteCoco leiteCoco = new LeiteCoco(this.quantidade);
leiteCoco.amolecerPao(this);
return this;
}
}

public class LeiteCoco {
private Double quantidade;

public LeiteCoco(Double quantidadePao) {
this.quantidade = quantidadePao/5;
System.out.println(this.quantidade + " litro(s) de leite de côco");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public void amolecerPao(Pao pao){
Double dureza = pao.getDureza();
System.out.println("o pão já está quase amolecido...");
while(dureza > 0.2){
dureza -= 0.25;
pao.setDureza(dureza);
}
System.out.println("o pão já está pronto, mais mole que isso vai virar sopa hehehe");
}
}

public class Cebola {
private Double quantidade;
private Double partes;

public Cebola(Double quantidadePao) {
this.quantidade = (quantidadePao*2)/5;
this.partes = quantidade;
System.out.println(this.quantidade + " Cebolas");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

private void cortarCebola(){
System.out.println("Cortando as Cebolas");
while((this.partes/this.quantidade) < 25){
this.partes *= 2;
}
System.out.println("Cebolas prontas e bem cortadas");
}

public Cebola getCebolaCortada(){
cortarCebola();
return this;
}
}

public class Alho {
private Double quantidade;
private Double partes;

public Alho(Double quantidadePao) {
this.quantidade = (quantidadePao*6)/5;
this.partes = quantidade;
System.out.println(this.quantidade + " Alhos");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

private void cortarAlho(){
System.out.println("Cortando os Alhos");
while((this.partes/this.quantidade) < 4){
this.partes *= 2;
}
System.out.println("Alhos prontos e bem cortados");
}

public Alho getAlhoCortado(){
cortarAlho();
return this;
}
}

public class CamaraoSeco {
private Double quantidade;
private Boolean descascado = false;

public CamaraoSeco(Double quantidadePao) {
this.quantidade = (quantidadePao*250)/5;
System.out.println(this.quantidade + " Gramas de Camarão seco");
}

public Double getQuantidade() {
return quantidade;
}

public void ajustarQuantidadeProporcional() {
this.quantidade = (this.quantidade*100)/250;
System.out.println("dessa segunda porção precisaremos apernas de " +this.quantidade + " Gramas para ser adicionados depois");
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public Boolean getDescascado() {
return descascado;
}

public void setDescascado(Boolean descascado) {
this.descascado = descascado;
}

public void descascarCamaraoSeco(){
System.out.println("Descascando o Camarão seco");
this.descascado = true;
System.out.println("Camarão seco descascado e pronto para usar");
}
}

public class Amendoim {
private Double quantidade;
private Boolean torrado = false;

public Amendoim(Double quantidadePao) {
this.quantidade = (quantidadePao*250)/5;
System.out.println(this.quantidade + " Gramas de Amendoim");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public Boolean getTorrado() {
return torrado;
}

public void setTorrado(Boolean torrado) {
this.torrado = torrado;
}

public void torrarAmendoim(){
System.out.println("Torrando o Amendoim");
this.torrado = true;
System.out.println("Amendoim torrado e pronto para usar");
}
}

public class CastanhaCaju {
private Double quantidade;
private Boolean torrado = false;

public CastanhaCaju(Double quantidadePao) {
this.quantidade = (quantidadePao*250)/5;
System.out.println(this.quantidade + " Gramas de Castanha de Caju");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public Boolean getTorrado() {
return torrado;
}

public void setTorrado(Boolean torrado) {
this.torrado = torrado;
}

public void torrarCastanhaCaju(){
System.out.println("Torrando a Castanha do Caju");
this.torrado = true;
System.out.println("Castanha do Caju torrada e pronta para usar");
}
}

public class AzeiteDende {
private Double quantidade;
public Double temperatura = 16.0;
public Boolean muitoQuente = false;

public AzeiteDende(Double quantidadePao) {
this.quantidade = (quantidadePao*1.5)/5;
System.out.println(this.quantidade + " litro(s) de Azeite de Dendê");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}
}

public class Gengibre {
private Double quantidade;
private Boolean ralado = false;

public Gengibre(Double quantidade) {
this.quantidade = quantidade;
System.out.println(this.quantidade + " Gramas de Gengibre (esta medida é a gosto)");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}

public void ralarGengibre(){
System.out.println("Ralando o Gengibre");
this.ralado = true;
System.out.println("Gengibre ralado e pronto para usar");
}
}

public class Sal {
private Double quantidade;

public Sal(Double quantidade) {
this.quantidade = quantidade;
System.out.println(this.quantidade + " Gramas de Sal (esta medida é a gosto)");
}

public Double getQuantidade() {
return quantidade;
}

public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}
}

public class Liquidificador {

public Liquidificador() {
System.out.println("Ligando o Liquidificador...");
}

public Massa baterMassa(Pao pao, Cebola cebola, Alho alho, CamaraoSeco camaraoSeco, Amendoim amendoim, CastanhaCaju caju, Gengibre gengibre, Sal sal){
System.out.println("batendo a massa...");
return new Massa(pao, cebola, alho, camaraoSeco, amendoim, caju, gengibre, sal);
}
}

public class Massa {
String situacaoDaMassa = "";
Double ponto = 2.0;

public Massa(Pao pao, Cebola cebola, Alho alho, CamaraoSeco camaraoSeco, Amendoim amendoim, CastanhaCaju caju, Gengibre gengibre, Sal sal) {
this.situacaoDaMassa = "Massa em fase de preparação!!!";
}

public String getSituacaoDaMassa() {
return situacaoDaMassa;
}

public void setSituacaoDaMassa(String situacaoDaMassa) {
this.situacaoDaMassa = situacaoDaMassa;
}

public Double getPonto() {
return ponto;
}

public void setPonto(Double ponto) {
this.ponto = ponto;
}
}

public class PanelaGrande {

public PanelaGrande() {
System.out.println("Colaca a panela no fogo");
}

public void esquentarAzeiteDende(AzeiteDende azeiteDende){
System.out.println("Esquentando o Azeite de Dendê");
while(!azeiteDende.muitoQuente){
if(azeiteDende.temperatura > 90){// heheh
azeiteDende.muitoQuente = true;
System.out.println("Azeite de Dendê ja está no ponto, agora joga a massa p dentro da panela hhehe... aos poucos é claro");
}
azeiteDende.temperatura += 2.5;
}
}

public void colocarMassaAosPoucos(Massa massa){
System.out.println("colocando a massa, aos poucos, e mexendo a gororoba que formou hehehehe");
}

public void colocarCamaraoDescascado(CamaraoSeco camaraoSeco){
System.out.println("agora adicionado mais "+camaraoSeco.getQuantidade()+" de camarao seco descascado... deve tar um cheiro só kkkkkkkkkkkkkkkkkkk");
}

public void etapasFinais(Massa massa){
System.out.println("Continue mexendo até que a mistura solte, sem dificuldades, da panela.");
Double ponto = massa.getPonto();
while(ponto < 10){
ponto += 1;
massa.setPonto(ponto);
if(ponto == 8){
System.out.println("Já está quase no ponto, mexa só mais um pouquinho.");
}
}
massa.setSituacaoDaMassa("vatapa Pronto");
System.out.println(massa.getSituacaoDaMassa());
}
}

public class Vatapa {
public static void main(String[] args) {
System.out.println("\n\n iniciando o preparo do vatapá\n\n");
Pao pao = new Pao(5.0,2.3);
pao = pao.getPapaDePaoMole();
Cebola cebola = new Cebola(pao.getQuantidade());
Alho alho = new Alho(pao.getQuantidade());
CamaraoSeco camaraoSeco = new CamaraoSeco(pao.getQuantidade());
CamaraoSeco camaraoSecoDescascado = new CamaraoSeco(pao.getQuantidade());
camaraoSecoDescascado.ajustarQuantidadeProporcional();
camaraoSecoDescascado.descascarCamaraoSeco();
Amendoim amendoim = new Amendoim(pao.getQuantidade());
amendoim.torrarAmendoim();
CastanhaCaju castanhaCaju = new CastanhaCaju(pao.getQuantidade());
castanhaCaju.torrarCastanhaCaju();
AzeiteDende azeiteDende = new AzeiteDende(pao.getQuantidade());
Gengibre gengibre = new Gengibre(5.0);
gengibre.ralarGengibre();
Sal sal = new Sal(5.0);

Liquidificador liquidificador = new Liquidificador();
Massa massa = liquidificador.baterMassa(pao, cebola, alho, camaraoSeco, amendoim, castanhaCaju, gengibre, sal);

PanelaGrande panelaGrande = new PanelaGrande();
panelaGrande.esquentarAzeiteDende(azeiteDende);

panelaGrande.colocarMassaAosPoucos(massa);
panelaGrande.colocarCamaraoDescascado(camaraoSecoDescascado);

panelaGrande.etapasFinais(massa);

}
}

Allan, espero ter mantido a mesma qualidade da receita de sua familia e aproveitando o embalo, só falta agora vc convidar a galera pra esperimentar este prato, pois não tenho dúvida que todos ficamos com agua na boca so em ler esta receita hehehe...

"editado"
...quem enxergar alguma melhoria para o código acho interessante a postagem da mesma, o blog agradece.

download do código fonte

Esse Aqui Eu Recomendo: VLC

Mais um software para a nossa lista: VLC. Para quem não conhece o VLC é um tocador multimídia opensource (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...), CD, DVD e alguns protocolos de streaming.
Eu, particularmente, utilizo o VLC para assistir DVDs, já que ele trabalha com ISOS e legendas super bem. Além de opensource o VLC é multi-plataforma, permitindo que você o utilize em diversos sitemas operacionais. Para fazer o download do VLC utilize esse link.
neste link você pode conferir a lista completa de funcionalidades do VLC, comparadas por cada sistema operacional que ele roda.
É possível utilizar o VLC também como um servidor de stream, eu não testei essa funcionalidade ainda, segundo esse link aqui.
Para saber mais sobre como usar o VLC Media Player acesse os links abaixo:

segunda-feira, 8 de junho de 2009

Receita de Vatapá Baiano

Olá Pessoas, em função do grande número de solicitações para postarmos uma receita tipicamente baiana de preparo do nosso famoso Vatapá, eu consegui, por muito custo, uma receita do preparo dessa deliciosa massa que pertence a minha família a séculos. Então mãos a "massa":

public class Vatapa{
private String papaDePaoMole;
private String camaraoSeco;
private String cebola;
private String denteAlho;
private String gengibre;
private String amendoimTorrado;
private String castanhaCajuTorrada;
private String azeiteDende;
private String sal;

public vatapa(){
.
.
.
}
}



Não!! É só uma brincadeirinha. eu juro que até tentei fazer uma classe Java explicando uma receita de vatapá, mas ficaria muito grande e de entendimento complicado. Como esse não é o proposito do nosso blog, resolvi postar a receita da Vovó da maneira tradicional. Mas, enquanto sua Vovozinha copia a receita deixamos o desafio de escrever uma classe mais simples e enxuta possível para explicar a receita abaixo.

-> RECEITA DE VATAPÁ PELA FAMÍLIA LOPES GOMES:

- INGREDIENTES
05 Pães amolecidos em 01(um) litro de leite de côco;
02 Cebolas grandes;
06 Dentes de Alho;
250 Gramas de Camarão seco;
250 Gramas de Amendoim torrado;
250 Gramas de Cajú (Cajy para os engraçadinhos);
1/2 Litro de Azeite de Dendê;
Gengibre ralado a gosto;
Sal a gosto.

- MODO DE FAZER
Bata, no liquidificador, todos os ingredientes menos o Azeite de Dendê. Numa penela grande, esquente bem (muito mesmo, viu?) o Azeite de Dendê, e quando tiver bem quente coloque, aos pouco, a massa batida no liquidificador sempre mexendo com uma colher de pau. Após colocar toda a massa adicione mais 100 gramas de camarão seco descascado e inteiro e continue mexendo até que a mistura solte, sem dificuldades, da panela.

Bem, se minha Mãe não estiver escondendo o jogo é simples assim, mas ela garantiu que o segredo são os ingredientes que compõem a massa batida no liquidificador. Quem se habilita a tentar?!?!

Fico no aguardo dos comentários para saber o sucesso da execução desse projeto. Boa sorte a todos e até a próxima.

domingo, 7 de junho de 2009

Criando um live USB do (K)Ubuntu a partir do Windows

Olá pessoal! A convite de Mário Jorge, estou iniciando minhas atividades neste famigerado blog. Primeiramente, parabenizo os atuais colaboradores pela qualidade crescente do conteúdo aqui presente. Agora voltemos ao tema desta postagem.
Para quem não está familiarizado, um live USB é um pendrive contendo uma distribuição linux inicializável. É como os populares live CDs, com a vantagem de poder armazenar dados. Mas por que alguém precisaria de um live USB? Vou elencar alguns motivos plausíveis:
  1. Memória estendida (o espaço livre do pendrive);
  2. Ambiente verdadeiramente móvel, com informações de usuário, configurações e documentos comuns armazenados;
  3. Não ter que gravar um CD-R a cada lançamento de uma nova versão da sua distribuição;
  4. Instalar o linux em um computador sem leitor de cd.
No meu caso foi uma variante da opção 4, já que eu tinha o leitor mas o mesmo não funcionava :D. Para resolver esse problema, recorri a dois programas: o UNetbootin e o fedora live-usb creator. Eles tem a finalidade de converter uma imagem iso de um live CD num live USB. Existem outros, mas para windows são os mais conhecidos. Como possuo o windows instalado(não me matem!!!) ,adotei essa opção. O primeiro funciona, mas como não detalha claramente o andamento do processo de gravação, você fica com a impressão de que ocorreu um
erro. Depois de mais de uma hora nos mesmos 6% de conclusão, resolvi fechar testar o da fedora.
Um detalhe importante é que eu pretendia instalar o kubuntu. Obviamente, imaginei: "será que vai funcionar? Estou com o Kubuntu, não com o fedora!". A resposta é sim. O bichinho funcionou perfeitamente.
Como vocês podem ver na figura, a utilização é bem simples. Basta escolher a iso, indicar o diretório que está mapeando o pendrive e informar a quantidade de espaço disponível para o usuário salvar arquivos.
Agora estou com meu kubuntu 9 lindão, graças a Fundação Fedora...
Considerações finais:
  1. É necessário um pendrive de pelo menos 1Gb.
  2. Sua placa-mãe deve permitir o boot a partir de um pendrive. Talvez você precise garimpar um pouco na bios, mas hoje em dia qualquer placa-mãe respeitável tem essa opção.
  3. É preciso um pouco de paciência. É um processo lento. Bota lento nisso. Deixei gravando, fui assistir o jogo Brasil x Uruguai e quando voltei estava... na metade.
  4. Creio que o live USB estava usando o espaço livre do pendrive como estensão da RAM, porque apesar de eu não ter configurado, o boot foi extremamente rápido.
Galera, é isso. Até a próxima.

sexta-feira, 5 de junho de 2009

Google Chrome para Linux e MAC

O google acaba de lançar uma versão do Chrome para Linux e MAC. Pra quem não sabe o Chrome é um browser desenvolvido pelo google que se destaca, entre outras coisas por separar para cada aba um processo diferente. O browser ainda está "verde", pois não foi testado o suficiente e ainda não possui certas funcionalidades, por exemplo, poder visualizar videos do youtube. O objetivo é ter um retorno maior dos desenvolvedores pra que adiantem mais o projeto.
Os executivos da empresa pedem que os usuários não baixem o programa ao menos que sejam desenvolvedores. Eles explicam que as versões do software ainda estão incompletas, imprevisíveis e potencialmente falhas.

quarta-feira, 3 de junho de 2009

RUP - Rational Unified Process

O RUP (Rational Unified Process®) é um processo de engenharia de software. Esse processo está baseado em um conjunto de boas práticas. Com o objetivo de apoiar o desenvolvimento de software de forma produtiva, com qualidade, no prazo, no custo e atendendo às necessidades dos clientes.

Perfeito, então existe um processo de software definido e pronto para ser utilizado?
Não é bem assim, o RUP é um processo bem completo mas pode não atender as suas necessidades ou você não precisa de todas aquelas atividades.
Então o RUP deve ser customizado, adaptado, para sua necessidade?
Sim, mantendo como base as boas práticas.

E quais são as boas práticas?
Desenvolvimento iterativo de software
Gerenciamento de requisitos
Uso de arquitetura baseada em componentes
Modelagem visual de software (UML)
Verificar qualidade de software
Controle de alterações no software


O RUP tem um software?
Sim, a rational desenvolveu um software que permite editar o processo e gerar um site, base de conhecimento, do processo que voce customizou.


Existe uma site que permite que voce de uma olhada nesse software:
http://www.wthreex.com/rup/

Indicação de Livro: Reuso de Componentes


C.R.U.I.S.E - Component Reuse in Software Engineering

É um livro disponibilizado pelo grupo RiSE (Reuse in Software Engineering - http://www.rise.com.br) do C.E.S.A.R (Centro de Estudos e Sistemas Avançados do Recife - http://www.cesar.org.br).
O livro tem o objetivo de contribuir para a disseminação dos conceitos e paradigmas de reuso de software. Ele pode ser usado nos para um aprofundamento em engenharia de software ou para iniciar os estudos sobre reuso. Mesmo com todos os autores brasileiros o texto está em inglês.

Vale a pena o download.
Component Reuse in Software Engineering (http://cruise.cesar.org.br).

Certificação Java: Declaração de Arrays

Sobre declarações de arrays temos:

1. String[] str = new String[]{"teste", "teste", "teste"};
2. String str[] = new String[]{"teste", "teste", "teste"};
3. String str[] = new String(){"teste", "teste", "teste"};
4. Integer[] inteiro[] = {{1,2,3},{1,2,3},{1,2,3}};

Qual a opção correta?

A) 1, 2 e 4 estão corretas
B) Apenas a alternativa 4 está correta
C) Apenas 2 e 4 estão corretas
D) Todas estão corretas
E) Todas estão incorretas



resposta correta:
letra A

EDIT:

Conforme sugerido por Diego, segue explicações sobre as alternativas:
1) Nesta alternativa, ao mesmo tempo que eu crio um array eu já adiciono seus elementos. Seria o mesmo que eu fizesse:
String[] str = new String[3];
str[0] = "teste";
str[1] = "teste";
str[2] = "teste";
2) Exatamente igual a alternativa 1 a única diferença é que o [] está no identificador e não no tipo da variável.

3) Está incorreto pois na declaração de um array vc não utiliza ();

4) Está correto o [] está tanto no tipo da variável quanto no identificador da mesma, o que transforma-a em um array multidimensional, e este está sendo estanciado e os valores sendo adicionados no momento da criação. Parecido com a alternativa 1 só que de forma multidimensional.

terça-feira, 2 de junho de 2009

Campanha Retake via Web

Comprando seu voucher pela web de 11 de Maio à 19 de Junho de 2009, você terá direito à segunda chance gratuitamente, caso não obtenha êxito na primeira tentativa !

Para adquirir é simples:

1. Acesse http://www.sun.com.br/edu, no tópico "Procurar por tipo de Produto" clique em "Certificações";
2. Identifique a certificação que você deseja obter com base em seus objetivos profissionais e de desenvolvimento pessoais;
3. Preencha corretamente o formulário e assegure que todos os campos estejam corretos;
4. Clique em "Confirmar e enviar pedido";
5. Aguarde o recebimento do boleto bancário, em até 15 dias úteis, no endereço de email cadastrado no formulário de compra;
6. Após a confirmação do pagamento, os vouchers serão enviados fisicamente para o endereço cadastrado no formulário de compra.

Dê os próximos passos, aprimore suas habilidades e avance em sua carreira!

Se tiver alguma dúvida ou desejar fornecer feedback, envie uma mensagem para sun.education@sun.com.

Esse Aqui Eu Recomendo: Transmission

Continuando com o trabalho da nossa coluna semanal aqui no blog, venho hoje falar de outro software open source que realmente vale a pena utilizar porque é muito bom: Transmission.

O Transmission é um cliente bit torrent multiplataforma muito eficiente e fácil de usar, sem a necessidade de muitas configurações. Já utilizei outros clientes, mas esse é realmente muito simples e objetivo. A página de download é essa.
Além da usabilidade do Transmission ser ótima, ele ainda se integra ao sistema operacional, facilitando ainda mais o seu uso. Leia mais sobre o Transmission aqui.

Só uma dica para quem deseja usar este tipo de software: lembre de liberar a porta configurada no Transmission no roteador, caso você use, pois isso pode diminuir a velocidade de download dos arquivos.
Até a próxima semana então.

domingo, 31 de maio de 2009

Os Nerds estão em alta.

Escolha do mete a cara, no garagem do Faustão Domingo (31/05/2009).


Mais um ponto para os Nerds!

quarta-feira, 27 de maio de 2009

Rational Comes to you: Palestra IBM


Recebi este folder por email o qual informa que dia 17/06 haverá evento da iBM, Rational Coms to you, em salvador, no Othon.
Eu me inscrevi, quem vai???

Clique na figura para maiores informações.

Free VirtualBox Webinar: Live from JavaOne

Pessoal, acabei de receber esta mensagem por e-mail e, como eu tenho certeza de que nem todos receberam, decidi compartilhar com vocês. Por motivos preguiçosos eu não vou traduzir o texto:

June VirtualBox Live Show
Live from the JavaOne Show Floor

Dear,
There's always something new and exciting with VirtualBox software. So join us straight from
JavaOne for the next edition of the VirtualBox Live Show where you'll see and hear:

- News from the Show
- How VirtualBox is powering one of the largest virtual desktop deployments live at the show
- News from the VirtualBox labs
- Q & A

The event happens live before a worldwide web audience, and we'll
take questions throughout the session, so come along!

WHO: Andy Hall, VirtualBox Product Manager and the team

WHAT: VirtualBox Live Show

WHEN: June 3, 2009, 8:00 am PDT / 11:00 am EDT / 15:00 UTC/GMT
(The presentation will be approximately 45 minutes long, followed
by Q&A.)

WHERE: Simply access the web seminar from the comfort of your
own office.

WHY: If you need a fast, easy and flexible enterprise-class
virtualization solution, you won't want to miss this webinar on the
world's most popular open source virtualization software.

Register now for the free VirtualBox Live Webinar.
If you have any questions or feedback, please send a message to virtualboxinquiries@sun.com.
Thank you,
Sun Microsystems, Inc.

Nerds são bons de cama

Saiu ontem na coluna Sexpedia, no site da Época, a divulgação de 2 pesquisas que atestam que "rapazes que trabalham no setor de tecnologia são menos egoístas na cama" e que "os nerds são os mais preocupados em dar prazer à parceira na cama".
Já que esta notícia massageia o ego de 100% dos colaboradores do blog, eu não podia deixar de postá-la.

terça-feira, 26 de maio de 2009

Obtendo uma Collection Java com DWR

Bem, o post está bem específico mas eu li em alguns foruns essa dúvida e por isso vou postar assim específico mesmo. Ou seja, esse post é para quem está começando a usar DWR.
Primeiro eu crio o método na minha classe RemoteProxy:

@RemoteProxy
public class Funcoes {

@RemoteMethod
public Collection obterMinhaLista() {
Collection lista = new ArrayList();
return lista;
}
}


As propriedades que eu quero usar do Bean devem ser mapeadas com Annotation:

@DataTransferObject
public class MeuBean{

@RemoteProperty
private Integer id;

@RemoteProperty
private String descricao;

...
}


Agora é só usar essa chamada no javascript do JSP que você desejar:

mapear esses arquivos na sua classe html, na seção head:
/dwr/interface/Funcoes.js
/dwr/engine.js
/dwr/util.js

----------------------------

<script>
function mudarDisciplinas() {
Funcoes.obterMinhaLista( exibe);
}

function exibe(meusBeans){
//aqui agora é só usar o array como quiser, lembrando que
//cada objeto do array tem id e descricao. Exemplo: meusBeans[1].descricao

}
</script>


Ah, não esqueça de mapear as duas classes no web.xml:

<servlet>
<description>DWR controller servlet</description>
<servlet-name>DWR controller servlet</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>classes</param-name>
<param-value>
meuPacote.Funcoes,
meuPacote.MeuBean
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DWR controller servlet</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

Para quem quiser saber mais sobre AJAX com DWR é só dar uma olhada no mini-curso que Mário ministrou na FIB.
Até apróxima e qualquer dúvida, já sabe, é só comentar.