terça-feira, 9 de junho de 2009

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).