Código-fonte: duke_agua_de_coco.svg
Código-fonte: duke_agua_de_coco.svg
O CEJUG realizará hoje mais um evento Café com Tapioca que acontecerá no Instituto Atlântico (mapa) a partir das 18 horas.
A palestra desse mês é Introdução a SOA – Arquitetura Orientada a Serviço com o Rafael Tabosa. Adicionalmente eu estarei fazendo uma mini-palestra sobre as novidades no Netbeans 6 e o Christiano Milfont em Conhecendo a JSR 223: Scripting for the Java Platform.
Como é de costume, haverá coffe-break e vários sorteios de brindes. A entrada para o evento é 1kg de alimento não perecÃvel.
Se você está na cidade de Fortaleza não perca essa oportunidade.
Atualizado: esses são os slides que eu vou utilizar na minha mini-palestra:
Criar um componente flexÃvel, derivado do Swing, para fazer desenhos não é difÃcil. Você pode criar um componente gráfico para plotar funções, mostrar gráficos, jogos, etc.
Para ilustrar esse tutorial eu vou usar o Netbeans 6.0 (download), uma IDE livre, multiplataforma e multilinguagem. Provavelmente você poderá seguir todos esses passos em versões anteriores do Netbeans ou, com um pouco mais de dificuldade, sem usar o Netbeans.
Figura 1. Netbeans aberto e sem nenhum projeto.Passo 1 – Criando um novo projeto: Inicialize o seu Netbean e vá em File → New Project.
Figura 2. Janela New Project
Em Categories escolha Java, em Projects escolha Java Desktop Application. Em seguida clique no botão Next.
Figura 3. Janela New Desktop ApplicationFique a vontade para escolher o campo Project Name, eu chamei de Desenho. Os outros campos deixe como já estão por padrão. Clique em Finish.
Passo 2 – Criando a classe JDesenho:
Figura 4. Ambiente Netbeans com um projeto de Aplicação Desktop Java já inicializado.Agora já temos o esqueleto do projeto pronto, inclusive já compilável e executável.
Figura 5. New → Java Class.Com o botão direito do mouse vá na aba de projetos, na esquerda, e clique no pacote (um pacotinho amarelo dentro de Source Packages) e vá em New → Java Class.
Figura 6. Janela de Criação de classe Java
Em Class Name coloque JDesenho e o resto deixa com o padrão (Project Desenho e em Package desenho). Clique no botão Finish.
Com isso temos uma classe JDesenho vazia. Vamos faze-la ser uma subclasse da classe JPanel do Swing.
public class JDesenho extends JPanel{
}
Figura 7. Recurso da IDE para adicionar importação
Quando você escrever isso você verá um pequeno Ãcone de lâmpada com uma plaquinha vermelha no lado esquerdo da linha de código. Isso quer dizer que esse seu código não compila mas há uma dica de como resolver o problema. Selecione a opção Add import for javax.swing.JPanel.
O problema aà era que o nome JPanel não estava no espaço de nomes. Isso foi resolvido importando o pacote JPanel.
Passo 3 – Sobrescrevendo o método PaintComponent: coloque o cursor de edição dentro da classe JDesenho e aperte as teclas control e espaço.
Control+Espaço é o atalho para completação de código. Comece a escrever PaintComponent, nas primeiras letras você vai achar o método e o editor vai mostrar a documentação. Pressione enter para escolher sobrescrever o método PaintComponent.
Figura 8. Completação de código.
Nessa altura do campeonato o código-fonte da JDesenho estará mais ou menos assim:
package desenho;
import java.awt.Graphics;
import javax.swing.JPanel;
public class JDesenho extends JPanel{
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
}
O Graphics é a classe abstrata base para qualquer classe que permita desenhos. É através dela que vamos fazer nossos desenhos.
Só para fazer um teste vamos escrever um código que pinta o Graphics de preto (na verdade pinta um retângulo preto no Graphics). O seu método paintComponent vai ficar assim:
protected void paintComponent(Graphics g) {
g.setColor(Color.black);
g.fillRect(0, 0, 500, 500);
}
(lembre-se de adicionar os imports usando as dicas de código)
Passo 4 – Trocando um JPanel por um JDesenho: agora vamos testar nossa classe JDesenho.
Figura 9. Escolha Customize Code.
Vá na aba DesenhoView.java e clique no meio da janela. Um menu vai aparecer e você escolhe Customize Code.
Figura 10. Janela Code Customizer
Na primeira linha, mude a caixa do lado direito de default code para custom creation. Na caixa de texto troque o JPanel pelo nosso JDesenho:
mainPanel = new JDesenho();
Note que a variável mainPanel é do tipo JPanel. Como JDesenho herda JPanel então estamos usando polimorfismo.
Agora é só testar, apertando F6 ou clicando no Ãcone .
Figura 11. Tá preto? Então funcionou.
Passo 5 – Desenhando: Para fazer mais desenho é só colocar código dentro do método paintComponent da classe JDesenho.
Por exemplo, com a classe JDesenho dessa forma:
package desenho;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JPanel;
public class JDesenho extends JPanel{
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, 500, 500);
g.setColor(Color.darkGray);
g.fillOval(150, 200, 200, 40);
g.setColor(Color.red);
g.fillOval(100, 80, 150, 150);
g.setColor(Color.pink);
g.fillOval(120, 105, 30, 30);
g.setColor(Color.blue);
g.setFont(new Font("Arial Bold", Font.PLAIN, 36));
g.drawString("http://silveiraneto.net", 30, 50);
}
}
Você obtém esse desenho:
Figura 12. Desenho de 3 figuras ovais, um retângulo e uma String.
Você também pode carregar imagens de vários formatos e há muitas formas de se fazer isso. Nesse exemplo eu vou abrir um arquivo chamado silveira.jpg que está na pasta “/tmp”, em seguida vou desenhar ele no Graphics e fazer alguns outros desenhos por cima dele.
package desenho;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class JDesenho extends JPanel{
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, 500, 500);
Image img = Toolkit.getDefaultToolkit().getImage("/tmp/silveira.jpg");
g.drawImage(img, 50, 55, this);
g.setColor(Color.black);
g.drawLine(75, 100, 75, 150);
g.drawLine(75, 100, 25, 70);
g.drawLine(75, 100, 125, 70);
g.drawLine(75, 150, 100, 200);
g.drawLine(75, 150, 50, 200);
g.drawLine(75, 150, 100, 200);
g.setColor(Color.yellow);
g.fillArc(200, 50, 150, 150, 140, -270);
}
}
E vai ficar assim:
Figura 13. Corre, corre, corre!
Eu recomendo que você olhe a documentação do Graphics e do Graphics2D. Veja também pode fazer animações fazendo sua classe JDesenho implementar a interface Runnable.
mplayer tv:// -tv driver=v4l:device=/dev/video0:width=640:height=480:noaudio -x 800 -y 600 -vf-add pp=hb:a/vb:a,hqdn3d,mirror
Atualização: Oi. Esta postagem foi originalmente feita em 10 de Janeiro de 2010, e agora em 13 de Outubro de 2013, eu estou fechando a opção de comentários e escrevendo esta atualização. Eu reparei que ainda há pessoas usando hoje essa postagem como referencia de serviço ou preços dessa empresa mas estas informações nunca foram atualizadas. Se você está procurando esta informação, este não é o melhor lugar. Estas informações estão desatualizadas. Vou manter a postagem ativa porque ela foi relevante no seu momento e tem seu valor histórico. Como os comentários estão ficando fora do contexto, eu estou fechando a opção de fazer comentários nessa postagem.
Esse dias eu fui em uma loja da Claro para me informar mais sobre os planos 3G da Claro. Eu não teria feito isso se o site deles não fosse pesado, cheio de firulas e animações flash e poucas informação realmente relevantes. A minha idéia era colocar uma internet móvel para usar no notebook pagando ainda menos que minha internet fixa (velox).
O meu diálogo com o vendedor foi mais ou menos assim:
— Então senhor, se o senhor estiver se associando a este plano — note pelo uso excessivo do vocativo e do gerúndio que este é o vendedor — o senhor poderá optar por uma conexão de 500Kbps por R$ 69,90 mensais ou uma conexão de 1 mega por R$ 99,90 mensais.
— Ótimo, então eu vou poder tipo, navegar a essa velocidade?
— Não senhor. Essas velocidades, 500Kbps ou 1 mega, são nos momentos de pico e isso dependendo da cobertura onde você está. No contrato nos só garantimos mesmo 10% do valor nominal.
— Ahh. Mas pelo menos a internet é ilimitada né?
— Sim senhor, ilimitada! – diz o vendedor com grande entusiasmo e convicção – Não há nem limite nem cobrança por volume de dados adicionais. Tudo o que temos é um franquia de dados. No plano de 500Kbps a franquia é de 5Gb e no plano de 1 mega a franquia é de 10Gb. Se o senhor estiver passando dessa franquia sua velocidade será reduzida para 128Kbps e no mês seguinte ela voltará ao normal. Mas não se preocupe, 5 gigas é muito volume de tráfego. Eu mesmo nunca vi nenhum cliente atingir isso!
— E como é aquela história de ganhar o modem grátis?
— No plano de 1 mega o senhor estará ganhando de graça a placa PCMCIA ou o modem USB, a sua escolha. Basta apresentar uma conta paga do último mês da Tim, Oi ou Velox.
— A legal, eu tenho isso. E aà quanto ao contrato, eu tenho que assinar algum contrato? Eu vou ficar preso a vocês ou algo assim?
— Claro senhor. Assinando o plano de 500Kbps ou 1 mega, ganhando o modem grátis ou não, o senhor assinará um contrato e ficará conosco por 18 meses!
— Ah tá. Bem, eu vou pensar mais sobre o assunto, quem sabe eu volto.
Para o meu perfil de usuário, não, o Claro 3G ainda não está valendo a pena. Infelizmente vou continuar no Velox em casa e depender da rede dos outros quando estiver por aà com o notebook. O que acontece é que essas práticas aplicadas pelas companhias telefônicas são bem abusivas e elas já estão acostumadas. Os preços do Velox estão absurdos, ainda mais pagando por um provedor que todo mundo sabe que não serve pra nada.
Mas quem sabe eu saia ganhando de todo jeito. Vou ligar pra Velox e dizer que eu estou mudando para a Claro, quem sabe eu consigo um bom desconto.
Como eu disse nesse outro post, eu estava procurando um modelo de notebook adequado paras minhas necessidades. Eu pesquisei bastante, colhi diversas dicas e sugestões e no final acabei fazendo uma ótima escolha, o Amazon PC FL 31.
Vista frontal do Amazon PC FL 31
Nesse post eu vou fazer minha avaliação dele bem como mostrar algumas dicas para quem tem um modelo similar. Eu estou usando o Ubuntu 7.10, Gutsy Gibbon.
O Monitor do Sistema do Gnome mostra a carga em cada core
Processador: Intel Core Duo 1.73Ghz. Cache de 1024kb. Aqui está o /proc/cpuinfo dele. O desempenho é muito bom e eu posso fazer minhas brincadeiras de computação concorrente com threads. A descrição mais detalhada, que consta no manual é: Intel Yonah FSB667 Mhz/2MbL2 Dual Core e Single Core.Memória: 1Gb de ram (). Para mim que já viva bem com 512 está ótimo e não tenho problemas em usar os meus aplicativos mais comuns, Gnome (com as extensões 3D ativadas), Firefox, Netbeans e outros aplicativos ao mesmo tempo. Mais tarde se eu quiser, eu ainda posso colocar mais um pente de 1Gb.
Tela:14.1″ WXGA TFT. É uma tela leve, com anti-reflexo e com um tamanho ideal, já que eu não gosto de monitores muito grandes. Eu uso ele com uma resolução de 1280×800 (que é bem maior do que a que eu usava no Desktop antes).
Compiz rodando sem problemas
VÃdeo: O suporte 3D está habilitado e funcionando muito bem. Foi necessário acionar o Gerenciador de Drivers Restritos. O chipset da placa mãe é Intel 945 GM + ICH7-M. O que eu tenho usado mais de suporte 3D é o Compiz que tem se saÃdo muito bem.
Na lateral esquerda há uma saÃda de vÃdeo para monitor externo. É um conector padrão de 15 pinos. Na Bios é possÃvel configurar para quando você conectar no monitor externo se o LCD deverá se apagar ou não.
Há também uma saÃda S-Video, para televisão.
Teclado: apesar de detestar teclados de notebook eu estou, na medida que se pode gostar de um teclado de notebook, até gostando desse aqui. As teclas não são detestavelmente leves mas também não fazem barulho.
A compatibilidade do Ubuntu com o teclado foi ótima, é um teclado Qwerty com cedilha e acentos. Todas as teclas de atalho estão funcionando e correspondendo com o que está escrito no teclado. Até as teclas de volume, brilho, multimÃdia e as teclas de chamar o gerenciador de emails e o navegador estão funcionando. Não foi preciso eu fazer nenhum configuração, funcionou de primeira.
A parte chata é que eles escolheram péssimos lugares para colocarem a ‘?’ e a ‘/’, preciso apertar a tecla Fn (a tecla azul de segunda função) e ‘0’ para fazer uma barra e o alt da direita e ‘W’ para fazer o ‘?’. É algo que eu ainda estou me acostumando.
Touchpad: funcionou bem mas como eu não faço a menor questão de usar eu comprei logo um mouse usb (de tamanho médio, para facilitar o transporte) e um mousepad bem firme. O mouse, um Genius, funcionou só plugando, sem nenhuma configuração.
Som: há dois auto falantes, cada um ao lado do teclado. São bem fraquinhos mas já quebram um galho. Acho que são de 2 Watts cada um.
Há um microfone embutido, logo acima da tela. Ele não tem um alcance muito bom, então quando eu tenho que gravar algo eu uso um fone de ouvido com microfone que é mais sensÃvel.
Além disso, na lateral direita há uma entrada de microfone e uma saÃda de áudio.
Wifi: O wifi funcionou sem problemas. No manual dizia que o wifi não iria funcionar no Linux, mas funcionou sem nenhuma configuração. Há um led indicador na frente do notebook e uma chave seletora com o Ãcone do wifi. Porém o led não acende (ele pisca quando eu ligo o notebook) e o comportamento do wifi não se altera quando eu ligo ou desligo a chave. Acho que é um defeito.
DVD: A um drive na lateral esquerda no notebook. Eu já testei a leitura e a gravação de DVD e funcionou sem problemas. Também não foi necessário nenhuma configuração.
No manual consta: combo drive 24 x Cdr W/8x DVD-ROM e DVD-Burner 4x DVD+R/-R/RW.
Leitor de cartões: na frente do notebook há uma leitora de cartões que lê cartões SD e MMC.
Eu testei com um cartão MMC da Nokia, mas não aconteceu nada. A leitora funcionou que foi uma beleza. Espetei o cartão, os leds acenderam e uma janelinha saltou na tela com os arquivos. Sem configurações, sem drives, só alegria. Acho que dá primeira vez que eu tentei eu havia colocado o cartão de forma incorreta.
Rede com fios: há uma entrada de cabo de rede com fios, conector padrão RJ-45. Funcionou sem problemas.
Há também um modem, com uma entrada para conector padrão RJ-11, na parte de trás do notebook.
Cartões: A duas entradas para cartões de notebook. O cartão PC (PCMCIA) e o cartão Express. Eu não tenho como testar porque não tenho nenhuma placa dessas.
Câmera: há uma câmera de 1.3 megapixels integrada. Ela não vai funcionar de primeira no Linux será necessário instalar manualmente um driver proprietário.
Se você der um lsusb você vai ver:
Bus 005 Device 002: ID 0c45:624f Microdia
A primeira coisa a fazer é baixar o pacote sn9cxxx_2.09-gutsy-1ubuntu1_i386.deb (no meu caso, que estou usando o Ubuntu 7.10). Ele está disponÃvel aqui. Também há o mesmo driver para o Ubuntu 7.04 aqui.
Uma vez baixado, instale ele:
sudo dpkg -i sn9cxxx_2.09-gutsy-1ubuntu1_i386.deb
Agora reinicie o computador ou ative o módulo com o modprobe:
sudo modprobe sn9cxxx
Você vai notar que o arquivo /dev/video0 foi criado. Para testar a câmera você pode usar o mplayer:
mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0 -vo x11
Aà está:
Sono …
A resolução está abaixo dos 1.3 megapixels já que 640×480=307200 que é 0.3 megapixels. Quando eu uso qualquer outra resolução no mplayer não dá certo, aparece só uma pequena tela, mostrando só meu rosto. 🙁
Obrigado ao Xisberto pela dica de como fazer essa câmera funcionar. O mesmo procedimento se aplica a qualquer outra câmera 0c45:624f Microdia.
Preço: essa foi a melhor parte no notebook. Eu comprei ele em uma promoção nas americanas.com e mesmo parcelado em 12 vezes eu consegui um desconto de 5%. Ele saiu por R$ 1.519,05 já com frete e todas as outras despesas. Não é a primeira vez que eu compro lá, a entrega é super rápida e segura, você acompanha tudo pela internet. Eu recomendo.
Estive numa rápida visita a São Paulo esse mês para o encontro nacional dos Embaixadores de Campus da Sun e para visitar a sede no Brasil da Sun Mycrosystems. No Brasil são cinqüenta embaixadores de campus, espalhados por todo o paÃs. No mundo são 500, sendo a maioria na China, Ãndia, Rússia e Brasil.
Entrada do prédio da Sun, na Rua Alexandre Dumas
Fachada da Sun decorada para o natal.
Nós ficamos no Blue Tree, bem pertinho da sede da Sun, um ótimo hotel. Logo no avião eu comecei a ficar com o nariz irritado e a espirrar, só piorei no hotel. Acho que foi o frio. Só no outro dia eu consegui achar minha loratadina na bagagem.
Eu e os outros embaixadores em frente a entrada da Sun
Tivemos um dia de palestras na Sun, sobre o programa de Embaixadores, sobre a empresa, Sun Spot e tivemos uma seção de dicas com os veteranos no programa. Foram muito úteis, eu anotei todas. 🙂
Joaquim, MaurÃcio e CecÃlia (PDM América Latina).
Nós conhecemos o atual presidente da Sun no Brasil, Rodolfo Fontoura. Ele está na empresa já há 11 anos e já trabalhou na White Martins e IBM. Nós conversamos sobre o programa de embaixadores, carreira, visão da empresa, produtos e serviços e muitas outras coisas. Eu tive o privilégio de ter várias perguntas respondidas.
Rodolfo Fontoura, presidente da Sun Microsystems no Brasil.
O MaurÃcio Leal e o seu inseparável Sun Spot.
Veteranos passando dicas valiosas.
Edu resolvendo um probleminha no projetor.
A noite eu, o MaurÃcio Leal e outros embaixadores saÃmos para dar uma volta no shopping Morumbi e jantar no Honey Bee (excelente comida).
Eu brincando num touch screen gigante.
A Gol (linhas aéreas espertinhas) aprontou comigo outra vez. Não queria me deixar embarcar (estranhamente não achavam meu nome na lista de passageiros) e depois o vôo ainda atrasou umas duas horas…
Foi uma viagem rápida, mas incrÃvel. Deu para conhecer muita gente interessante e esclarecer muito sobre o programa, e é claro, conhecer um pouco da sede da Sun no Brasil.
Ãlbum de fotos dessa viagem.
Acabou minha disciplina de Matemática Financeira com o professor Manuel Ribeiro. Eu escrevi várias das questões que eu resolvi durante a disciplina em algumas páginas na parte de estudos, são elas:
Essa páginas fazem parte do meu objetivo de deixar um material online de todas as disciplinas que eu estou fazendo, nessa disciplina funcionou muito bem porque haviam várias listas de exercÃcios.