<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-637742050255332373</id><updated>2011-10-26T21:27:18.799-02:00</updated><category term='Programação'/><category term='Twitter'/><category term='Perl'/><category term='Wine'/><category term='PostgreSQL'/><category term='Shell Script'/><category term='Backup'/><category term='Java'/><category term='Linux'/><title type='text'>Fábio Miguel Mello</title><subtitle type='html'>Programação, Linux, Java, Perl, PHP, Eletrônica</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-4233503835267037011</id><published>2010-02-04T09:43:00.000-02:00</published><updated>2010-02-04T09:44:09.005-02:00</updated><title type='text'>Assinatura</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2zWZ1lgRTd4/S2qy7Hpk-3I/AAAAAAAAAEw/XatMR708WOg/s1600-h/assinatura.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 54px;" src="http://1.bp.blogspot.com/_2zWZ1lgRTd4/S2qy7Hpk-3I/AAAAAAAAAEw/XatMR708WOg/s320/assinatura.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5434352629111389042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dêem dicas para a minha assinatura \o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-4233503835267037011?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/4233503835267037011/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=4233503835267037011' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/4233503835267037011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/4233503835267037011'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2010/02/assinatura.html' title='Assinatura'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2zWZ1lgRTd4/S2qy7Hpk-3I/AAAAAAAAAEw/XatMR708WOg/s72-c/assinatura.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-2834525982615946968</id><published>2009-10-20T15:07:00.001-02:00</published><updated>2009-10-20T15:07:48.698-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>sources.list perfeito - debian para servidores</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Todo administrador de sistemas sofre com uma coisa: demora para baixar os arquivos de atualização dos servidores, normalmente por serem extrangeiros, serem padrões e por consequência estar sendo utilizado por milhares de pessoas.&lt;br/&gt;Estar no cliente por exemplo, atualizando o Debian e de repente... Pã! Começa aquele download a 20kb/s em uma atualização que resolveria todos os problemas... E você é obrigado a ficar lá, esperando, sem contar que quando dá um 'apt-get update' demora um monte... Então segue a minha resolução do problema:&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;deb http://ftp.br.debian.org/debian/ stable main contrib non-free&lt;br/&gt;deb http://ftp.br.debian.org/debian-security/ stable/updates main contrib non-free&lt;br/&gt;deb http://ftp.br.debian.org/debian-volatile/ stable/volatile main&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Simples e na veia, o que fiz foi alterar o sources.list para links brasileiros, que baixam a mais de 1,5mb/s :) se você precisar do src, é só adicionar o deb-src para cada um deles!&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=8b43d560-fe38-81db-aec6-9678b347dc68' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-2834525982615946968?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/2834525982615946968/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=2834525982615946968' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/2834525982615946968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/2834525982615946968'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/10/sourceslist-perfeito-debian-para.html' title='sources.list perfeito - debian para servidores'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6714947496238937381</id><published>2009-10-15T16:30:00.001-03:00</published><updated>2009-10-15T16:32:19.921-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Backup'/><title type='text'>Backup automatizado para PostgreSQL</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Ontem tive que fazer backup de um banco de dados PostgreSQL, porém, este banco não tem um método de passar a senha via linha de comando(no mysql utilizamos --passwordSENHA e pronto).&lt;br/&gt;Depois de muita pesquisa e não ter achado nada, li o manual do postgre e tinha uma "dica" para fazer backup, resolvi testar a dica em um script automatizado e tcharãm, deu certo!&lt;br/&gt;A sintaxe do comando se você desejar fazer o backup na mão é:&lt;br/&gt;&lt;blockquote&gt;pg_dumpall -h localhost -U USUARIO -W  &amp;gt; ARQUIVOSQL.SQL&lt;br/&gt;&lt;br/&gt;&lt;/blockquote&gt;Já um script autenticado(salvando em /BACKUP/meuBACKUP.sql e com saída somente dos erros em /var/log/banco.log), ficaria:&lt;br/&gt;&lt;blockquote&gt;#!/bin/sh&lt;br/&gt;export PGPASSWORD="SENHA"&lt;br/&gt;/usr/bin/pg_dumpall -h localhost -U USUARIO &amp;gt;  /BACKUP/meuBACKUP.sql 2&amp;gt;&amp;gt; /var/log/banco.log&lt;br/&gt;&lt;br/&gt;&lt;/blockquote&gt;Poderiamos incrementar um pouco mais, adicionando a data +  horário do backup:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;#!/bin/sh&lt;br/&gt;export PGPASSWORD="SENHA"&lt;br/&gt;data=`date +%d_%m`&lt;br/&gt;hora=`date +%H`&lt;br/&gt;/usr/bin/pg_dumpall -h localhost -U USUARIO &amp;gt;  /BACKUP/meuBACKUP_$data_$hora.sql 2&amp;gt;&amp;gt; /var/log/banco.log&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Após isto é só adicionar no agendador de tarefas e ser feliz :P, para um backup de 4 em 4 horas, digite 'crontab -e' e adicione a seguinte linha:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;00 */4 * * * /local/domeuscript.sh&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Valeu? Acho que sim...&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=fd66433f-b5b6-8ba7-9015-b14c0107cfb6' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6714947496238937381?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6714947496238937381/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6714947496238937381' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6714947496238937381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6714947496238937381'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/10/backup-automatizado-para-postgresql.html' title='Backup automatizado para PostgreSQL'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-8806823016059975455</id><published>2009-10-15T16:18:00.003-03:00</published><updated>2009-10-15T16:18:32.609-03:00</updated><title type='text'>Temas para GEdit</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Achei um link com vários temas legais para quem usa o gedit -&amp;gt; &lt;a href='http://github.com/mig/gedit-themes' target='_blank'&gt;clique aqui&lt;/a&gt;&lt;br/&gt;Tem até o tema do Railscast :)&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=8e1b0d69-48cf-83f7-91b8-04db99a1d99e' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-8806823016059975455?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/8806823016059975455/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=8806823016059975455' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/8806823016059975455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/8806823016059975455'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/10/temas-para-gedit.html' title='Temas para GEdit'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-3589297134581514827</id><published>2009-07-07T22:53:00.001-03:00</published><updated>2009-07-07T22:54:07.767-03:00</updated><title type='text'>Não, não!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Pô, nunca imaginei isso do Walter...&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img height='175' width='483' style='max-width: 800px;' src='http://lh6.ggpht.com/_2zWZ1lgRTd4/SlP7i89v8KI/AAAAAAAAAEI/AI4WrQ5a2iQ/%5BUNSET%5D.png?imgmax=800'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;Boba? Hum.. Então tá né ...&lt;br/&gt;Zueira, logo depois ele corrigiu com um "bobo" e um smile ":P" (borrado embaixo).&lt;br/&gt;Mas, como se deve aproveitar todas as oportunidades, eu aproveitei esta. E o Walter ficou famoso no meu blog!&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-3589297134581514827?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/3589297134581514827/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=3589297134581514827' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3589297134581514827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3589297134581514827'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/07/nao-nao.html' title='Não, não!'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_2zWZ1lgRTd4/SlP7i89v8KI/AAAAAAAAAEI/AI4WrQ5a2iQ/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-1358056130737981791</id><published>2009-07-05T19:46:00.001-03:00</published><updated>2009-07-05T19:49:06.382-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Shell Script'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>Twittando pelo Shell</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Hoje vi uma dica no site commandfuline e resolvi facilitar a vida do pessoal. É um modo prático de se enviar twitter pelo nosso querido shell!&lt;br/&gt;Para começar, vamos instalar o curl(lembrando que eu estou utilizando a distribuição Ubuntu, que é 'Debian Based', então se sua distro não possui o querido apt-get, veja em &lt;a target='_blank' href='http://www.google.com.br'&gt;outro site&lt;/a&gt; como instalar a "dependência").&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;apt-get install curl&lt;br/&gt;&lt;br/&gt;&lt;/blockquote&gt;Depois de instalar o curl, vamos criar o script, torná-lo executável e abrir ele no gedit:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;mkdir ~/.scripts&lt;br/&gt;touch ~/.scripts/twitter&lt;br/&gt;chmod +x ~/.scripts/twitter&lt;br/&gt;gedit ~/.scripts/twitter&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Cole o seguinte conteúdo dentro do arquivo:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;#!/bin/sh&lt;br/&gt;if [ -z $1 ]&lt;br/&gt;then&lt;br/&gt;    echo "Digite a mensagem que deve ser enviada ao twitter:"&lt;br/&gt;    read mensagem&lt;br/&gt;    echo "Enviando post..."&lt;br/&gt;    curl -n -d status="$mensagem" https://twitter.com/statuses/update.xml &amp;gt; /dev/null&lt;br/&gt;&lt;br/&gt;else&lt;br/&gt;    echo "Enviando post..."&lt;br/&gt;    curl -n -d status="$*" https://twitter.com/statuses/update.xml &amp;gt; /dev/null&lt;br/&gt;fi&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Após isto, devemos torná-lo facil de ser utilizado, para isto, efetuaremos o efetuaremos um comando que adicionará uma linha a um arquivo chamado ~/.bashrc (arquivo que é carregado sempre que seu usuário loga em uma shell)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;echo "alias twitter=\"~/.scripts/twitter\"" &amp;gt;&amp;gt; ~/.bashrc&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Aplicamos as mudanças sem precisar reiniciar o bash, executando:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;source ~/.bashrc&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Agora vem o pulo do gato, não gostariamos de ter que ficar digitando o usuário e senha toda vez que executar o comando, para isto o curl guarda um arquivo "mágico" que é o ~/.netrc, efetuaremos o seguinte comando trocando as palavras em maiusculas pelo indicado:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;echo "machine twitter.com login USUARIO password SENHA" &amp;gt;&amp;gt; ~/.netrc&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;E para aumentar a segurança e somente nosso usuário poder ler este arquivo, efetuamos:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;chmod 600 ~/.netrc&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Feito isto, está tudo pronto, para utilizarmos, é só executar o comando:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;twitter&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;ou então&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;twitter aaaai que preguiçaaaa magnata&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Isto é tudo pessoal! ;)&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-1358056130737981791?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/1358056130737981791/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=1358056130737981791' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/1358056130737981791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/1358056130737981791'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/07/twittando-pelo-shell.html' title='Twittando pelo Shell'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-3567451788338696187</id><published>2009-05-06T09:26:00.001-03:00</published><updated>2009-05-06T09:27:26.625-03:00</updated><title type='text'>Frase da semana</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Para cada problema há sempre uma solução clara, simples e errada.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=4f19d0c3-f4c5-8597-9baf-360dd2d8da8b' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-3567451788338696187?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/3567451788338696187/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=3567451788338696187' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3567451788338696187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3567451788338696187'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/05/frase-da-semana.html' title='Frase da semana'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6363958969229544723</id><published>2009-04-24T01:26:00.001-03:00</published><updated>2009-04-24T01:26:06.468-03:00</updated><title type='text'>Idéias de projetos!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Seguindo a linha do post anterior.. Seguinte moçada... Se alguém tiver alguma idéia de projeto em eletrônica envolvendo microcontroladores ou algo do gênero, favor deixar no comentário ou me enviar por e-mail! :D&lt;br/&gt;Eu já tenho algumas idéias minhas que postarei aqui mais adiante... Mas é sempre legal ver a criatividade do pessoal, e tentar criar algo diferente!&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=abdcee77-89cc-8657-be19-d0dcff3ffb38' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6363958969229544723?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6363958969229544723/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6363958969229544723' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6363958969229544723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6363958969229544723'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/04/ideias-de-projetos.html' title='Idéias de projetos!'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-5302373054012115287</id><published>2009-04-23T00:29:00.001-03:00</published><updated>2009-04-23T00:29:30.313-03:00</updated><title type='text'>Boas novas!</title><content type='html'>Voltarei a mecher com eletrônica... Assim que eu tiver algo definido volto a postar aqui!&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-5302373054012115287?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/5302373054012115287/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=5302373054012115287' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/5302373054012115287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/5302373054012115287'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/04/boas-novas.html' title='Boas novas!'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-149149429989465455</id><published>2009-02-23T18:44:00.002-03:00</published><updated>2009-02-23T18:58:49.572-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>VirtualBox + Bridge [Modo certo]</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;&lt;div align='justify'&gt;Depois de muito tempo se batendo em como fazer uma bridge do modo ideal com Ubuntu + VirtualBox para testar minhas aplicações, finalmente cheguei ao método considerado ''ideal'', pois eu consigo de dentro da VM pingar qualquer máquina na rede local e da rede local pingar qualquer máquina VM. Tudo isto sem precisar de NAT, a interface fica como se fosse um computador físico.&lt;br/&gt;Primeiramente, instalei os pacotes necessários:&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;sudo apt-get install bridge-utils uml-utilities&lt;br/&gt;&lt;/blockquote&gt;Após, desativei a rede&lt;br/&gt;&lt;blockquote&gt;sudo /etc/init.d/networking stop&lt;br/&gt;&lt;/blockquote&gt;Depois, criei as interfaces de rede&lt;br/&gt;&lt;blockquote&gt;sudo VBoxAddIF vbox0 usuario&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Onde o &lt;b&gt;usuário&lt;/b&gt; corresponde ao meu usuário no sistema, joao, miguelito, etc.&lt;br/&gt;Após criar a interface virtual vbox0, adicionei as seguintes linhas no meu &lt;b&gt;/etc/network/interfaces&lt;/b&gt;:(sudo gedit /etc/network/interfaces)&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;auto br0&lt;br/&gt;iface br0 inet dhcp&lt;br/&gt;bridge_ports eth0 vbox0&lt;br/&gt;bridge_maxwait 0&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Este procedimento cria uma interface bridge em DHCP utilizando as interfaces eth0 e vbox0, ou seja, minha eth0 ficou sendo a placa de rede física da minha máquina virtual. No lugar de eth0 eu poderia utilizar eth1, wlan0, ath0 e por aí a fora...Após este procedimento foi necessário reiniciar as configurações da rede&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;sudo /etc/init.d/networking start&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Depois foi só ir no meu VirtualBox e adicionar a configuração&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div align='center'&gt;&lt;img height='248' width='357' src='http://lh4.ggpht.com/_2zWZ1lgRTd4/SaMW7yPR_CI/AAAAAAAAAD8/9JvqQjFLp5g/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='justify'&gt;Depois de iniciada minha máquina virtual, fiz um teste básico, para testar minha conectividade vi se a minha máquina virtual era capaz de se comunicar com o servidor DHCP que há na rede local&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img height='232' width='356' src='http://lh4.ggpht.com/_2zWZ1lgRTd4/SaMXZINg-cI/AAAAAAAAAEE/t9m8MQQsDYs/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='justify'&gt;Isto significa que funcionou e a máquina virtual consegue acessar qualquer computador da rede, e qualquer computador da rede consegue acessar minha máquina virtual, sem precisar ficar mechendo em rotas, nat, nem nada do gênero. E o melhor é que tudo isto foi feito de forma muito simples, muito mais simples inclusive que os vários tutoriais que ficam abordando a criação de interfaces do tipo tap1, bridges feitos na mão e que no final, acabam se comunicando somente com o próprio hospedeiro.&lt;br/&gt;Se você decidir colocar mais de uma máquina virtual, você deve somente criar o dispositivo vbox1,vbox2,vbox3 e adicionar no /etc/network/interfaces, assim:&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;auto br0&lt;br/&gt;iface br0 inet dhcp&lt;br/&gt;bridge_ports eth0 vbox0 vbox1 vbox2 vbox3&lt;br/&gt;bridge_maxwait 0&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;div align='justify'&gt;Se o VirtualBox acusar um erro de permissão em /dev/net/tun ao iniciar, é só digitar &lt;b&gt;chmod 0666 /dev/net/tun&lt;/b&gt; .&lt;br/&gt;Qualquer dúvida, podem mandar por e-mail!&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;[]s&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-149149429989465455?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/149149429989465455/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=149149429989465455' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/149149429989465455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/149149429989465455'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/02/virtualbox-bridge-modo-certo_23.html' title='VirtualBox + Bridge [Modo certo]'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_2zWZ1lgRTd4/SaMW7yPR_CI/AAAAAAAAAD8/9JvqQjFLp5g/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-9178234925884946866</id><published>2009-02-13T16:41:00.001-02:00</published><updated>2009-02-13T16:43:51.403-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Tradutor de CRON - Código</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Conforme prometido: &lt;a target='_blank' href='http://gist.github.com/62109'&gt;http://gist.github.com/62109&lt;/a&gt; ;D&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-9178234925884946866?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/9178234925884946866/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=9178234925884946866' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/9178234925884946866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/9178234925884946866'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/02/tradutor-de-cron-codigo.html' title='Tradutor de CRON - Código'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6056165065622142714</id><published>2009-02-11T14:34:00.001-02:00</published><updated>2009-02-11T14:34:49.347-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Dica para armazenar código!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;O danilo (http://dannnylo.wordpress.com/), lendo um dos posts do meu blog onde eu comentei que não tinha onde armazenar códigos, deu a dica do GitHub(http://gist.github.com/), um site muito bom, onde é possível armazenar um ou vários códigos fonte. Em breve (quando me sobrar um pouco de tempo) disponibilizarei alguns códigos que fiz e que são úteis no dia-a-dia.&lt;br/&gt;&lt;br/&gt;E falando em códigos, eu vou ter um projeto para a faculdade que está hospedado no google code, em breve disponibilizarei o svn dele também para vocês.&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6056165065622142714?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6056165065622142714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6056165065622142714' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6056165065622142714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6056165065622142714'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/02/dica-para-armazenar-codigo.html' title='Dica para armazenar código!'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-8384012676623151177</id><published>2009-02-02T15:56:00.001-02:00</published><updated>2009-02-02T15:57:38.926-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Tradutor de CRON</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Todo mundo no começo sofre para conseguir entender algo que está no cron, e muitas vezes documentar o que roda agendado no sistema é chato, aproveitei que estou fazendo um sistema de documentação pra empresa, e, procurando sobre, achei um tal 'crontab2english', traduzi as saídas dele... O que ele faz basicamente é pegar o que esta no crontab e traduzir para uma linguagem mais amigavel, como por exemplo:&lt;br/&gt;&lt;blockquote&gt;Comando: (linha 12)&lt;br/&gt;  Executar: root    test -x /usr/sbin/anacron || ( cd / &amp;amp;&amp;amp; run-parts --report /etc/cron.daily )&lt;br/&gt;  Em: 6:25am    cada dia de    cada mes&lt;br/&gt;&lt;br/&gt;Comando: (linha 13)&lt;br/&gt;  Executar: root    test -x /usr/sbin/anacron || ( cd / &amp;amp;&amp;amp; run-parts --report /etc/cron.weekly )&lt;br/&gt;  Em: 6:47am    cada dia de -- ou cada Domingo em --    cada mes&lt;br/&gt;&lt;/blockquote&gt;Se alguém estiver interessado, me envie um e-mail que envio o código fonte traduzido, infelizmente ainda não tenho um link permanente para disponibilizar materiais.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-8384012676623151177?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/8384012676623151177/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=8384012676623151177' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/8384012676623151177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/8384012676623151177'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2009/02/traduzir-de-cron.html' title='Tradutor de CRON'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6703796857622071953</id><published>2008-12-16T14:46:00.000-02:00</published><updated>2008-12-16T14:54:33.066-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wine'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Como instalar .NET Framework no WINE</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;&lt;font face='sans-serif'&gt;Precisei instalar alguns aplicativos no wine(.NET Framework 2.0), porém, estavam travando... Parti pro CrossOver, mesmos problemas... Então resolvi procurar no google! haha.. Segue a dica pra quem precisar instalar o .NET Framework no WINE... Eu instalei no Ubuntu 8.10, funcionou perfeitamente.&lt;br /&gt;Primeiro, instalei o wine e o cabextract:&lt;br /&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;font face='sans-serif'&gt;sudo apt-get install wine cabextract&lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;font face='sans-serif'&gt;Depois, peguei um pacote "winetricks"(nome muito sugestivo, não?)&lt;br /&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;font face='sans-serif'&gt;wget &lt;a href='http://www.kegel.com/wine/winetricks'&gt;http://www.kegel.com/wine/winetricks&lt;/a&gt; &lt;/font&gt;&lt;font face='sans-serif'&gt;&lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;font face='sans-serif'&gt;E então, executei o winetricks e pedi para instalar o .NET Framework 2.0&lt;/font&gt;&lt;font face='sans-serif'&gt;&lt;br /&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;font face='sans-serif'&gt;sh winetricks -v dotnet20&lt;/font&gt;&lt;font face='sans-serif'&gt;&lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;font face='sans-serif'&gt;Depois foi só beber um suco de laranja e esperar terminar...&lt;/font&gt;&lt;font face='sans-serif'&gt;Fiz isto para instalar o mRemote e um outro programa que esqueci o nome agora que adiciona abas no putty!&lt;/font&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6703796857622071953?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6703796857622071953/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6703796857622071953' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6703796857622071953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6703796857622071953'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/como-instalar-net-framework-no-wine.html' title='Como instalar .NET Framework no WINE'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6703358769395052864</id><published>2008-12-15T18:31:00.004-02:00</published><updated>2008-12-17T14:23:04.996-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Adicionando componentes a uma dialog Swing</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Seguindo o exemplo anterior de criar uma dialog, darei alguns exemplos de como adicionar componentes a esta janela. Os componentes mais utilizados, são botões, labels, lists, tabelas, campos de texto, porém, existem muitos outros que podem ser visualizados através deste programa de exemplos de componentes swing: &amp;amp;&lt;a href='http://java.sun.com/docs/books/tutorial/uiswing/examples/components/index.html'&gt;http://java.sun.com/docs/books/tutorial/uiswing/examples/components/index.html&lt;/a&gt;&lt;br/&gt;Para criar um componente para adicionar a janela, você deve criar o objeto dele, então para criar um botão, por exemplo, poderiamos utilizar:&lt;br/&gt;&lt;blockquote&gt;JButton aplicar = new JButton("Aplicar");&lt;br/&gt;&lt;/blockquote&gt;A palavra "Aplicar", seria o texto impresso no botão.&lt;br/&gt;O código anterior de nossa janela era:&lt;br/&gt;&lt;blockquote&gt;import javax.swing.JFrame;&lt;br/&gt;&lt;br/&gt;public class Janela extends JFrame{&lt;br/&gt;    public Janela(){&lt;br/&gt;        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br/&gt;        setSize(200,200);&lt;br/&gt;        setVisible(true);&lt;br/&gt;    }&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        new Janela();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;Para adicionarmos o botão criado, adicionaremos a linha "add(aplicar);", pronto, nosso botão já está adicionado a janela. Repare que foi adicionada mais um import, o que referência o botão(import.javax.swing.JButton).&lt;br/&gt;&lt;blockquote&gt;import javax.swing.JFrame;&lt;br/&gt;import javax.swing.JButton;&lt;br/&gt;&lt;br/&gt;public class Janela extends JFrame{&lt;br/&gt;    public Janela(){&lt;br/&gt;        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br/&gt;        setSize(200,200);&lt;br/&gt;        JButton aplicar = new JButton("Aplicar");&lt;br/&gt;        add(aplicar);&lt;br/&gt;        setVisible(true);&lt;br/&gt;    }&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        new Janela();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;Rode o programa e verifique como ficou nossa janela, perceba que nosso botão utilizou a área inteira da tela, isto devido a que não criamos um painel (ou frame) para adicionar nosso botão. O alinhamento de componentes em janelas swing é todo feito através de gerenciadores de layout, os mais utilizados são o FlowLayout e o BorderLayout, porém, existem muitos outros(&lt;a target='_new' href='http://tideveloper.wordpress.com/2008/10/04/gerenciadores-de-layout/'&gt;http://tideveloper.wordpress.com/2008/10/04/gerenciadores-de-layout/&lt;/a&gt;), segue o uso dos principais:&lt;br/&gt;Há também uma biblioteca, layout auxiliares(&lt;a href='http://www.jhlabs.com/java/layout/layouts.zip'&gt;http://www.jhlabs.com/java/layout/layouts.zip&lt;/a&gt;). Esta biblioteca possui o ParagraphLayout, que gerencia o layout como paragráfos e linhas, o que ajuda, e muito, no alinhamento de componentes em tela, principalmente no que se refere a formulários.&lt;br/&gt;Vamos criar um painel e adicionar nosso botão dentro deste painel(repare que agora o botão não ocupará a área inteira da janela), para criar o painel utilizaremos:&lt;br/&gt;&lt;blockquote&gt;JPanel painel = new JPanel();&lt;br/&gt;&lt;/blockquote&gt;E então adicionaremos nosso botão dentro do painel, com o comando:&lt;br/&gt;&lt;blockquote&gt;painel.add(aplicar);&lt;br/&gt;&lt;/blockquote&gt;E então o que será grudado diretamente na janela será o painel:&lt;br/&gt;&lt;blockquote&gt;add(painel);&lt;br/&gt;&lt;/blockquote&gt;Deixando nosso código, deste jeito:&lt;br/&gt;&lt;blockquote&gt;import javax.swing.JButton;&lt;br/&gt;import javax.swing.JFrame;&lt;br/&gt;import javax.swing.JPanel;&lt;br/&gt;&lt;br/&gt;public class Janela extends JFrame{&lt;br/&gt;    public Janela(){&lt;br/&gt;        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br/&gt;        setSize(200,200);&lt;br/&gt;        JPanel painel = new JPanel();&lt;br/&gt;        JButton aplicar = new JButton("Aplicar");&lt;br/&gt;        painel.add(aplicar);&lt;br/&gt;        add(painel);&lt;br/&gt;        setVisible(true);&lt;br/&gt;    }&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        new Janela();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;A criação dos objetos da dialog, segue basicamente o mesmo padrão, sendo &lt;nomeclasse&gt; nome = new &lt;nomeclasse&gt;();, o que muda é que em alguns casos, como selects, e radio, os selects precisariamos adicionar os elementos dentro dele, e no radio, agrupá-los para não ser possível selecionar todos ao mesmo tempo.&lt;/nomeclasse&gt;&lt;/nomeclasse&gt;&lt;br/&gt;&lt;nomeclasse&gt;&lt;nomeclasse/&gt;&lt;/nomeclasse&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6703358769395052864?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6703358769395052864/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6703358769395052864' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6703358769395052864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6703358769395052864'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/adicionando-componentes-uma-dialog_15.html' title='Adicionando componentes a uma dialog Swing'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-3450038500044398409</id><published>2008-12-11T16:13:00.001-02:00</published><updated>2008-12-11T16:13:17.738-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Convenções em código Java</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Muitos dos programadores que estão iniciando, muitas vezes escrevem as variáveis e métodos de qualquer jeito, fazendo com que quem venha a dar manutenção no código, sofra, e muito. Para isto, existem algumas convenções de como nomear variáveis, métodos, classes e etc. A Sun disponibiliza o material no seguinte documento:&lt;br/&gt;&lt;a href='http://java.sun.com/docs/codeconv/CodeConventions.pdf' target='_blank'&gt;http://java.sun.com/docs/codeconv/CodeConventions.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Tem uma versão em português, neste endereço: &lt;a href='http://www.scribd.com/doc/2155308/Padronizacao-Java' target='_blank'&gt;http://www.scribd.com/doc/2155308/Padronizacao-Java&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-3450038500044398409?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/3450038500044398409/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=3450038500044398409' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3450038500044398409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/3450038500044398409'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/convenes-em-cdigo-java.html' title='Convenções em código Java'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-6974192101157160574</id><published>2008-12-11T15:50:00.001-02:00</published><updated>2008-12-11T15:50:32.818-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Primeira dialog utilizando Swing</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Toda dialog, ou janela, precisa ter necessariamente duas coisas: um tamanho e uma ação padrão. Tendo estas duas coisas, a janela já está criada, a partir deste ponto, ela precisa somente ser visível. Então vamos a criação de uma janela básica:&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;import javax.swing.JFrame;&lt;br/&gt;&lt;br/&gt;public class Janela extends JFrame{&lt;br/&gt;    public Janela(){&lt;br/&gt;        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br/&gt;        setSize(200,200);&lt;br/&gt;        setVisible(true);&lt;br/&gt;    }&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        new Janela();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Estamos estendendo a classe JFrame em nossa classe, para poder utilizar os atributos e métodos da JFrame.(setDefaultCloseOepration,setSize,setVisible, entre outros que serão vistos a frente). No método construtor fizemos a construção de nossa dialog, setando a operação padrão para "sair ao fechar", pois se não setarmos este parâmetro, quando fecharmos a janela, o processo do java vai continuar rodando, então tente deixar sem esta opção e rodar a janela umas duzentas vezes, o pc vai ficar no mínimo lento e cheio de processos que não servem para nada rodando. Em seguida setamos o tamanho(200x200), poderiamos utilizar também o método setBounds(int,int,int,int), onde além de altura e largura, poderiamos definir o posicionamento na tela. E por último mas não menos importante o setVisible(true), que faz com que a janela seja mostrada em tela(eu posso ter ela rodando em background com setVisible(false).&lt;br/&gt;&lt;br/&gt;No método main, chamamos nossa classe e pronto, está feita a primeira dialog em Java!&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-6974192101157160574?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/6974192101157160574/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=6974192101157160574' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6974192101157160574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/6974192101157160574'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/primeira-dialog-utilizando-swing.html' title='Primeira dialog utilizando Swing'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-2809491423283770678</id><published>2008-12-10T16:42:00.001-02:00</published><updated>2008-12-10T16:42:28.496-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Exemplo de utilização de métodos</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Para explicar a utilização de métodos e objetos, nada melhor que o exemplo que já está até cansado de aparecer. O de contas bancárias!&lt;br/&gt;&lt;/div&gt;Para isto, vamos criar a seguinte classe:&lt;br/&gt;&lt;blockquote&gt;public class ContaBancaria {&lt;br/&gt;    private String cliente;&lt;br/&gt;    private int numero;&lt;br/&gt;    private double saldo;&lt;br/&gt;    private boolean especial;&lt;br/&gt;    &lt;br/&gt;    public String getCliente() {&lt;br/&gt;        return cliente;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setCliente(String cliente) {&lt;br/&gt;        this.cliente = cliente;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public int getNumero() {&lt;br/&gt;        return numero;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setNumero(int numero) {&lt;br/&gt;        this.numero = numero;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public double getSaldo() {&lt;br/&gt;        return saldo;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setSaldo(double saldo) {&lt;br/&gt;        this.saldo = saldo;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public boolean isEspecial() {&lt;br/&gt;        return especial;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setEspecial(boolean especial) {&lt;br/&gt;        this.especial = especial;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    &lt;br/&gt;    public ContaBancaria(){&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public void depositar(double deposito){&lt;br/&gt;        if(deposito&amp;gt;0){&lt;br/&gt;            this.saldo += deposito;&lt;br/&gt;        }&lt;br/&gt;        else{&lt;br/&gt;            System.out.println("Depósito inválido");&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public void sacar(double saque){&lt;br/&gt;        if (saque &amp;lt; this.saldo){&lt;br/&gt;            this.saldo -= saque;&lt;br/&gt;        }&lt;br/&gt;        else{&lt;br/&gt;            if(this.especial){&lt;br/&gt;                if(saque &amp;lt; (this.saldo+1000)){&lt;br/&gt;                    this.saldo -= saque;&lt;br/&gt;                }&lt;br/&gt;                else{&lt;br/&gt;                    System.out.println("Saque não disponível!");&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;            else{&lt;br/&gt;                System.out.println("Saque não disponível!");&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }    &lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Esta classe possui além dos métodos "getters and setters", os métodos depositar e sacar, onde o método depositar soma ao saldo o valor depositado, porém, se este valor for menor que zero, informa a seguinte mensagem: "Depósito inválido".&lt;br/&gt;O método sacar verifica mais coisas, por exemplo, se a conta é "Cliente especial"(variável booleana especial). Ao tentar realizar um saque, ele verifica se o saque é menor que o saldo. Caso o saque seja menor que o saldo, efetua o saque normalmente, ou seja, diminui o saque do saldo. Já se for maior, ele verifica as seguintes condições:&lt;br/&gt;1ª Se o cliente é especial, se não for, exibe a mensagem "Saque não disponível"&lt;br/&gt;2ª Se o cliente for especial, verifica se o saque é igual ao saldo+1000, se não for, exibe a mensagem "Saque não disponível".&lt;br/&gt;&lt;br/&gt;Porém, mais tarde, foi implantada uma nova funcionalidade, a de transação, uma transação é nada mais nada menos que: Retirar de uma conta e passar para a outra. Para não mecher na classe já criada, foi criada uma nova classe como a seguinte:&lt;br/&gt;&lt;blockquote&gt;public class Transacao {&lt;br/&gt;    public static void efetuar(ContaBancaria saque,ContaBancaria deposito, double valor){&lt;br/&gt;        double saldoInicial = saque.getSaldo();&lt;br/&gt;        saque.sacar(valor);&lt;br/&gt;        if (saldoInicial &amp;gt; saque.getSaldo()){        &lt;br/&gt;            deposito.depositar(valor);&lt;br/&gt;        }&lt;br/&gt;        else{&lt;br/&gt;            System.out.println("Transação não realizada");&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Criamos o método Transacao como 'static', deste modo, nós não precisamos criar o objeto para precisar executar o método. Podemos executar direto assim: &amp;lt;NomeDaClasse&amp;gt;.&amp;lt;NomeDoMetodo&amp;gt;, em nosso caso: Transacao.efetuar();, como passamos três parâmetros(a conta que deve ser sacada, a conta que deve ser depositada, valor), precisamos informar estes três, Transacao.efetuar(conta1,conta2,5600); deste modo estamos retirando 5600 da primeira conta e depositando na segunda.&lt;br/&gt;Foi importante fazer algumas verificações, como por exemplo, se o saldo depois do saque foi afetado, pois se o saldo é igual, nenhum dinheiro foi retirado. Então, não podemos efetuar o depósito na conta2 e somente a nível de 'frufru' exibimos a mensagem "Transação não realizada".&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;Implementando este novo método em nossa classe main do ContaBancaria, ficaria:&lt;br/&gt;&lt;blockquote&gt;    public static void main(String[] args){&lt;br/&gt;        ContaBancaria conta1 = new ContaBancaria();&lt;br/&gt;        conta1.setNumero(100);&lt;br/&gt;        conta1.setCliente("Cliente");&lt;br/&gt;        conta1.setSaldo(1000);&lt;br/&gt;        conta1.depositar(2000);&lt;br/&gt;        &lt;br/&gt;        ContaBancaria conta2 = new ContaBancaria();&lt;br/&gt;        conta2.setNumero(100);&lt;br/&gt;        conta2.setCliente("Cliente");&lt;br/&gt;        conta2.setSaldo(1000);&lt;br/&gt;        conta2.depositar(2000);&lt;br/&gt;        &lt;br/&gt;        Transacao.efetuar(conta1, conta2, 5600);&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;&lt;/blockquote&gt;Deste modo estamos criando nossas duas contas e efetuando a transacao(ou transferência).&lt;br/&gt;Nossa classe ContaBancaria ficaria do seguinte modo no final:&lt;br/&gt;&lt;blockquote&gt;public class ContaBancaria {&lt;br/&gt;    private String cliente;&lt;br/&gt;    private int numero;&lt;br/&gt;    private double saldo;&lt;br/&gt;    private boolean especial;&lt;br/&gt;    &lt;br/&gt;    public String getCliente() {&lt;br/&gt;        return cliente;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setCliente(String cliente) {&lt;br/&gt;        this.cliente = cliente;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public int getNumero() {&lt;br/&gt;        return numero;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setNumero(int numero) {&lt;br/&gt;        this.numero = numero;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public double getSaldo() {&lt;br/&gt;        return saldo;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setSaldo(double saldo) {&lt;br/&gt;        this.saldo = saldo;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public boolean isEspecial() {&lt;br/&gt;        return especial;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void setEspecial(boolean especial) {&lt;br/&gt;        this.especial = especial;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    &lt;br/&gt;    public ContaBancaria(){&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public void depositar(double deposito){&lt;br/&gt;        if(deposito&amp;gt;0){&lt;br/&gt;            this.saldo += deposito;&lt;br/&gt;        }&lt;br/&gt;        else{&lt;br/&gt;            System.out.println("Depósito inválido");&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public void sacar(double saque){&lt;br/&gt;        if (saque &amp;lt; this.saldo){&lt;br/&gt;            this.saldo -= saque;&lt;br/&gt;        }&lt;br/&gt;        else{&lt;br/&gt;            if(this.especial){&lt;br/&gt;                if(saque &amp;lt; (this.saldo+1000)){&lt;br/&gt;                    this.saldo -= saque;&lt;br/&gt;                }&lt;br/&gt;                else{&lt;br/&gt;                    System.out.println("Saque não disponível!");&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;            else{&lt;br/&gt;                System.out.println("Saque não disponível!");&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        ContaBancaria conta1 = new ContaBancaria();&lt;br/&gt;        conta1.setNumero(100);&lt;br/&gt;        conta1.setCliente("Cliente");&lt;br/&gt;        conta1.setSaldo(1000);&lt;br/&gt;        conta1.depositar(2000);&lt;br/&gt;        &lt;br/&gt;        ContaBancaria conta2 = new ContaBancaria();&lt;br/&gt;        conta2.setNumero(100);&lt;br/&gt;        conta2.setCliente("Cliente");&lt;br/&gt;        conta2.setSaldo(1000);&lt;br/&gt;        conta2.depositar(2000);&lt;br/&gt;        &lt;br/&gt;        Transacao.efetuar(conta1, conta2, 5600);&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Pronto, temos um exemplo de métodos sendo executados entre duas classes, com validações e afins.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-2809491423283770678?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/2809491423283770678/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=2809491423283770678' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/2809491423283770678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/2809491423283770678'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/exemplo-de-utilizao-de-mtodos.html' title='Exemplo de utilização de métodos'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-637742050255332373.post-647403897571286909</id><published>2008-12-10T10:24:00.002-02:00</published><updated>2008-12-10T10:29:16.490-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Classe Java Básica</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Uma classe padrão java, ou um Bean, deve ser escrita da seguinte forma:&lt;br/&gt;&lt;blockquote&gt;class NomeDaClasse{&lt;br/&gt;    parametros&lt;br/&gt;&lt;br/&gt;    metodos(){&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Os parâmetros e métodos devem conter antes de sua declaração(int, String, boolean, double, float, etc), a sua permissão, ou seja, se ele será acessado somente pela classe(private), pelo pacote(package,protected) ou então por todos os outros pacotes e classes(public).&lt;br/&gt;Para parâmetros costumamos utilizar a permissão private e para acessá-los de outra classe, utilizamos os getters e setters. Isto serve para encapsular os parâmetros dentro de uma classe.&lt;br/&gt;Uma classe carro por exemplo, ficaria do seguinte modo:&lt;br/&gt;&lt;blockquote&gt;class Carro{&lt;br/&gt;    private int ano;&lt;br/&gt;    private String modelo;&lt;br/&gt;    private int potencia;&lt;br/&gt;    public int getAno() {&lt;br/&gt;        return ano;&lt;br/&gt;    }&lt;br/&gt;    public void setAno(int ano) {&lt;br/&gt;        this.ano = ano;&lt;br/&gt;    }&lt;br/&gt;    public String getModelo() {&lt;br/&gt;        return modelo;&lt;br/&gt;    }&lt;br/&gt;    public void setModelo(String modelo) {&lt;br/&gt;        this.modelo = modelo;&lt;br/&gt;    }&lt;br/&gt;    public int getPotencia() {&lt;br/&gt;        return potencia;&lt;br/&gt;    }&lt;br/&gt;    public void setPotencia(int potencia) {&lt;br/&gt;        this.potencia = potencia;&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;Então para criar o objeto, usariamos no método main(por exemplo), e setar seus parâmetros, as seguintes linhas:&lt;br/&gt;&lt;blockquote&gt;Carro ferrari = new Carro();&lt;br/&gt;ferrari.setAno(2009);&lt;br/&gt;ferrari.setModelo("F-40");&lt;br/&gt;ferrari.setPotencia(500);&lt;br/&gt;&lt;/blockquote&gt;E para mostrar seus parâmetros em tela(terminal), poderiamos utilizar:&lt;br/&gt;&lt;blockquote&gt;System.out.println("Ano:"+ferrari.getAno());&lt;br/&gt;System.out.println("Modelo:"+ferrari.getModelo());&lt;br/&gt;System.out.println("Potencia:"+ferrari.getPotencia());&lt;br/&gt;&lt;/blockquote&gt;Perceba, que depois da criação do objeto, foram utilizados os métodos (setAno(),setModelo(),setPotencia()), se os parâmetros fossem públicos, eu poderia somente utilizar ferrari.ano = 2009 ou ano=2009, porém caso eu tivesse várias classes com o parâmetro "ano", poderia causar um conflito e acabar alterando no objeto errado. Já para mostrar em tela, utilizamos os métodos getAno(),getModelo() e getPotencia() que nada mais, nada menos, retornam os parâmetros com um return no método.&lt;br/&gt;A classe completa então, ficaria assim:&lt;br/&gt;&lt;blockquote&gt;class Carro{&lt;br/&gt;    private int ano;&lt;br/&gt;    private String modelo;&lt;br/&gt;    private int potencia;&lt;br/&gt;    public int getAno() {&lt;br/&gt;        return ano;&lt;br/&gt;    }&lt;br/&gt;    public void setAno(int ano) {&lt;br/&gt;        this.ano = ano;&lt;br/&gt;    }&lt;br/&gt;    public String getModelo() {&lt;br/&gt;        return modelo;&lt;br/&gt;    }&lt;br/&gt;    public void setModelo(String modelo) {&lt;br/&gt;        this.modelo = modelo;&lt;br/&gt;    }&lt;br/&gt;    public int getPotencia() {&lt;br/&gt;        return potencia;&lt;br/&gt;    }&lt;br/&gt;    public void setPotencia(int potencia) {&lt;br/&gt;        this.potencia = potencia;&lt;br/&gt;    }&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        Carro ferrari = new Carro();&lt;br/&gt;        ferrari.setAno(2009);&lt;br/&gt;        ferrari.setModelo("F-40");&lt;br/&gt;        ferrari.setPotencia(500);&lt;br/&gt;        &lt;br/&gt;        System.out.println("Ano:"+ferrari.getAno());&lt;br/&gt;        System.out.println("Modelo:"+ferrari.getModelo());&lt;br/&gt;        System.out.println("Potencia:"+ferrari.getPotencia());&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/blockquote&gt;No próximo post, abordarei uma classe mais complexa, com mais métodos que realizarão funções específicas.&lt;br/&gt;&lt;br/&gt;[]'s&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/637742050255332373-647403897571286909?l=thawthe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thawthe.blogspot.com/feeds/647403897571286909/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=637742050255332373&amp;postID=647403897571286909' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/647403897571286909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/637742050255332373/posts/default/647403897571286909'/><link rel='alternate' type='text/html' href='http://thawthe.blogspot.com/2008/12/classe-java-bsica.html' title='Classe Java Básica'/><author><name>Fábio Miguel Mello</name><uri>http://www.blogger.com/profile/07955529095400480577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
