<?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-7969675823376808345</id><updated>2011-11-27T22:33:59.527-02:00</updated><category term='Outros'/><category term='RSS'/><category term='banda larga'/><category term='Firefox'/><category term='Bussiness Inteligence'/><category term='3d'/><category term='Calendar'/><category term='Padrões de Projeto'/><category term='Blendas'/><category term='Ubuntu'/><category term='Engenharia de Software'/><category term='Java'/><category term='Testes'/><category term='rede'/><category term='Open Source'/><title type='text'>Bit in Vitro, experiências em tecnologia.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-5231960515102891748</id><published>2010-09-07T14:22:00.005-03:00</published><updated>2010-09-07T14:38:33.843-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='Blendas'/><title type='text'>Dia do blender</title><content type='html'>Faltam poucas semanas para o Dia do Blender Bahia - Salvador, o evento mais criativo e mais participativo da região. O Dia do Blender é um evento realizado em diversas cidades do país como sendo uma prévia do que será visto na Blender Pro, contando com Palestras, Oficinas e toda a interatividade entre os participantes.&lt;br /&gt;&lt;br /&gt;Mais em:&lt;br /&gt;&lt;br /&gt;http://www.diadoblenderba.com.br/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-5231960515102891748?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/5231960515102891748/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=5231960515102891748' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/5231960515102891748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/5231960515102891748'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2010/09/faltam-poucas-semanas-para-o-dia-do.html' title='Dia do blender'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-2215821862565222290</id><published>2010-05-18T11:31:00.006-03:00</published><updated>2010-05-19T09:31:49.262-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='banda larga'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Configuração do Firefox para conexão em banda larga</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.imotion.com.br/imagens/data/media/84/7344firefox.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 267px; height: 199px;" src="http://www.imotion.com.br/imagens/data/media/84/7344firefox.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Após &lt;/span&gt;&lt;span&gt;alguns dias de pesquisa, cheguei à configuração que me garantiu um bom gerenciamento de memória, renderização e processamento de sites no FF. Indico esta configuração para que tem banda larga igual ou superior à 2MB (256 KB / s).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Digite &lt;span style="font-style: italic;"&gt;about:config&lt;/span&gt; na barra de endereço e tecle enter. Na barra de busca, logo abaixo da barra de endereço, procure pelas opções abaixo, caso não existir crie:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Rede:&lt;/span&gt;&lt;br /&gt;network.http.pipelining =&gt; Boolean =&gt; true&lt;br /&gt;network.http.pipelining.maxrequests =&gt; Integer =&gt; 20&lt;br /&gt;network.http.proxy.pipelining =&gt; Boolean =&gt; true&lt;br /&gt;network.http.max-connections =&gt; Integer =&gt; 48 ou 96&lt;br /&gt;network.http.max-connections-per-server =&gt; Integer =&gt; 24&lt;br /&gt;network.http.max-persistent-connections-per-server =&gt; Integer =&gt; 12&lt;br /&gt;network.dns.disableIPv6 =&gt; Boolean =&gt; true&lt;br /&gt;network.dnsCacheEntries =&gt; Integer =&gt; 512&lt;br /&gt;network.dnsCacheExpiration =&gt; Integer=&gt; 3600&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Conteúdo:&lt;/span&gt;&lt;br /&gt;content.interrupt.parsing =&gt; Boolean =&gt; true&lt;br /&gt;content.max.tokenizing.time =&gt; Integer =&gt; 2250000&lt;br /&gt;content.notify.interval =&gt; Integer =&gt; 750000&lt;br /&gt;content.notify.ontimer =&gt; Boolean =&gt; true&lt;br /&gt;content.notify.backoffcount =&gt; Integer =&gt; 5&lt;br /&gt;content.switch.threshold =&gt; Integer =&gt; 750000&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Renderização&lt;/span&gt;:&lt;br /&gt;nglayout.initialpaint.delay =&gt; Integer =&gt; 0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fontes:&lt;/span&gt;&lt;br /&gt;[1] http://tutoriais.ctdo.com.br/tutoriais/navegadores/mozzila-firefox/otimizando-seu-navegador-mozzila-firefox-ao-melhor-desempenho-possivel.html&lt;br /&gt;&lt;br /&gt;[2] http://www.ultradicas.com/2010/04/o-guia-supremo-para-otimizacao-do.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-2215821862565222290?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/2215821862565222290/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=2215821862565222290' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2215821862565222290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2215821862565222290'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2010/05/configuracao-do-firefox-para-conexao-em.html' title='Configuração do Firefox para conexão em banda larga'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-3508237194645703494</id><published>2010-04-27T09:48:00.006-03:00</published><updated>2010-05-18T11:48:38.115-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 10.04 LTS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://wiki.ubuntu.com/Artwork/Official?action=AttachFile&amp;amp;do=get&amp;amp;target=UbuntuLogo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 330px; height: 85px;" src="https://wiki.ubuntu.com/Artwork/Official?action=AttachFile&amp;amp;do=get&amp;amp;target=UbuntuLogo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Em mais uma versão, agora sob o codinome Lucid Lynx, ou Lynx Lúcido. Fazendo uma referência à um dos animais mais rápidos do planeta. Será disponibilizado em uma versão full no dia 29/04, com as seguintes novidades:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Versão mais atual do GNOME/KDE;&lt;/li&gt;&lt;li&gt;Nova versão de kernel (2.6.32);&lt;/li&gt;&lt;li&gt;HAL (Hardware Abstraction Layer) removida do boot, isso dará mais velocidade principalmente ao ligar/desligar o computador;&lt;/li&gt;&lt;li&gt;Nova versão do pacote  &lt;a class="http" href="http://www.likewise.com/products/likewise_open/"&gt;likewise-open&lt;/a&gt; para melhor integração com o Active Directory;&lt;/li&gt;&lt;li&gt;Novo driver para placa NVIDIA, chamado &lt;a class="http" href="http://nouveau.freedesktop.org/wiki/"&gt;Nouveau;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;integração com Twitter, indenti.ca, Facebook, e outras redes;&lt;/li&gt;&lt;li&gt;Novos temas, posibilidade de personalização de boot, indicadores.&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://media.one.ubuntu.com/media/2649/img/sync-share-promo.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 255px; height: 123px;" src="https://media.one.ubuntu.com/media/2649/img/sync-share-promo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sem falar que temos o novo Ubuntu One (https://one.ubuntu.com/) uma plataforma onde é possível sincronizar/compartilhar arquivos, informações e músicas.&lt;br /&gt;&lt;br /&gt;A atualização para quem já possui o Ubuntu instalado, não poderia ser mais simples :&lt;br /&gt;Digitar o comando &lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;update-manager -d&lt;/span&gt; no terminal e seguir as intruções &lt;span style="font-style: italic;"&gt;on the screen&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para quem quer partir de uma instalação do zero, é só baixar no site www.ubuntu.com.&lt;br /&gt;&lt;br /&gt;Até o próximo post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-3508237194645703494?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/3508237194645703494/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=3508237194645703494' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/3508237194645703494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/3508237194645703494'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2010/04/ubuntu-1004-lts.html' title='Ubuntu 10.04 LTS'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-7723780456252694218</id><published>2010-04-21T14:05:00.005-03:00</published><updated>2010-04-26T10:51:47.101-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Compiz</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.compiz.org/Welcome?action=AttachFile&amp;amp;do=get&amp;amp;target=cube2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 370px; height: 231px;" src="http://wiki.compiz.org/Welcome?action=AttachFile&amp;amp;do=get&amp;amp;target=cube2.png" alt="" border="0" /&gt;&lt;/a&gt;O Compiz é um gerenciador de janelas, bem conhecido por usuários do linux. Com ele dá pra fazer um efeitos bem legais, transformando a área de trabalho em 3 dimensões (conforme figura ao lado).&lt;br /&gt;&lt;br /&gt;Para habilitar o Compiz, no Ubuntu 9.10, por exemplo, basta clicar com o botão direito na área de trabalho , em seguida na opção Alterar Plano de Fundo &gt; Efeitos Visuais (Normal ou Extra, dependendo de sua placa de vídeo).&lt;br /&gt;&lt;br /&gt;Para instalação do gerenciador com mais opções de efeitos e configurações basta digitar no console:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;sudo apt-get install compizconfig-settings-manager gnome-art usplash startupmanager&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Será instalado o Sistema de Configuração do Compiz, e apartir disso é só alegria. Lembrando que o Compiz só funciona em computadores com placas gráficas aceleradoras 3D.&lt;br /&gt;&lt;br /&gt;E quem quiser passos mais detalhados, e um exemplo de configuração, segue o wiki:&lt;br /&gt;http://wiki.ubuntu-br.org/InstalarComponentesDoCompiz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-7723780456252694218?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/7723780456252694218/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=7723780456252694218' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/7723780456252694218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/7723780456252694218'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2010/04/compiz.html' title='Compiz'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-2158104124636747388</id><published>2010-04-20T14:39:00.002-03:00</published><updated>2010-04-20T14:44:33.723-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Engenharia de Software'/><title type='text'>SWEBOK 2</title><content type='html'>Depois de muito (mais muito tempo mesmo) sem postar, estou aqui para reativar o blog, agora com um visual mais clean e simples.  Sempre com o objetivo de divulgar algumas experiências vividas na área da T. I. Sendo assim segue algum links de capítulos do SWEBOK, disponível FREE no site do IEEE.&lt;br /&gt;&lt;br /&gt;O Livro inteiro está em: http://www.computer.org/portal/web/swebok/html/contents&lt;br /&gt;&lt;br /&gt;E pra quer quer dar só uma olhada:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER 1:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch1#ch1"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;I&lt;/span&gt;NTRODUCTION  TO THE &lt;span style="font-size: medium;"&gt;G&lt;/span&gt;UIDE&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  2:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch2#ch2"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;R&lt;/span&gt;EQUIREMENTS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  3:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch3#ch3"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;D&lt;/span&gt;ESIGN&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  4:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch4#ch4"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;C&lt;/span&gt;ONSTRUCTION&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  5:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch5#ch5"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;T&lt;/span&gt;ESTING&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  6:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch6#ch6"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;M&lt;/span&gt;AINTENANCE&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  7:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch7#ch7"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;C&lt;/span&gt;ONFIGURATION &lt;span style="font-size: medium;"&gt;M&lt;/span&gt;ANAGEMENT&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  8:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch8#ch8"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;E&lt;/span&gt;NGINEERING &lt;span style="font-size: medium;"&gt;M&lt;/span&gt;ANAGEMENT&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  9:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch9#ch9"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;E&lt;/span&gt;NGINEERING &lt;span style="font-size: medium;"&gt;P&lt;/span&gt;ROCESS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  10:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch10#ch10"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;E&lt;/span&gt;NGINEERING &lt;span style="font-size: medium;"&gt;T&lt;/span&gt;OOLS AND &lt;span style="font-size: medium;"&gt;M&lt;/span&gt;ETHODS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER 11:&lt;/span&gt;&lt;/b&gt;  &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch11#ch11"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE  &lt;span style="font-size: medium;"&gt;Q&lt;/span&gt;UALITY&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span style="font-size: medium;"&gt;C&lt;/span&gt;HAPTER  12:&lt;/span&gt;&lt;/b&gt; &lt;a href="http://www.computer.org/portal/web/swebok/html/contentsch12#ch12"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-size: medium;"&gt;R&lt;/span&gt;ELATED  &lt;span style="font-size: medium;"&gt;D&lt;/span&gt;ISCIPLINES OF &lt;span style="font-size: medium;"&gt;S&lt;/span&gt;OFTWARE &lt;span style="font-size: medium;"&gt;E&lt;/span&gt;NGINEERING&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;So long.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-2158104124636747388?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/2158104124636747388/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=2158104124636747388' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2158104124636747388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2158104124636747388'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2010/04/swebok-2.html' title='SWEBOK 2'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-8576988780403276582</id><published>2009-05-04T14:11:00.006-03:00</published><updated>2009-05-04T14:52:02.887-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Engenharia de Software'/><title type='text'>SWEBOK - Um guia para a Engenharia de Software.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn0.google.com/images?q=tbn:U4ywfYAtFbR3aM:http://www.swebok.org/images/swebok_cover.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 114px; height: 147px;" src="http://tbn0.google.com/images?q=tbn:U4ywfYAtFbR3aM:http://www.swebok.org/images/swebok_cover.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Provavelmente alguém já ouviu falar no PMBOK (&lt;span style="font-style: italic;"&gt;Project Management Body of Knowledge&lt;/span&gt;), um livro que reúne todas as melhores práticas da gerência de projetos, fornecendo um arcabouço para aplicação metodológica. Pensando nisso o IEEE (&lt;em&gt;Institute of Electrical and Electronics Engineers&lt;/em&gt;), elabou um livro similar para a engenharia de software o SWEBOK (&lt;span style="font-style: italic;"&gt;Software Engineering Body of Knowledge&lt;/span&gt;) reunindo as melhores práticas da engenharia de software. O livro compreende 10 áreas, vamos cada uma delas  a seguir:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Requisitos de Software &lt;/span&gt;-  requisitos definidos para resolução de problemas do mundo real;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Projeto de Software&lt;/span&gt; - definição de arquitetura, componentes, interfaces, e outras características de um sistema ou componente;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Construção de Software&lt;/span&gt; - detalhada criação através de um combinação de código, verificação, teste unitário, teste de integração e depuração;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Teste de Software&lt;/span&gt; - verificação dinâmica de um programa em um finito conjunto de casos de teste;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Manutenção de Software&lt;/span&gt; - fase que inicia após a entrega, seja por anomalias encontradas, novos requisitos ou mudança nos mesmos;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Gerência de Configuração de Software&lt;/span&gt; - identificação da configuração do software em vários pontos distintos através do tempo com o objetivo de controlar a configuração e manter a integridade e rastreabilidade desta configuração através do ciclo de vida do software;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Gestão &lt;/span&gt;- foca o gerenciamento e a mensuração do software;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Processo &lt;/span&gt;- foca na definição, implementação, mudança e melhoria do processo de software;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ferramentas e Métodos&lt;/span&gt; - provê um guia para auxiliar na escolha de ferramentas para auxiliar nas outras 9 áreas, e métodos (heurístico, formal e prototipado);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Qualidade de Software&lt;/span&gt; - trancende o ciclo de vida do processo de software, como é um conceito ubíquo, é subdivida em 3: fundamentos de qualidade, gerenciamento da qualidade e considerações práticas.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Pra quem não leu vale a pena ficar acompanhando o blog, pois vou estar abordando essas áreas nos próximos 10 posts.&lt;br /&gt;&lt;br /&gt;Indicações:&lt;br /&gt;&lt;a href="http://www.swebok.org/"&gt;http://www.swebok.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.swebok.org/"&gt;http://www.ieee.org/&lt;/a&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/7969675823376808345-8576988780403276582?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/8576988780403276582/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=8576988780403276582' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8576988780403276582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8576988780403276582'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2009/05/swebok-um-guia-para-engenharia-de.html' title='SWEBOK - Um guia para a Engenharia de Software.'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-3118467114962314266</id><published>2009-03-11T07:58:00.010-03:00</published><updated>2009-03-18T10:16:08.974-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Engenharia de Software'/><title type='text'>Causas do Software Aging</title><content type='html'>&lt;div style="text-align: justify;"&gt;No princípio é tudo azul. Requisitos, modelos, protótipos... Aí que vem a primeira entrega, os testes, e então (depois de muitas horas de idas e vindas, iterativamente e incrementalmente) o software entra em produção. A partir deste ponto existem alguns aspectos que devem ser considerados para uma perfeita &lt;span style="font-style: italic;"&gt;saúde&lt;/span&gt; de seu software, caso contrário, ele envelhece e morre.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Causas do Software Aging&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Estagnação&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ocorre quando de alguma forma a equipe do projeto não consegue implementar melhorias solicitadas no software. Necessidades sempre são adiadas, desenvolvedores recebem sempre um grande volume de modificações a serem realizadas e o custo de resposta a essas solicitações sempre cresce de forma não linear, com o tempo, em relação ao tamanho das modificações.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Consequências:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Erosão estrutural - comprometimento da arquitetura, causado pelo grande volume de modificações em conflito com o projeto original;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Degradação de qualidades operacionais - usabilidade, confiabilidade, performance e facilidade de suporte.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Fadiga&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ocorre quando a equipe do projeto opera sob pressão ou falta de capacidade técnica para realização de certa modificação em um sistema, o que ocasiona alterações em sua estrutura original e queda no desempenho.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Consequências:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Comprometimento da arquitetura do software - devido a falta de capacidade técnica ou tempo da equipe o que geralmente ocorre é a adoção de estruturas que efetuem a modificação mais rapidamente, independente se seguem o padrão arquitetural ou não;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Código ruim - devido à pressão por resultados, o desenvolvedor acaba por não seguir certos padrões de codificação/revisão/testes;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Resposta ao usuário cada vez maior - em decorrência dos itens anteriores, ocorre uma degração da performance do sistema e uso cada vez maior de recursos de hardware.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Prevenção&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;É inevitável o envelhecimento de um software, o que podemos fazer é adiar este processo para que a vida útil de um software se torne o mais prolongada possível. Desta forma, temos como prevenção para a estagnação, a utilização de Métodos Ágeis. E para a fadiga, o uso de refatoração.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Tem sido registrado um número cada vez maior de casos de sucesso usando métodos ágeis (XP, DSDM, SCRUM, etc), baseados em desenvolvimento iterativo e incremental, envolvem o cliente no processo sendo otimizados para lidar com mudançase prevenir a estagnação.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Já a refatoração é um processo pelo qual não são alterados comportamentos externos do software sem que sejam melhoradas proporcionalmente  a estrutura interna do mesmo.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-3118467114962314266?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/3118467114962314266/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=3118467114962314266' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/3118467114962314266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/3118467114962314266'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2009/03/causas-do-software-aging.html' title='Causas do Software Aging'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-1637036210345361883</id><published>2009-02-19T10:23:00.002-03:00</published><updated>2009-02-19T10:24:21.955-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testes'/><category scheme='http://www.blogger.com/atom/ns#' term='Engenharia de Software'/><title type='text'>Seja um Testador !</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://powerdeskmod.files.wordpress.com/2007/07/experimental-apple-wallpaper.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 205px; height: 128px;" src="http://powerdeskmod.files.wordpress.com/2007/07/experimental-apple-wallpaper.jpg" alt="" border="0" /&gt;&lt;/a&gt;No último sábado (14/02), participei de um experimento em engenharia de sofware. Este consistia em uma pesquisa sobre compreensão de sofware, um projeto para entender qual a melhor estratégia para efetuar manutenção em um dado software, através da plataforma eclipse.&lt;br /&gt;&lt;br /&gt;Neste iterim, observei o quanto há em desinteresse, tanto na academia, quanto no mercado, na participação de experiências e questionários científicos. Lembrei-me também do tempo em que estava na conclusão do meu projeto de do curso de graduação ( &lt;a href="http://sourceforge.net/projects/erpoo"&gt;ERPOO&lt;/a&gt; ), o quão difícil foi arrumar pessoas para utilizar e responder meus questionários !&lt;br /&gt;&lt;br /&gt;Como podemos exigir qualidade de nossos softwares se não participamos dos testes, pesquisas , questionários de opnião? Como podemos criticar iniciativas volutárias de desenvolvimento, senão participamos (em pelo menos) na crítica do produto final? Nem todas as empresas/pessoas possuem as montanhas de dinheiro que a microsoft/apple/IBM e outros possuem e que podem pagar para pessoas especializadas testarem seus produtos.&lt;br /&gt;&lt;br /&gt;Desta forma, fica o apelo aqui neste blog, que tal participar de uma equipe de desenvolvimento de software em um dos seus papéis principais? Seja um testador!&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/7969675823376808345-1637036210345361883?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/1637036210345361883/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=1637036210345361883' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1637036210345361883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1637036210345361883'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2009/02/seja-um-testador_19.html' title='Seja um Testador !'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-8953098203962099543</id><published>2009-02-02T20:49:00.000-03:00</published><updated>2009-02-02T21:03:46.858-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='rede'/><title type='text'>A interface InterfaceAddress</title><content type='html'>Algo que não tinha sabido , até o momento, é dos recursos da nova interface InterfaceAddress (nova interface do jsdk 1.6). Através dela podemos obter uma lista de adaptadores de rede e suas respectivas informações, como por exemplo em um código como este:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.net.InterfaceAddress;&lt;br /&gt;import java.net.NetworkInterface;&lt;br /&gt;import java.net.SocketException;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class NetworkInterfaces {&lt;br /&gt;public static void main(String[] args) throws Exception {&lt;br /&gt;NetworkParameter np = new NetworkParameter();&lt;br /&gt;&lt;br /&gt;// obtem todas as interfaces de rede da máquina.&lt;br /&gt;Enumeration&lt;networkinterface&gt; en = NetworkInterface.getNetworkInterfaces();&lt;br /&gt;&lt;br /&gt;// exibe informações&lt;br /&gt;while (en.hasMoreElements()) {&lt;br /&gt; NetworkInterface ni = en.nextElement();&lt;br /&gt; np.printParameter(ni);&lt;br /&gt; System.out.println("==================================");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class NetworkParameter {&lt;br /&gt;&lt;br /&gt;public void printParameter(NetworkInterface ni) throws SocketException {&lt;br /&gt;&lt;br /&gt;// Exibe todas as informações da interface de rede&lt;br /&gt;System.out.println("Interface de rede:");&lt;br /&gt;System.out.println("------------------");&lt;br /&gt;System.out.println(" Nome = " + ni.getName());&lt;br /&gt;System.out.println(" Nome de exibição = " + ni.getDisplayName());&lt;br /&gt;System.out.println(" Está ativa = " + ni.isUp());&lt;br /&gt;System.out.println(" Suporta multicast = " + ni.supportsMulticast());&lt;br /&gt;System.out.println(" É local = " + ni.isLoopback());&lt;br /&gt;System.out.println(" É virtual = " + ni.isVirtual());&lt;br /&gt;System.out.println(" É ponto a ponto = " + ni.isPointToPoint());&lt;br /&gt;System.out.println(" Endereço do hardware = " + ni.getHardwareAddress());&lt;br /&gt;System.out.println(" MTU = " + ni.getMTU());&lt;br /&gt;&lt;br /&gt;// Obtém uma lista de todas as interfaces de rede&lt;br /&gt;System.out.println("\nLista de endereços da Interface:");&lt;br /&gt;System.out.println("----------------------------");&lt;br /&gt;List&lt;interfaceaddress&gt; list = ni.getInterfaceAddresses();&lt;br /&gt;Iterator&lt;interfaceaddress&gt; it = list.iterator();&lt;br /&gt;&lt;br /&gt;// iterar&lt;br /&gt;while (it.hasNext()) {&lt;br /&gt; InterfaceAddress ia = it.next();&lt;br /&gt; System.out.println(" IP = " + ia.getAddress());&lt;br /&gt; System.out.println(" Broadcast = " + ia.getBroadcast());&lt;br /&gt; System.out.println(" Tamanho do prefixo da rede = " + ia.getNetworkPrefixLength());&lt;br /&gt; System.out.println("");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/interfaceaddress&gt;&lt;/interfaceaddress&gt;&lt;/networkinterface&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Quando colocado em execução produz o resultado abaixo (aqui no meu notebook):&lt;br /&gt;&lt;br /&gt;Interface de rede:&lt;br /&gt;------------------&lt;br /&gt;Nome = lo&lt;br /&gt;Nome de exibição = MS TCP Loopback interface&lt;br /&gt;Está ativa = true&lt;br /&gt;Suporta multicast = true&lt;br /&gt;É local = true&lt;br /&gt;É virtual = false&lt;br /&gt;É ponto a ponto = false&lt;br /&gt;Endereço do hardware = null&lt;br /&gt;MTU = 1520&lt;br /&gt;&lt;br /&gt;Lista de endereços da Interface:&lt;br /&gt;----------------------------&lt;br /&gt;IP = /127.0.0.1&lt;br /&gt;Broadcast = /127.255.255.255&lt;br /&gt;Tamanho do prefixo da rede = 8&lt;br /&gt;&lt;br /&gt;==================================&lt;br /&gt;Interface de rede:&lt;br /&gt;------------------&lt;br /&gt;Nome = eth0&lt;br /&gt;Nome de exibição = VIA Compatable Fast Ethernet Adapter - Miniporta do agendador de pacotes&lt;br /&gt;Está ativa = true&lt;br /&gt;Suporta multicast = true&lt;br /&gt;É local = false&lt;br /&gt;É virtual = false&lt;br /&gt;É ponto a ponto = false&lt;br /&gt;Endereço do hardware = [B@42e816&lt;br /&gt;MTU = 1500&lt;br /&gt;&lt;br /&gt;Lista de endereços da Interface:&lt;br /&gt;----------------------------&lt;br /&gt;IP = /192.168.254.2&lt;br /&gt;Broadcast = /192.168.254.255&lt;br /&gt;Tamanho do prefixo da rede = 24&lt;br /&gt;&lt;br /&gt;==================================&lt;br /&gt;Interface de rede:&lt;br /&gt;------------------&lt;br /&gt;Nome = eth1&lt;br /&gt;Nome de exibição = RT73 USB Wireless LAN Card - Miniporta do agendador de pacotes&lt;br /&gt;Está ativa = false&lt;br /&gt;Suporta multicast = true&lt;br /&gt;É local = false&lt;br /&gt;É virtual = false&lt;br /&gt;É ponto a ponto = false&lt;br /&gt;Endereço do hardware = [B@9304b1&lt;br /&gt;MTU = 1500&lt;br /&gt;&lt;br /&gt;Lista de endereços da Interface:&lt;br /&gt;----------------------------&lt;br /&gt;==================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-8953098203962099543?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/8953098203962099543/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=8953098203962099543' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8953098203962099543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8953098203962099543'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2009/02/interface-interfaceaddress.html' title='A interface InterfaceAddress'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-2357577136270540783</id><published>2009-01-09T08:22:00.000-03:00</published><updated>2009-01-09T08:28:01.255-03:00</updated><title type='text'>Atualize seu navegador</title><content type='html'>&lt;div style="text-align: justify;"&gt;Olá pessoal, este post é para divulgar a campanha do &lt;a href="http://www.imasters.com.br/"&gt;IMasters &lt;/a&gt;- Atualize seu navegador - segue texto da campanha:&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Desenvolvedores ainda perdem muito em produtividade devido a navegadores desatualizados, sem suporte às funcionalidades e tecnologias atuais para alcançar seus clientes, limitando soluções e criando dores de cabeça desnecessárias.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;O Internet Explorer 6.0 (lançado em 2001) ainda participa de 35% do   mercado de navegadores*. É um browser que não acompanha o estágio   atual da Internet, possui falhas de segurança e limita todo o  potencial de uma Internet melhor para todos nós.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Esta campanha é uma iniciativa para excluir navegadores desatualizados  do mapa da internet do Brasil. Basta inserir o código abaixo em todos  os seus sites e de seus clientes. Desta forma, para todo usuário que acessá-los  utilizando navegadores desatualizados, será exibida uma barra simples, sem  marcas, orientando o usuário a atualizar o seu navegador e falando da importância  desta atitude (&lt;a href="http://imasters.uol.com.br/crossbrowser/#" onclick="crossbrowser_show();"&gt;veja a barra em ação&lt;/a&gt;). Mais segurança para o usuário, mais liberdade aos desenvolvedores.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Basta adicionar o código abaixo em sua página:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;script src="http://imasters.uol.com.br/crossbrowser/fonte.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Fonte: http://imasters.uol.com.br/crossbrowser&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/7969675823376808345-2357577136270540783?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/2357577136270540783/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=2357577136270540783' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2357577136270540783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/2357577136270540783'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2009/01/atualize-seu-navegador.html' title='Atualize seu navegador'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-282926695888167798</id><published>2008-12-29T08:58:00.000-03:00</published><updated>2008-12-29T09:13:09.708-03:00</updated><title type='text'>CodeInfo: plug-in para contagem em código na plataforma Eclipse.</title><content type='html'>&lt;div style="text-align: justify;"&gt;Este é o meu segundo projeto &lt;span style="font-style: italic;"&gt;open source &lt;/span&gt;(o primeiro foi o TCC https://sourceforge.net/projects/erpoo), feito sem nenhuma pretensão de grandeza, ou de se equiparar aos grandes &lt;span style="font-style: italic;"&gt;plug-ins&lt;/span&gt; cheios de recursos do mundo eclipse. Porém para quem gosta de informações focadas e leveza, este é pode ser uma boa opção.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Seguem as &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;features&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Autor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * Cleuber Batista Silva – cleuber_s@hotmail.com&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Versão&lt;/span&gt;&lt;br /&gt;Alfa 0.1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dependências&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Plug-in : org.eclipse.jdt.core&lt;br /&gt;Eclipse: 3.3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalação e Uso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;O Eclipse possui um componente chamado &lt;span style="font-style: italic;"&gt;Platform Runtime&lt;/span&gt; (responsável pela descoberta de novos &lt;span style="font-style: italic;"&gt;plug-ins&lt;/span&gt;). Toda vez que a plataforma é inicializada, este componente varre o diretório plugins do local em que o Eclipse está instalado. Desta forma para realizar a instalação de um novo &lt;span style="font-style: italic;"&gt;plug-in&lt;/span&gt; basta colocá-lo neste diretório.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;A exibição de informações sobre o código é feita, clicando-se sobre o menu &lt;span style="font-style: italic;"&gt;CodeInfo,&lt;/span&gt; e será exibido o total de pacotes usados, total de classes, interfaces e classes abstratas; além do total de linhas (somatório de todos os arquivos com extensão .java) e a média aritmética de linhas por arquivo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Onde Baixar?&lt;/span&gt;&lt;br /&gt;Projeto: https://sourceforge.net/projects/codeinfo&lt;br /&gt;Download : https://sourceforge.net/project/showfiles.php?group_id=248547&lt;br /&gt;&lt;br /&gt;Aguardo críticas !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-282926695888167798?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/282926695888167798/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=282926695888167798' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/282926695888167798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/282926695888167798'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/12/codeinfo-plug-in-para-contagem-em-cdigo.html' title='CodeInfo: plug-in para contagem em código na plataforma Eclipse.'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-4037864084588266811</id><published>2008-12-18T14:37:00.000-03:00</published><updated>2008-12-18T15:11:18.760-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Bussiness Inteligence'/><title type='text'>Pentaho: uma plataforma de  Bussiness Inteligence Open Source</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pentaho.com/images/de_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 219px; height: 86px;" src="http://www.pentaho.com/images/de_logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Durante algum tempo estive pesquisando uma solução em Bussiness Inteligence que fosse Open Source. As ferramentas do mercado, atualmente, são caríssimas não estando na realidade de empresas de porte.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Foi aí que me deparei com o &lt;a href="http://www.pentaho.com/"&gt;Pentaho&lt;/a&gt; que é na verdade uma plataforma de soluções, que possui recursos como relatórios, análise, integração de workflow, regras de negócios, auditoria, interface e análise/modelagem de workflow.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para quem se interessou pelo mesmo, pode conferir neste link uma simples versão de demonstração de um datawarehouse com dados fictícios: http://demo.pentaho.com/pentaho&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Sumário das Vantagens do Pentaho &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Usabilidade&lt;/span&gt; - A plataforma BI tem componentes prontos para serem executados, é de fácil integração com sistemas externos, e oferece interfaces de fácil customização. Isto resulta em soluções que são muito fáceis de serem usadas.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Habilidades - &lt;/span&gt;A plataforma de BI utiliza reconhecidos padrões, de maneira a facilitar a utilização de ferramentas de parceiros.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Customização &lt;/span&gt;- A plataforma de BI tem mecanismos externos de regras, processos editáveis, disponibilidade de códigos fontes, componentes re-utilizáveis de BI e interfaces plenamente  customizáveis.  A plataforma executa processos editáveis que podem ser integrados com  processos de negócios. Isto resulta em soluções altamente customizadas.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Orientação a Ferramentas&lt;/span&gt; - A plataforma de BI é centrada em processos e soluções. Ela não é projetada para ser um conjunto de ferramentas isoladas, mas para ser um sistema completamente integrado.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extensão - &lt;/span&gt;O código fonte é fornecido. A infra-estrutura, componentes, mecanismos e interfaces podem ser facilmente modificados. O dinheiro salvo em gastos com licenças pode ser direcionado para extender a plataforma em uma área específica. A estrutura do produto é pública.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Foco em Relatórios e Análise&lt;/span&gt; - A plataforma de BI é centrada em processos, baseada em workflow e direcionada a regras de negócios. Ela pode ser facilmente integrada aos processos de negócios e tem facilidades para a geração de relatórios. Regras de negócios são usadas para identificar problemas e exceções; e processos auditados são executados para resolvê-las.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Influência em processos&lt;/span&gt; - A plataforma de BI acompanha a entrega de informações e permite processos de negócios customizados serem iniciados pelos receptores da informação. A entrega de um relatório não é o final da linha. Relatórios de performance de processos e modelos podem ser gerados. Ações tomadas podem ser avaliadas, comparando-as com metas, para mensurar a efetividade do processo. A plataforma oferece facilidades automáticas para realizar esta tarefa.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Auditoria&lt;/span&gt; - A plataform de BI inclui robustos processos de rastreamento e auditoria. A história de uma situação pode ser acessada, incluindo as ações tomadas, discussões/comentários e informações de suporte.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prototipagem&lt;/span&gt; - O licenciamento da plataforma permite que a prototipagem seja&lt;br /&gt;PentahoTM  Artigo Técnico 15  realizada sem grandes investimentos.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flexibilidade da Licença&lt;/span&gt; - O licenciamento da plataforma de BI é flexível e oferece valor ao cliente, pois o BI é somente parte de um processo de negócios, adicionando valor incremental. Além disto, o licenciamento por CPU a custos razoáveis abre a possibilidade aplicações extranet que não são realistas com ferramentas tradicionais, baseadas em licenciamento por&lt;br /&gt;usuário.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;* O Pentaho é desenvolvido na linguagem Java (JEE /Hibernate / portlets)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Downloads&lt;/span&gt;:&lt;br /&gt;http://community.pentaho.com/sourceforge/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wiki&lt;/span&gt;:&lt;br /&gt;http://wiki.pentaho.com&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grupo de usuários Pentaho&lt;/span&gt;:&lt;br /&gt;http://br.groups.yahoo.com/group/pentahobr/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-4037864084588266811?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/4037864084588266811/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=4037864084588266811' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/4037864084588266811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/4037864084588266811'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/12/pentaho-uma-plataforma-de-bussiness.html' title='Pentaho: uma plataforma de  Bussiness Inteligence Open Source'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-6155431816770653373</id><published>2008-12-09T16:34:00.000-03:00</published><updated>2008-12-18T15:11:33.707-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Dicas rápidas</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Splash Screen &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Em linha de comando:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;java -splash:images/nome_da_sua_imagem.extensao SplashDemo&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;No manifest.mf &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Main-Class: NomedaClasse&lt;br /&gt;SplashScreen-Image: NomedaImagem.extensao&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Aplicação no System Tray&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      SystemTray tray = SystemTray.getSystemTray();&lt;br /&gt;      Image image = Toolkit.getDefaultToolkit().getImage("image.gif");&lt;br /&gt;      tray.add(new TrayIcon(image));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Impressão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      java.awt.Desktop desktop = java.awt.Desktop.getDesktop();&lt;br /&gt;      desktop.print(new File("c:/seuarquivo.txt"));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Abrir browser default &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      java.awt.Desktop desktop = java.awt.Desktop.getDesktop();&lt;br /&gt;      desktop.browse(new URI("http://www.site.com"));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edição de arquivos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      java.awt.Desktop desktop = java.awt.Desktop.getDesktop();&lt;br /&gt;      desktop.edit(new File("c:/seuarquivo.txt"));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cliente de e-mail padrão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      java.awt.Desktop desktop = java.awt.Desktop.getDesktop();&lt;br /&gt;      desktop.mail();&lt;br /&gt;      //ou&lt;br /&gt;      desktop.mail(new URI("mailto:nome@isp.com"));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Abrir arquivo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;public class Teste&lt;br /&gt;{&lt;br /&gt;  public static void main(String [] args) throws Exception{&lt;br /&gt;      java.awt.Desktop desktop = java.awt.Desktop.getDesktop();&lt;br /&gt;      desktop.open(new File("c:/seuarquivo.txt"));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-6155431816770653373?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/6155431816770653373/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=6155431816770653373' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/6155431816770653373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/6155431816770653373'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/12/dicas-rpidas.html' title='Dicas rápidas'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-1917659117647217372</id><published>2008-11-17T16:06:00.001-03:00</published><updated>2008-11-17T16:06:49.035-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><title type='text'>ROME: Para Ler RSS Fácil.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zcNQ30jIGtI/SSAZNRQOXoI/AAAAAAAAAB0/CY8F2ZYy2BU/s1600-h/romelogo-small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 144px;" src="http://2.bp.blogspot.com/_zcNQ30jIGtI/SSAZNRQOXoI/AAAAAAAAAB0/CY8F2ZYy2BU/s320/romelogo-small.jpg" alt="" id="BLOGGER_PHOTO_ID_5269239279783927426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;O Rome é um conjunto de ferramentas para ler, gerar e publicar feeds Atom e RSS. O núcleo de sua API, depende somente do JDOM e suporta formatos como RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0.&lt;br /&gt;&lt;br /&gt;Neste post irei demonstrar o código para leitura de RSS/Atom, que com o ROME é muito simples. A classe abaixo contém um exemplo básico disto imprimindo data de publicação, título e descrição:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;import com.sun.syndication.feed.synd.SyndEntryImpl;&lt;br /&gt;import com.sun.syndication.feed.synd.SyndFeed;&lt;br /&gt;import com.sun.syndication.io.SyndFeedInput;&lt;br /&gt;import com.sun.syndication.io.XmlReader;&lt;br /&gt;&lt;br /&gt;public class LeitorRSS {&lt;br /&gt;&lt;br /&gt;private URL feedSource; //URL do feed&lt;br /&gt;private SyndFeedInput input ; //leitor do XML recebido na url.&lt;br /&gt;private SyndFeed feed ; //contém métodos para manipulação dos elementos RSS&lt;br /&gt;private SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");&lt;br /&gt;&lt;br /&gt;     //Neste método todo o Feed é lido, para manipulação em memória.&lt;br /&gt;public LeitorRSS (String url) {&lt;br /&gt;try {&lt;br /&gt; feedSource = new URL(url);&lt;br /&gt; input = new SyndFeedInput();&lt;br /&gt; feed = input.build(new XmlReader(feedSource));&lt;br /&gt;} catch (Exception e) {&lt;br /&gt; e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//neste método os elementos contidos do Feed são impressos, o ROME já possui getters e setters para seus elementos.&lt;br /&gt;public void imprimir() {&lt;br /&gt;SyndEntryImpl item =null;&lt;br /&gt;for (Object entry : feed.getEntries()){&lt;br /&gt; item = (SyndEntryImpl)entry; &lt;br /&gt; System.out.println( formater.format( item.getPublishedDate() ));&lt;br /&gt; System.out.println(item.getTitle());&lt;br /&gt; System.out.println(item.getDescription().getValue().replaceAll("&lt;[^&lt;&gt;]+&gt;", "").trim()); //retira tags HTML do campo descrição.&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String [] args){&lt;br /&gt;LeitorRSS leitor = new LeitorRSS("http://www.theserverside.com/rss/theserverside-rss2.xml");&lt;br /&gt;leitor.imprimir();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;O ROME torna muito fácil a manipulação desses tipos de conteúdo, proporcionando multiplos usos de suas funcionalidades.&lt;br /&gt;&lt;br /&gt;Abraços.&lt;br /&gt;&lt;br /&gt;Fonte:&lt;br /&gt;&lt;br /&gt;https://rome.dev.java.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-1917659117647217372?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/1917659117647217372/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=1917659117647217372' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1917659117647217372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1917659117647217372'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/11/rome-para-ler-rss-fcil.html' title='ROME: Para Ler RSS Fácil.'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zcNQ30jIGtI/SSAZNRQOXoI/AAAAAAAAAB0/CY8F2ZYy2BU/s72-c/romelogo-small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-8706831573810463087</id><published>2008-11-09T23:18:00.000-03:00</published><updated>2008-11-13T17:07:06.910-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Calendar'/><title type='text'>Gerando o calendário de 2009</title><content type='html'>Como o tempo passa! Já estamos no mês de novembro e logo vem as festas de fim de ano. E sempre temos uma necessidade: calendário. Quem não tem aquela "folhinha" , pendurada em algum lugar da casa, ou na mesa do escritório ?&lt;br /&gt;&lt;br /&gt;Acredito que , a depender de como é feito, o trabalho de desenhar um calendário é um pouco complicado. Pra facilitar a vida de quem ainda não tem um calendário de 2009, ou quer fazer um, a classe &lt;span style="font-style: italic;"&gt;GregorianCalendar&lt;/span&gt; ajuda bastante.  A classe abaixo contém um método que gera o calendário para o mês especificado:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.text.DecimalFormat;&lt;br /&gt;import java.text.NumberFormat;&lt;br /&gt;import java.util.Calendar;&lt;br /&gt;import java.util.GregorianCalendar;&lt;br /&gt;&lt;br /&gt;public class Calendario {&lt;br /&gt;&lt;br /&gt;static NumberFormat formatter = new DecimalFormat("00");&lt;br /&gt;&lt;br /&gt;public static void main (String [] args){&lt;br /&gt;   for(int i=0; i&lt;=11;i++)&lt;br /&gt;      printCalendar(2009, i, 1);  &lt;br /&gt;}     &lt;br /&gt;&lt;br /&gt;public static void printCalendar(int year, int mounth, int day){&lt;br /&gt;  Calendar cal = new GregorianCalendar(year,mounth, day);&lt;br /&gt;  boolean inicio = false;&lt;br /&gt;  System.out.println("D  S  T  Q  Q  S  S");&lt;br /&gt;&lt;br /&gt;  for (int i = 1 ; i&lt;=6; i++){//semanas&lt;br /&gt;     for (int w = 1 ; w&lt;=7; w++){//dias&lt;br /&gt;        if (w==cal.get(Calendar.DAY_OF_WEEK)){inicio = true;}//início da escrita&lt;br /&gt;           if(inicio){&lt;br /&gt;              if((day-1)==cal.getActualMaximum(Calendar.DAY_OF_MONTH)){&lt;br /&gt;               break;&lt;br /&gt;            }//parada no final do mês&lt;br /&gt;&lt;br /&gt;        System.out.print(formatter.format(day++)+" ");  &lt;br /&gt;        }else{&lt;br /&gt;           System.out.print("   ");&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;     System.out.println();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Executando o &lt;span style="font-style: italic;"&gt;main&lt;/span&gt;, teremos o calendário de 2009 pronto. A formatação e reuso uso em taglibs ficam a gosto.&lt;br /&gt;&lt;br /&gt;Abraços.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-8706831573810463087?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/8706831573810463087/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=8706831573810463087' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8706831573810463087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/8706831573810463087'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/11/gerando-o-calendrio-de-2009.html' title='Gerando o calendário de 2009'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-6261217091290194289</id><published>2008-11-03T18:20:00.000-03:00</published><updated>2008-11-03T13:21:35.746-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Padrões de Projeto'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Tocando arquivos MIDI com o padrão Proxy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://dofactory.com/Patterns/Diagrams/proxy.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 324px; height: 201px;" src="http://dofactory.com/Patterns/Diagrams/proxy.gif" alt="" border="1" /&gt;&lt;/a&gt;&lt;br /&gt;Há um tempo atrás (especificamente 2004), publiquei um tutorial no site da comunidade do JavaFree.org, cujo título era &lt;a href="http://www.javafree.org/javabb/topic-3102-Desenvolvendo+um+sequenciador+MID+com+java"&gt;Desenvolvendo um sequenciador MIDI com java&lt;/a&gt;. Agora, estudando um pouco mais o padrão de projeto Proxy, e fazendo alguns testes, vi que  a api java.sound possui um recurso para desabilitar/habilitar trilhas em uma música.&lt;br /&gt;&lt;br /&gt;Vamos ver como isso funciona?&lt;br /&gt;&lt;br /&gt;O padrão funciona de forma a definir um objeto transparente que &lt;span style="font-style: italic;"&gt;procure &lt;/span&gt;outro objeto, através de uma implementação interna. Com isso temos benefícios como desacloplamento, controle de acesso e cache, por exemplo.&lt;br /&gt;&lt;br /&gt;Utilizaremos este padrão para executar uma música &lt;a href="http://pt.wikipedia.org/wiki/MIDI"&gt;MIDI&lt;/a&gt;, e disponibilizar a opção de tocar as faixas da mesma separadamente. Primeiramente temos a classe que é o &lt;span style="font-style: italic;"&gt;RealSubject&lt;/span&gt; da nossa pequena aplicação, ela é responsável para interação com o dispositivo &lt;a href="http://pt.wikipedia.org/wiki/MIDI"&gt;MIDI&lt;/a&gt; do sistema operacional. Ela contém todas as funções para a execução, parada ou desabilitação das suas &lt;span style="font-size:100%;"&gt;trilhas.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;RealMidi.java&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;import java.io.File;&lt;br /&gt;import javax.sound.midi.MidiSystem;&lt;br /&gt;import javax.sound.midi.Sequence;&lt;br /&gt;import javax.sound.midi.Sequencer;&lt;br /&gt;&lt;br /&gt;public class RealMidi implements IMidi {&lt;br /&gt;&lt;br /&gt;private Sequencer sequencer;&lt;br /&gt;private Sequence sequence;&lt;br /&gt;&lt;br /&gt;public RealMidi(String arquivo) {&lt;br /&gt;    try {&lt;br /&gt;        sequencer = MidiSystem.getSequencer();&lt;br /&gt;        sequence = MidiSystem.getSequence(new File(arquivo));&lt;br /&gt;        sequencer.open();       &lt;br /&gt;        sequencer.setSequence(sequence);&lt;br /&gt;    } catch (Exception e) {&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getTracks(){&lt;br /&gt;    return sequence.getTracks().length;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void enable(int numero) {&lt;br /&gt;    sequencer.setTrackMute(numero, !sequencer.getTrackMute(numero));&lt;br /&gt;    if (sequencer.getTrackMute(numero)) {&lt;br /&gt;        System.out.println(numero + " [OFF]");&lt;br /&gt;    } else {&lt;br /&gt;        System.out.println(numero + " [ON]");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void start() {&lt;br /&gt;    sequencer.start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public boolean isRunning() {&lt;br /&gt;    return sequencer.isRunning();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void stop() {&lt;br /&gt;    sequencer.stop();&lt;br /&gt;    sequencer.close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Percebemos que esta classe implementa uma interface, que também é implementada pela classe que será o nosso proxy.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;IMidi.java&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;public interface IMidi {&lt;br /&gt;&lt;br /&gt;  void enable(int numero);&lt;br /&gt;&lt;br /&gt;  void start();&lt;br /&gt;&lt;br /&gt;  boolean isRunning();&lt;br /&gt;&lt;br /&gt;  void stop();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Temos a classe que será o proxy e que irá, além de repassar chamadas para a classe &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;RealMidi&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, fazer um cache do arquivo &lt;a href="http://pt.wikipedia.org/wiki/MIDI"&gt;MIDI&lt;/a&gt;. Isso evitará que o mesmo seja acessado diversas vezes desnecessariamente. isto pode ser verificado nas operações &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;start&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;stop&lt;/span&gt;&lt;span style="font-size:100%;"&gt; e &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;isRunnig&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;ProxyMidi.java&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;public class ProxyMidi implements IMidi{&lt;br /&gt;&lt;br /&gt; private RealMidi realMidi;&lt;br /&gt; private String arquivo;&lt;br /&gt;&lt;br /&gt; public ProxyMidi(String arquivo) {&lt;br /&gt;     this.arquivo = arquivo;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void enable(int numero) {&lt;br /&gt;     if (numero &lt; realmidi ="=" realmidi =" new"&gt;&lt;br /&gt;&lt;br /&gt;Agora temos um sequenciador implementado com uma função a mais, que é a de escolher as trilhas que devem ser desabilitadas. Agora é só fazer uma classe que seja o cliente do padrão.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPlayer.java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;public class JPlayer {&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;     Scanner teclado = new Scanner(System.in);&lt;br /&gt;     IMidi midi = new ProxyMidi("&lt;span style="font-weight: bold;"&gt;sua_musica.mid&lt;/span&gt;");&lt;br /&gt;     midi.start();&lt;br /&gt;&lt;br /&gt;     System.out.println("Informe o número da trilha para habilitar/desabilitar a saída de som:");&lt;br /&gt;     int numero;&lt;br /&gt;     while (midi.isRunning()) {&lt;br /&gt;         numero = teclado.nextInt();&lt;br /&gt;         midi.enable(numero);&lt;br /&gt;     }&lt;br /&gt;     midi.stop();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Bom, como o resultado disso não dá pra colocar aqui (só ouvindo mesmo), então fica o convite para que você mesmo teste, ok ?&lt;br /&gt;&lt;br /&gt;Indicações:&lt;br /&gt;&lt;br /&gt;[1] http://dofactory.com/Patterns/PatternProxy.aspx&lt;br /&gt;[2] http://www.javafree.org/javabb/topic-3102-Desenvolvendo+um+sequenciador+MID+com+java&lt;br /&gt;[3] http://www.midinet.com.br/ (Para quem não tem arquivos MIDI)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-6261217091290194289?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/6261217091290194289/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=6261217091290194289' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/6261217091290194289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/6261217091290194289'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/11/tocando-arquivos-midi-com-o-padro-proxy.html' title='Tocando arquivos MIDI com o padrão Proxy'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7969675823376808345.post-1066493642608677588</id><published>2008-11-02T10:26:00.001-03:00</published><updated>2008-11-02T11:15:57.742-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outros'/><title type='text'>Boas Vindas</title><content type='html'>Para dar as boas vindas a todos que irão visitar este blog, gostaria de dizer que este espaço é para explicitar algumas idéias e resultados de pesquisas individuais em tecnologia. Nada mais coerente com a expressão &lt;span style="font-style: italic;"&gt;in vitro&lt;/span&gt;, muito usada em outras àreas do conhecimento, denotando um sentido de experimentação. Com isso, seja lá qual for o post, espero seguir esta linha e trazer sempre bons experimentos (sejam inéditos ou não).&lt;br /&gt;&lt;br /&gt;Um abraço à todos,&lt;br /&gt;&lt;br /&gt;Cleuber&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7969675823376808345-1066493642608677588?l=bitinvitro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitinvitro.blogspot.com/feeds/1066493642608677588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7969675823376808345&amp;postID=1066493642608677588' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1066493642608677588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7969675823376808345/posts/default/1066493642608677588'/><link rel='alternate' type='text/html' href='http://bitinvitro.blogspot.com/2008/11/boas-vindas.html' title='Boas Vindas'/><author><name>Cleuber</name><uri>http://www.blogger.com/profile/14531461559669009344</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_zcNQ30jIGtI/SQ0gbIPty8I/AAAAAAAAABY/s9IC1hsaCXw/S220/Untitled-1.png'/></author><thr:total>1</thr:total></entry></feed>
