<?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-2409603809791857047</id><updated>2012-02-08T07:00:38.235-08:00</updated><category term='ruby'/><category term='apk'/><category term='bandwidth monitor'/><category term='proxy'/><category term='libreoffice'/><category term='iis'/><category term='java'/><category term='wifi'/><category term='swing'/><category term='cluster'/><category term='ajax'/><category term='jboss seam'/><category term='tablet'/><category term='htb'/><category term='qos'/><category term='virtualizacao'/><category term='br-linux'/><category term='war'/><category term='pdf'/><category term='fisl'/><category term='free and open source software'/><category term='squid'/><category term='c#'/><category term='promoção'/><category term='historia'/><category term='srg'/><category term='android'/><category term='odp.net'/><category term='python'/><category term='batik'/><category term='sarg'/><category term='debian'/><category term='wep'/><category term='asp.net'/><category term='filosofia'/><category term='eclipse'/><category term='iText'/><category term='ubuntu'/><category term='mono'/><category term='mentawai'/><category term='inComum'/><title type='text'>Meu maravilhoso mundo livre</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-3432136976374932502</id><published>2011-08-25T05:36:00.001-07:00</published><updated>2011-08-25T05:40:44.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tablet'/><category scheme='http://www.blogger.com/atom/ns#' term='apk'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='wep'/><title type='text'>Alterando a index key da configuração WEP no Android 2.2</title><content type='html'>Ontem chegou meu tablet android 2.2 chinês. Dizem que é pra ser um Herotab C8, embora o único nome que encontrei foi SM500CC no manual.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bem, primeira dificuldade foi conectar à rede sem fio com criptografia WEP utilizando a index key 2, ou 1 se começar a contar do 0. Antes que me critiquem pelo uso de WEP, não está sob minha administração direta.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depois de penar tentando achar a bendita configuração, somente de pois de instalar o http://android-wifi-ace.googlecode.com/é que consegui facilmente setar a chave 2 (facilitando, segunda chave de quatro).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pra instalar o apk foi bem fácil, simplesmente copiei o arquivo pro root do armazenamento do tablet (ainda não tenho um SD) e então rodar o ApkInstall (que já veio com o tablet) e pronto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy yourself!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-3432136976374932502?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/3432136976374932502/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=3432136976374932502&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3432136976374932502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3432136976374932502'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2011/08/alterando-index-key-da-configuracao-wep.html' title='Alterando a index key da configuração WEP no Android 2.2'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2121044708713322464</id><published>2011-08-08T11:35:00.000-07:00</published><updated>2011-08-08T11:47:30.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='libreoffice'/><title type='text'>Suavização de Fonte do LibreOffice 3.4 no Debian Wheezy</title><content type='html'>Buenas gurizada,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se vocês, assim como eu estava, estão com problemas na renderização das fontes do LibreOffice 3.4 no Debian Wheezy, pois seus problemas acabaram. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basta ir no menu Ferramentas -&amp;gt; Opções e nesta janela, no nó LibreOffice selecionar o item Exibir e então selecionar a checkbox "Utilizar fonte do sistema para interface de usuário". Pronto!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Aí vai a screen da tela de opções.&lt;/div&gt;&lt;div&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Adicionar imagem" border="0" class="gl_photo" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-7OldG64oLEM/TkAvF90eY-I/AAAAAAAAADQ/SNfTPQm2tIw/s1600/fig.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 187px;" src="http://4.bp.blogspot.com/-7OldG64oLEM/TkAvF90eY-I/AAAAAAAAADQ/SNfTPQm2tIw/s400/fig.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5638558513008370658" /&gt;&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/2409603809791857047-2121044708713322464?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2121044708713322464/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2121044708713322464&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2121044708713322464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2121044708713322464'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2011/08/suavizacao-de-fonte-do-libreoffice-34.html' title='Suavização de Fonte do LibreOffice 3.4 no Debian Wheezy'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-7OldG64oLEM/TkAvF90eY-I/AAAAAAAAADQ/SNfTPQm2tIw/s72-c/fig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7622622687131766820</id><published>2011-02-25T10:35:00.000-08:00</published><updated>2011-02-25T10:37:47.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inComum'/><category scheme='http://www.blogger.com/atom/ns#' term='squid'/><title type='text'>inComum é realmente incomum.</title><content type='html'>Acabei de implementar o inComum 0.3.3 em conjunto com o squid 2.7 em debian squeeze amd64 (virtualizado em kvm em debian squeeze amd64 :-P ).&lt;br /&gt;&lt;br /&gt;Conto detalhes na sequência.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-7622622687131766820?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7622622687131766820/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7622622687131766820&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7622622687131766820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7622622687131766820'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2011/02/incomum-e-realmente-incomum.html' title='inComum é realmente incomum.'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-5658949140192654381</id><published>2011-02-23T12:20:00.001-08:00</published><updated>2011-02-23T12:22:05.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='sarg'/><category scheme='http://www.blogger.com/atom/ns#' term='srg'/><category scheme='http://www.blogger.com/atom/ns#' term='squid'/><title type='text'>Cadê o sarg no debian squeeze?</title><content type='html'>Pois é, depois de muito procurar e não achar e, inclusive, de ter instalado a versão do sarg pro lenny, eis que me deparei com uma explicação: o sarg está bugado.&lt;br /&gt;&lt;br /&gt;Então a saída é instalar o srg, que acredito seja o mesmo sarg. Não estudei muito os detalhes, mas sei que funciona da mesma forma, praticamente.&lt;br /&gt;&lt;br /&gt;Bom, acho que era só isto :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-5658949140192654381?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/5658949140192654381/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=5658949140192654381&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5658949140192654381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5658949140192654381'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2011/02/cade-o-sarg-no-debian-squeeze.html' title='Cadê o sarg no debian squeeze?'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6648392446714892225</id><published>2011-02-23T12:15:00.000-08:00</published><updated>2011-02-23T12:19:27.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='squid'/><title type='text'>Squid e número de filedescriptors</title><content type='html'>Seu squid está deixando a navegação lenta e você tem uma rede com mais de, digamos, 400 computadores? Pois seus problemas acabaram, isto é se você for um feliz usuário de Debian ou variantes.&lt;br /&gt;&lt;br /&gt;Adicione a linha abaixo ao arquivo /etc/sysctl.conf:&lt;br /&gt;fs.file-max=100000&lt;br /&gt;&lt;br /&gt;Rode o comando:&lt;br /&gt;#systcl -p&lt;br /&gt;&lt;br /&gt;Altere o valor da única linha do arquivo /etc/default/squid&lt;br /&gt;SQUID_MAXFD=65535&lt;br /&gt;&lt;br /&gt;Reinicie seu squid&lt;br /&gt;#service squid restart&lt;br /&gt;&lt;br /&gt;Estas configurações vão dar uma enorme folga ao sistema operacional e ao squid no trato com filedescriptors.&lt;br /&gt;&lt;br /&gt;That's all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6648392446714892225?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6648392446714892225/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6648392446714892225&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6648392446714892225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6648392446714892225'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2011/02/squid-e-numero-de-filedescriptors.html' title='Squid e número de filedescriptors'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8150576323757845557</id><published>2009-06-12T09:33:00.000-07:00</published><updated>2009-06-12T09:52:37.860-07:00</updated><title type='text'>Novamente liberado para postagens</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Olá galera! Por acaso verifiquei que consegui logar no blogger e quem sabe eu possa postar mais algumas coisas se isto se mantiver.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Já faz umas três semanas que estou morando em meu novo AP, este sim adquirido e não alugado aqui em POA. Finalmente minha esposa e eu poderemos construir nossa lar para vivermos tranquilamente pelos próximos 6 ou 7 anos, após isto acredito que poderemos pensar em mudarmos para um AP com área maior que os atuais 30m².&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Estive incursionando nos meandros de meu cérebro e disto surgiram algumas idéias de cunho filosófico, mas que ainda não pude aprofundar nas definições. A primeira: me parece que a pergunta não deveria ser "qual o sentido da vida?", mas sim "porque somos inteligentes?", afinal vida é uma convenção. Sem inteligência jamais perguntaríamos "qual o sentido da vida?", "Deus existe?". Ainda, jamais afirmaríamos "Deus existe." ou "Deus não existe". Ah! É verdade, alguns poderiam dizer que para fazer estas perguntas, além da inteligência é necessária uma linguagem, pois sem esta não poderíamos formar frases.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8150576323757845557?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8150576323757845557/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8150576323757845557&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8150576323757845557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8150576323757845557'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/06/novamente-liberado-para-postagens.html' title='Novamente liberado para postagens'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-5523528493233313630</id><published>2009-05-14T12:55:00.000-07:00</published><updated>2009-05-14T13:02:46.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>Ferramento para União e Pdginação de PDFs, PdfMergeAndPaging</title><content type='html'>Estou com problemas de acesso ao blogger aqui da empresa onde trabalho e tive que recorrer a um site redirecionador para tanto, inclusive enviando minha senha em modo inseguro.&lt;br /&gt;Vamos ao projeto, surgiu uma necessidade aqui na empresa de alguns departamentos que geram arquivos PDF a partir de várias aplicativos e necessitavam juntá-los e após paginá-lo para publicação na intranet e internet. Para resolver isto, um dos departamento fez a aquisição de uma licença do Adobe Acrobat Professional. Perfeito, sanou toda o seu problema, mas os demais departamentos ainda continuam sem solução. &lt;br /&gt;Pensando nisto resolvi escrever um aplicativo para tentar auxiliar nesta tarefa, para tanto baseei este projeto no iText e acredito que tenha chegado a um uso razoável já.&lt;br /&gt;Como hospedei este projeto no code.google, resolvi divulgá-lo a quem possa interessar http://pdfmergeandpaging.googlecode.com/files/launch.jnlp para instalação do aplicativo via Java Web Start e http://code.google.com/p/pdfmergeandpaging/ para acesso ao home do projeto.&lt;br /&gt;Basicamente estou utilizando Netbeans 6.5 e as bibliotecas iText e ini4j.&lt;br /&gt;Era isto por hora galera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-5523528493233313630?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/5523528493233313630/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=5523528493233313630&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5523528493233313630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5523528493233313630'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/05/ferramento-para-uniao-e-pdginacao-de.html' title='Ferramento para União e Pdginação de PDFs, PdfMergeAndPaging'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-3939592350134388005</id><published>2009-04-30T11:49:00.001-07:00</published><updated>2009-04-30T12:21:42.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='war'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss seam'/><category scheme='http://www.blogger.com/atom/ns#' term='batik'/><title type='text'>Jogo de Tabuleiro "War" e JBoss Seam</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8nEuFZlTAlY/Sfn6LO-kgNI/AAAAAAAAABo/HLyIf84iJmU/s1600-h/path2410.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 248px; height: 400px;" src="http://4.bp.blogspot.com/_8nEuFZlTAlY/Sfn6LO-kgNI/AAAAAAAAABo/HLyIf84iJmU/s400/path2410.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5330566704875733202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Boa tarde a todos, especialmente ao melhores da américa neste momento!&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;O que tem a ver War e JBoss Seam? Nada isoladamente, até o momento em que resolvo desenvolver uma versão deste jogo de tabuleiro em versão Web.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Na verdade eu ainda estou decidindo, enquanto desenho o mapa do jogo em SVG com o maravilhoso Inkscape, se faço a implementação em Web ou Desktop.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Se eu acabar decidindo por Web pretendo praticar JBoss Seam com Eclipse, se acaso decidir por Desktop vai ser mesmo com Netbeans.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;A idéia não é implementar toda uma infraestrutura para jogos on-line e sim permitir usar o computador como tabuleiro para o jogo. Acredito que usando somente SVG com Javascript chegaria próximo do resultado que desejo, mas como é um projeto pessoal e eu quero estudar novas tecnologias, é uma boa motivação.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ah! Esqueci de citar que pretendo usar Apache Batik para o trato com SVG. Tá difícil de encontrar boa documentação e como normalmente apelo pra fazer de qualquer jeito desde que funcione, vai acontecer de eu postar códigos aqui bem feinhos e, quem sabe, bem pouco otimizados.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Abraçõs...&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/2409603809791857047-3939592350134388005?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/3939592350134388005/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=3939592350134388005&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3939592350134388005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3939592350134388005'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/04/jogo-de-tabuleiro-war-e-jboss-seam.html' title='Jogo de Tabuleiro &quot;War&quot; e JBoss Seam'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8nEuFZlTAlY/Sfn6LO-kgNI/AAAAAAAAABo/HLyIf84iJmU/s72-c/path2410.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8683084059435054235</id><published>2009-04-28T10:10:00.000-07:00</published><updated>2009-04-28T10:22:10.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Ubuntu + M$ ISA Server</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Boa tarde gurizada medonha!&lt;br /&gt;Estava eu fuçando com o novíssimo Ubuntu 9.04 logo após instalá-lo e reparei que, embora minha conexão de rede estivesse funcionando e eu conseguisse navegar, reparei que um apt-get update que ocorria problema de autenticação no ISA Server (proxy da M$ aqui na CORSAN).&lt;br /&gt;Antigamente e em meu Debian, bastava apontar para o endereço do proxy na variável de ambiente http_proxy e tudo resolvido, acesso liberado. Após 15 minutos de tentativas frustradas, resolvi apelar pro google e de lá veio a solução "ntlmaps".&lt;br /&gt;Mais que depressa pus-me a baixar e instalar este serviço e então pude usar apt-get e synaptic tranquilamente.&lt;br /&gt;Acontece que logo em seguida o computador virou uma carroça, corri para verificar o que tomava todo o seu processamento e lá estava o ntlmaps.&lt;br /&gt;Depois de várias vezes "restartar" o serviço, catei uma alternativa e logo o google retornou-me o cntlm.&lt;br /&gt;Barbadamente instalei-o e configurei no arquivo /etc/cntlm.conf usuario, senha e endereço do proxy e pronto.&lt;br /&gt;Já estou a alguns minutos navegando tranquilamente sem esgasgos. Recomendo!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8683084059435054235?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8683084059435054235/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8683084059435054235&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8683084059435054235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8683084059435054235'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/04/ubuntu-m-isa-server.html' title='Ubuntu + M$ ISA Server'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8431030311368227369</id><published>2009-04-01T12:26:00.000-07:00</published><updated>2009-04-01T13:01:55.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss seam'/><title type='text'>Eclipse Ganymede + JBoss Seam</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Eis que acredito ter atingido o meu ápice em termos de utilização do maravilhoso framework &lt;a href="http://www.mentaframework.org"&gt;Mentawai&lt;/a&gt;, muito embora esteja longe de ter utilizado todos os seus recursos. Digo isto porque minha capacidade em Java, J2EE, na verdade em desenvolvimento e projeto de softwares em geral, é bem limitada e isto que sou Analista de Sistemas graduado em Bacharelado em Sistemas de Informação.&lt;br /&gt;Bem, mas não vem ao caso ficar denegrindo assim, veementemente minhas capacidades.&lt;br /&gt;UM comportamento, sim, um único comportamento que na verdade é um suporte ao Mentawai está fazendo com que eu procure um framework alternativo e eis que explico o comportamento e o porquê desta procura.&lt;br /&gt;Precisava de um campo em um formulário web simples que permitisse somente a entrada de números com casas decimais, prontamente recorri ao fórum e às excelentes páginas de apresentação do Mentawai e encontrei o que precisava, o inputMoney. Perfeito, rapidamente estava podendo digitar somente números com vírgulas naquele campo. O problema foi o comportamento deste componente. É comum e isto já está gravado no DNA de todo cidadão que usa interfaces gráficas esperar que uma vez um texto selecionado receba a entrada de algum caracter, seja via teclado, área de transferência, etc, este seja substituído por esta nova entrada, mas o inputMoney (que na verdade é um &lt;input type="text"&gt; regido por javascript) simplesmente ignora a seleção e tudo que digito é acrescentado ao conteúdo original e isto é no mínimo irritante, pois o cidadão tem que primeiro atentar ao fato de apagar todo o conteúdo para depois digitar o novo, sem contar que as casas decimais deve ser entradas obrigatoriamente, ou seja, se preciso do valor 15 para um campo com duas casas decimais tenho que entrar 1500. Simplesmente não gostei nem um pouco disto e como disse acima, sou limitado (de agora em diante esqueçam isto por favor), restou-me pedir ajuda encarecidamente no fórum, mas como o pessoal eu sei que realmente é ocupado e fez um belo trabalho em nos disponibilizar este magnífico framework, eu já esperava que ficaria sem resposta.&lt;br /&gt;Não pessoal, não estou reclamando de má vontade ou algo parecido por parte dos desenvolvedores do Mentawai e muito menos estou sendo irônico, pois sei que o inputMoney na verdade é um "plus" do projeto.&lt;br /&gt;Pois bem, muito embora o Saoj tenha escrito que o Mentawai faz tudo que o JBoss Seam faz e de forma mais compacta e direta, foi justamente esta comparação que aguçou meus sentidos a estudar o JBoss Seam, pois nem ao menos sabia qual era seu propósito até aquele momento. Pelo que pude entender, superficialmente, tem a intenção de fazer a ligação do JSF com os demais framework normalmente utilizados em J2EE (EJB 3.0, JPA, Hibernate, Ajax) facilitando ou automatizando esta integração e diminuindo consideravelmente a quantidade de arquivos e/de configurações necessários.&lt;br /&gt;É isto que sei até o momento e o que mais vou relatar agora é como instalar e configurar o JBoss Seam 2.1.1-GA com Eclipse Ganymede, tomando por base o &lt;a href="http://silvionetto.blogspot.com/2008/06/tutorial-jboss-seam.html"&gt;ótimo post&lt;/a&gt; do nosso amigo Sílvio Netto.&lt;br /&gt;&lt;br /&gt;Então vamos lá (e considerando que já tenhas o JDK 6 instalado)!&lt;br /&gt;Criemos um diretório que será nossa base, por exemplo, c:\DevelopEnv e lá descompactemos (estou usando como ambiente no momento um Windows XP 32bits):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-jee-ganymede-SR1-win32.zip&amp;amp;url=http://mirrors.uol.com.br/pub/eclipse.org/technology/epp/downloads/release/ganymede/SR1/eclipse-jee-ganymede-SR1-win32.zip&amp;amp;mirror_id=215"&gt;Eclipse Ganymede;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ufpr.dl.sourceforge.net/sourceforge/jboss/jboss-5.0.1.GA-jdk6.zip"&gt;JBoss 5.0.1.GA-jdk6&lt;/a&gt;;&lt;br /&gt;&lt;a href="http://ufpr.dl.sourceforge.net/sourceforge/jboss/jboss-seam-2.1.1.GA.zip"&gt;JBoss Seam 2.1.1.GA&lt;/a&gt;;&lt;br /&gt;&lt;a href="http://ufpr.dl.sourceforge.net/sourceforge/jboss/JBossTools-ALL-win32-3.0.0.GA-R200903141626-H5.zip"&gt;JBoss Tools All 3.0.0.GA&lt;/a&gt;;&lt;br /&gt;&lt;br /&gt;Atente para que o JBoss Tools seja descompactado dentro da pasta onde foi descompactado o Eclipse, pois ele é um conjunto de plugins para este.&lt;br /&gt;&lt;br /&gt;A partir de agora vou fazer um copy-paste do post do Sílvio, alterando somente o que mudou daquele ambiente para este:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;1 - Configurar o Eclipse&lt;br /&gt;Alterar a perspectiva para Seam.&lt;br /&gt;Window → Open Perspective → Other → Seam.&lt;br /&gt;&lt;br /&gt;2 – Configurar o JBoss AS&lt;br /&gt;Window → Preferences → Server → Runtime Environments → Add&lt;br /&gt;JBoss Community → JBoss 5.0 Runtime&lt;br /&gt;Altere o home directory para: C:\DevelopEnv\jboss-5.0.1.GA&lt;br /&gt;Configuration: default.&lt;br /&gt;&lt;br /&gt;3 – Configurar a visualização do servidor&lt;br /&gt;JBoss Server View → Clicar com o direito → New Server&lt;br /&gt;JBoss AS 5.0 → Next → Next → Finish&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;br /&gt;&lt;/span&gt;4 – Configurar Conectividade&lt;br /&gt;Window → Preferences → Data Management → Connectivity → Driver Definitions → Add&lt;br /&gt;HSQLDB JDBC Driver 1.8&lt;br /&gt;Jar List → Driver File(s) → Add Jar/Zip:&lt;br /&gt;hsqldb.jar → Remove Jar/Zip&lt;br /&gt;Add Jar/Zip C:\DevelopEnv\jboss-5.0.1.GA\common\lib\hsqldb.jar&lt;br /&gt;OK&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;5 – Criar um projeto&lt;br /&gt;File → New → Seam Web Project&lt;br /&gt;Name: agenda&lt;br /&gt;Configurations: Dynamic Web Project with Seam 2.0&lt;br /&gt;Next → Next → Next&lt;br /&gt;Seam runtime: Add&lt;br /&gt;Home Folder: C:\DevelopEnv\jboss-seam-2.1.1.GA&lt;br /&gt;Deploy as: WAR&lt;br /&gt;Database Type: HSQL&lt;br /&gt;Connection profile: → New...→ HSQLDB → Finish&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;(O passo de anexar a aplicação agenda ao servidor pra mim não foi necessário)&lt;br /&gt;&lt;br /&gt;6 – Iniciar o JBoss&lt;br /&gt;Clique com o direito em JBoss 5.0 Server → Start&lt;br /&gt;&lt;br /&gt;4 – Acessar o sistema&lt;br /&gt;Abra um browser e digite: http://localhost:8080/agenda&lt;br /&gt;&lt;br /&gt;Era isto gurizada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8431030311368227369?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8431030311368227369/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8431030311368227369&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8431030311368227369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8431030311368227369'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/04/eclipse-ganymede-jboss-seam.html' title='Eclipse Ganymede + JBoss Seam'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6737723435503647927</id><published>2009-03-18T10:43:00.000-07:00</published><updated>2009-03-18T11:02:15.701-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='mentawai'/><title type='text'>HTML: select (drop down) em cascata com MentaAjax</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Finalmente acredito ter chegado a uma boa solução para controle de 3 campos select (drop down ou mesmo combobox) em cascatas. Para melhor ilustração aí vai o cenário da estrutura de dados. Tenho um catálogo de materiais, cada item deste catálogo faz parte de um subgrupo, cada subgrupo faz parte de um grupo e cada grupo faz parte de uma classe. Preciso selecionar o subgrupo a que pertence um item do catálogo e para tanto faz-se necessário: primeiro a seleção da classe, feita esta seleção o select com as grupos é preenchido; segundo faz-se a seleção do grupo e com isto o select dos subgrupos é preenchido para seleção final.&lt;br /&gt;Estou desenvolvendo este catálogo em Java com mentawai para MVC. Tentei utilizar um cenário igual em que o cascateamento é feito com País, Estado e Cidade, desenvolvimento e relatado no fórum do mentawai, mas não obtive o resultado que desejava. Na verdade eu queria que ao ser feita uma nova seleção de classe, automaticamente os select com grupos e subgrupos fosse preenchidos automaticamente, sendo que o select dos grupos conteria os grupos da classe selecionada e o select dos subgrupos conteria os subgrupos do primeiro grupo da classe selecionada.&lt;br /&gt;Chega de enrolação e vamos ao código!&lt;br /&gt;Primeiro as configurações das actions no ApplicationManager:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;       action("/manager/FormMateriais", FormMateriais.class).on(SUCCESS, fwd("/manager/formMaterial.page"));&lt;br /&gt;       action("/manager/FormMateriais", FormMateriais.class, "add").on(SUCCESS, fwd("/manager/FormMateriais.mtw"));&lt;br /&gt;       action("/manager/FormMateriais", FormMateriais.class, "preencheComboGrupo").ajaxOk(new JSONGenericRenderer());&lt;br /&gt;       action("/manager/FormMateriais", FormMateriais.class, "preencheComboSubGrupo").ajaxOk(new JSONGenericRenderer());&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ao ser chamada URL /manager/FormMateriais.mtw, esta preenche a output com as classe, os grupos da primeira classe e os subgrupos do primeiro grupo da primeira classe. Como estou utilizando a tag html do mentawai (mtw:select) esta preenche automaticamente os select classe, grupo e subgrupo com os Maps da output.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public String execute() throws Exception {&lt;br /&gt;       Connection conn = (Connection) input.getValue("conn");&lt;br /&gt;&lt;br /&gt;       ClasseDAO classeDAO = new ClasseDAO(conn);&lt;br /&gt;       GrupoDAO grupoDAO = new GrupoDAO(conn);&lt;br /&gt;       SubGrupoDAO subGrupoDAO = new SubGrupoDAO(conn);&lt;br /&gt;&lt;br /&gt;       output.setValue("classe", classeDAO.getMap(classeDAO.list()));&lt;br /&gt;       output.setValue("grupo", grupoDAO.getMap(grupoDAO.list(classeDAO.list().get(0).getId())));&lt;br /&gt;       output.setValue("subgrupo", subGrupoDAO.getMap(subGrupoDAO.list(grupoDAO.list(classeDAO.list().get(0).getId()).get(0).getSeq())));&lt;br /&gt;       return SUCCESS;&lt;br /&gt;   }&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por fim, meu JSP com alguns recursos de Ajax disponibilizados pelo mentawai, permitem o preenchimento dinâmico dos selects grupo e subgrupo a cada evento onclick das selects classe e grupo.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;               &lt;mtw:select id="classe" name="classe" list="classe" extra="onclick=doRequest();"&gt;&lt;br /&gt;               &lt;mtw:select id="grupo" name="grupo" list="grupo" extra="onclick=doRequest1();"&gt;&lt;br /&gt;               &lt;mtw:select id="subgrupo" name="subgrupo" list="subgrupo"&gt;&lt;br /&gt;               &lt;mtw:inputtext name="id" size="10" maxlength="10"&gt;&lt;br /&gt;&lt;br /&gt;&lt; script type="text/javascript"&gt;&lt;br /&gt;    function getList(transport) {&lt;br /&gt;        var response = new mtw.response(transport);&lt;br /&gt;        response.replaceOptions("grupo");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function getList1(transport) {&lt;br /&gt;        var response = new mtw.response(transport);&lt;br /&gt;        response.replaceOptions("subgrupo");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function doRequest() {&lt;br /&gt;        var req = new mtw.request();&lt;br /&gt;        req.setUrl("FormMateriais.preencheComboGrupo.mtw");&lt;br /&gt;        req.addParameter("idClasse", $('classe').value);&lt;br /&gt;        mtw.removeOptions("grupo");&lt;br /&gt;        req.onSuccess(getList);&lt;br /&gt;        req.send();&lt;br /&gt;&lt;br /&gt;        doRequest1();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function doRequest1() {&lt;br /&gt;        var req1 = new mtw.request();&lt;br /&gt;        req1.setUrl("FormMateriais.preencheComboSubGrupo.mtw");&lt;br /&gt;        req1.addParameter("idClasse", $('classe').value);&lt;br /&gt;        req1.addParameter("idGrupo", $('grupo').value);&lt;br /&gt;        mtw.removeOptions("subgrupo");&lt;br /&gt;        req1.onSuccess(getList1);&lt;br /&gt;        req1.send();&lt;br /&gt;    }&lt;br /&gt;&lt; /script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bom, ainda não consegui resolver o problema de fazer os preenchimentos automáticos dos selects grupo e subgrupo para outros eventos que não o onclick, na verdade isto é um problema comigo ou com o mentawai, pois não consigo definir dois eventos diferentes nas tags mtw:select, assim resolvi usar onclick em detrimento a onchange ou mesmo onblur.&lt;br /&gt;&lt;br /&gt;Era isto por enquanto. Abraços amigos.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6737723435503647927?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6737723435503647927/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6737723435503647927&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6737723435503647927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6737723435503647927'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/03/html-select-drop-down-em-cascata-com.html' title='HTML: select (drop down) em cascata com MentaAjax'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-5039748160712556861</id><published>2009-03-13T07:41:00.001-07:00</published><updated>2009-03-13T07:43:49.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fisl'/><title type='text'>FISL 10</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fisl.softwarelivre.org/drupal5/files/banners/banner435x120.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 435px; height: 120px;" src="http://fisl.softwarelivre.org/drupal5/files/banners/banner435x120.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Buenas gurizada, já foi dada a largada para realização do FISL 10, este maravilhodo evento que ocorre todo ano aqui em Porto Alegre, desde 2000, e que nos permite compartilhar o sentimento único que cada usuário e promotor de software livre sente.&lt;/span&gt; &lt;span style="font-family:trebuchet ms;"&gt;Venham todos, tenho certeza que vai ser um evento memorável!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-5039748160712556861?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/5039748160712556861/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=5039748160712556861&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5039748160712556861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5039748160712556861'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/03/fisl-10.html' title='FISL 10'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6737960238834243195</id><published>2009-03-04T03:17:00.000-08:00</published><updated>2009-03-06T14:36:26.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qos'/><title type='text'>Como definir limite de upload quando se dispõe de 2 link no servidor?</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Ainda nem pude fazer experimentações com o tc+htb aplicando as regras propostas anteriormente aqui e já estou com a cabeça fervendo com as dificuldades que enfrentarei para fazer QoS de upload quando eu tiver 2 links a disposição.Não enfrentarei este mesmo problema para download, pois o tráfego para o cliente vai ser entregue pelo meu roteador QoS.&lt;br /&gt;O "problema" que destaco é porque o upload do cliente ser daria por duas interfaces distintas, uma de cada link, por exemplo, uma com 2mb/s e outra com 1mb/s, enquanto que, voltando ao download, este se dá através de uma única interface de saída.&lt;br /&gt;Digamos que eu queira oferecer ao cliente 256kb/s de download e 128bk/s de upload, estes 256kb/s pode ser uma somatória do que estiver vindo por um ou outro link, mas será sempre entregue por uma única interface de rede do QoS ligada aos clientes. Eu poderia  fazer controle de upload em cada uma das interfaces de saída, ou seja, definir 44kb/s de upload pelo link de 1mb/s e 84kb/s de upload pelo link de 2mb, acho que seria um bom cenário, mas recaio no problema de não poder controlar upload desta forma fazendo NAT, pois não poderia identificar o cliente no momento do upload, devido ao tc que trabalharia sobre o IP do roteador NAT que já haveria feito o mascaramento, por exemplo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;+-----+  +-----+&lt;br /&gt;|Link1|  |Link2|&lt;br /&gt;+--+--+  +--+--+&lt;br /&gt;   |        |&lt;br /&gt;+--+--------+--+&lt;br /&gt;|     NAT      |&lt;br /&gt;+------+-------+&lt;br /&gt;       |&lt;br /&gt;       | clientes&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Então pensei em um cenário, que ainda não saberia dizer se operaria a contento, ainda vai demandar testes que seria:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;+-----+  +-----+&lt;br /&gt;|Link1|  |Link2|&lt;br /&gt;+--+--+  +--+--+&lt;br /&gt;   |        |&lt;br /&gt;+--+--------+--+&lt;br /&gt;|     NAT      |&lt;br /&gt;|    Squid     |&lt;br /&gt;+------+-------+&lt;br /&gt;       |&lt;br /&gt;+------+-------+&lt;br /&gt;|     QoS      |&lt;br /&gt;+------+-------+&lt;br /&gt;       |&lt;br /&gt;       | clientes&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No roteador NAT/Squid faria o balanceamento de carga ou mesmo somente o direcionamento de tráfegos, ou seja, http e voip para o link 1 e o resto para o link 2, ou qualquer outra definição mais apropriada.&lt;br /&gt;Tenho um sentimento que esta solução para upload não ofereceria a mesma qualidade no oferecimento de link aos clientes do que o upload, ambos feitos pelo QoS, mas é apenas uma impressão e ainda teria que raciocinar mais.&lt;br /&gt;&lt;br /&gt;Um grande abraço a todos.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6737960238834243195?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6737960238834243195/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6737960238834243195&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6737960238834243195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6737960238834243195'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/03/como-definir-limite-de-upload-quando.html' title='Como definir limite de upload quando se dispõe de 2 link no servidor?'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8719734425003988780</id><published>2009-03-03T08:13:00.000-08:00</published><updated>2009-03-03T08:46:30.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mentawai'/><title type='text'>Autocomplete com mentawai</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Como podem ver pelos posts, estou tocando dois pequeninos projetos, um em asp.net e outro em j2ee e sem dúvida que prefiro muito mais j2ee, parece que o desenvolvimento flui melhor e acredito que seja pela vasta documentação sobre tudo que se possa pensar, além de parecer gerar uma aplicação bem mais responsiva que asp.net, exatamente no sentido tempo de acesso ao banco de dados oracle como geração da saída para o browser do cliente.&lt;br /&gt;&lt;br /&gt;Pois bem, voltemos ao assunto, eu já havia tentado implementar autocomplete com ajaxtoolkit no asp.net através da implementação de um webservice (necessário, mas de implementação simples no visual studio), só que não gerou um bom resultado, sendo apresentados alguns bugs, principalmente quando precisava dar foco no textbox e selecionar o conteúdo através de código.&lt;br /&gt;&lt;br /&gt;Já estava preparado para amargurar alguns percalços com mentawai e parti pro abraço, mas fui decepcionado pela simplicidade do processo, sendo o mais complicado incluir os jar do json-lib, ezmorph, json, commons-logging e ajaxtags, pois tentei com os mais atualizados e não consegui rodar a aplicação, então baixei o mentawai completo e copiei dele os jar destas bibliotecas e transcorreu tudo perfeitamente.&lt;br /&gt;&lt;br /&gt;Em meu jsp, por exemplo, BuscaMaterial.jsp tenho:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;mtw:inputtext name=&amp;quot;descricao&amp;quot; id=&amp;quot;descricao&amp;quot; size=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;completeHere&amp;quot; class=&amp;quot;auto_complete&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;mtw:ajaxcompleter onsuccess=&amp;quot;completeText&amp;quot; source=&amp;quot;descricao&amp;quot; target=&amp;quot;completeHere&amp;quot; url=&amp;quot;Filtro.autoCompleter.mtw&amp;quot;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;e no head  do meu Template.jsp:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;function completeText(key, value) {&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;mtw:ajaxconfig loadprototype=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Já o método autoCompleter da action Filtro retorna um Map com a lista que eu desejar:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;      Map&lt;long,&gt; map = new LinkedHashMap&lt;long,&gt;();&lt;br /&gt;&lt;br /&gt;      while (rset.next()) {&lt;br /&gt;          BigDecimal numero = rset.getBigDecimal("id");&lt;br /&gt;          map.put(numero.longValue(), rset.getString("nome"));&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      output.setValue(AjaxConsequence.KEY, map);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Era isto galera!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8719734425003988780?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8719734425003988780/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8719734425003988780&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8719734425003988780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8719734425003988780'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/03/autocomplete-com-mentawai.html' title='Autocomplete com mentawai'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7971303525023071533</id><published>2009-03-03T08:03:00.000-08:00</published><updated>2009-03-03T08:12:26.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>Preencher TextBox como resultado de uma seleção no DropDownList em asp.net</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Isto sem dúvida é algo bem simples e só fui descobrir isto porque após uma rápida procura frustrada no google parei e pensei em uma solução. Realmente, antes de simplesmente pensar em algo parti pro google para ele "pensar" por mim. Ok, mas vamos à situação: tenho um DropDownList com uma lista de materiais e queria preencher o conteúdo de um TextBox com o valor unitário daquele material após a seleção de algum item. As primeiras tentativas foram sobre CascadingDropDown ou algo similar, mas foram infrutíferas, então pus-me a pensar&lt;br /&gt;- Mas se estas joça de asp.net é orientada a eventos, porque simplesmente não codifico a busca do valor unitário e o preenchimento deste TextBox no evento disparado pela seleção de um item do DropDownList? E foi o que fiz, cuidando para alterar a propriedade AutoPostBack do DropDownList para true, depois codifiquei o evento SelectedIndexChanged com:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;String id = cMaterial.SelectedValue;&lt;br /&gt;&lt;br /&gt;if (!string.IsNullOrEmpty(id)) {&lt;br /&gt;    Material material = MaterialDAO.Get(int.Parse(id));&lt;br /&gt;    cValorUnitario.Text = material.valorUnitario.ToString();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Pronto!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-7971303525023071533?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7971303525023071533/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7971303525023071533&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7971303525023071533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7971303525023071533'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/03/preencher-textbox-como-resultado-de-uma.html' title='Preencher TextBox como resultado de uma seleção no DropDownList em asp.net'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-5677388105196443352</id><published>2009-02-16T09:16:00.000-08:00</published><updated>2009-03-04T04:10:03.817-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='htb'/><category scheme='http://www.blogger.com/atom/ns#' term='qos'/><title type='text'>Usando htb para controle de tráfego por ip priorizando certos serviços</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Sempre fui fiel usuário do htb-tools para controle de tráfego do meu roteador de internet na prefeitura de Terra de Areia. É claro que o uso do htb-tools dá-se principalmente pela minha completa falta de competência em saber lidar com o comando tc "na unha".&lt;br /&gt;Minha estrutura é simples, por isto mantenho o squid nesta mesma máquina fazendo nat, o que sempre me trouxe o problema do controle preciso de upload, pois com nat e squid, definitivamente não dá pra fazer controle de upload da mesma forma "simples" que download.&lt;br /&gt;Estes dias passei a estudar traffic control para linux e htb no intuito de preparar um novo roteador que me permitisse controle preciso de download e upload e para isto é lógico que precisava separar o nat e o squid para outra máquina a fim de manter de forma simples estes controles.&lt;br /&gt;Até estava pensando em continuar usando htb-tools, afinal sempre fez muito bem seu trabalho, mas um htb generate eth0 (por exemplo) gerou uma infinidade de regras totalmente incompreensíveis para mim e decidi que queria saber como funcionam as suas entranhas.&lt;br /&gt;A princípio sempre soube que o controle de tráfego é sempre feito no fluxo (interface) de saída e como faço controle de upload com htb-tools ele muda esta política e passa a controlar pelo fluxo de entrada (ingress, pelo menos eu acho).&lt;br /&gt;Ainda estou totalmente cru com todos os conceitos envolvidos em controle de tráfego e com a forma de aplicá-los com o comando tc, por isto resolvi escrever minhas memórias como forma de documentação do meu aprendizado e para que as bondosas almas possam indicar-me minhas falhas.&lt;br /&gt;Sem dúvida o fórum underlinux é minha principal fonte de aprendizado e busca por respostas, mas não posso deixar de citar o &lt;a href="http://br-linux.org/tutoriais/001794.html"&gt;manual traduzido do htb&lt;/a&gt; e &lt;a href="http://www.ppgia.pucpr.br/%7Ejamhour/Pessoal/Especializacao/Ano03/TARC/QoSLinux.ppt"&gt;QosLinux.ppt&lt;/a&gt;.&lt;br /&gt;Como resultado final deste trabalho pretendo desenvolver uma aplicação em ruby, java, php ou qualquer outra linguagem para que a partir de um arquivo com os ips e taxas de download e upload sejam geradas um conjunto de regras para estes controles.&lt;br /&gt;Ainda não tenho a mínima idéia de como fazer, mas "em cima" do controle de tráfego de cada computador da rede quero fazer também priorização, ou seja, dar prioridade maior para pacotes de voip do que ftp, independente de quem está fazendo download, assim não precisaria prioriza individualmente.&lt;br /&gt;Para começar quero registrar como faria para controlar o tráfego de dowload de um link de 512k entre 4 computadores. A interface da lan (ou saída do tráfego do roteador de internet para a lan) será a eth0, assim as regras para definir taxa garantida de 128k e limite de 512k ficariam assim:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tc qdisc add dev eth0 root handle 1:0 htb default 9&lt;br /&gt;tc class add dev eth0 parent 1:0 classid 1:1 htb rate 512kbit&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc class add dev eth0 parent 1:1 classid 1:9 htb rate 8k&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc class add dev eth0 parent 1:1 classid 1:101 htb rate 128k ceil 512k&lt;br /&gt;tc class add dev eth0 parent 1:1 classid 1:102 htb rate 128k ceil 512k&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc class add dev eth0 parent 1:1 classid 1:103 htb rate 128k ceil 512k&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc class add dev eth0 parent 1:1 classid 1:104 htb rate 128k ceil 512k&lt;br /&gt;tc qdisc add dev eth0 parent 1:9   handle 90:   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;sfq perturb 10&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc qdisc add dev eth0 parent 1:101 handle 1010: sfq perturb 10&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc qdisc add dev eth0 parent 1:102 handle 1020: sfq perturb 10&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc qdisc add dev eth0 parent 1:103 handle 1030: sfq perturb 10&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc qdisc add dev eth0 parent 1:104 handle 1040: sfq perturb 10&lt;br /&gt;tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.10.101/32 flowid 1:101&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.10.102/32 flowid 1:102&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.10.103/32 flowid 1:103&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.10.104/32 flowid 1:104&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Temos assim, a definição do htb como qdisc, a classe que estabelece a capacidade do link em 512k, as classes que definem as taxas para cada ip, as qdisc para cada uma destas classes e os filtros para direcionamento dos tráfegos de saída.&lt;br /&gt;Acredito que seja simplesmente isto para fazer o controle básico de download embora ainda não tenha posto isto em prática. Num futuro gostaria de poder contar com as possíveis vantagens da utilização dos parâmetros quantum, burst e cburst (entre outros).&lt;br /&gt;Por enquanto era isto, assim que conseguir testá-los vou usar basicamente estas mesmas regras com a interface de saída do roteador para o roteador de internet (eth1) para controle de upload, lembrando que não vou fazer nat e nem ter squid neste roteador.&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-5677388105196443352?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/5677388105196443352/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=5677388105196443352&amp;isPopup=true' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5677388105196443352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5677388105196443352'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/02/usando-htb-para-controle-de-trafego-por.html' title='Usando htb para controle de tráfego por ip priorizando certos serviços'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8199960472656693989</id><published>2009-02-03T03:19:00.000-08:00</published><updated>2009-02-03T04:03:19.215-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='odp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>A saga do Oracle com Windows 2003 64bits e o Mono para experimentações</title><content type='html'>&lt;div style="border: 1px solid black; margin: 0px; padding: 2px; left: -100px; top: -100px; visibility: hidden; display: none; width: auto; height: auto; position: absolute; background-color: rgb(168, 236, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; font-family: Arial; font-size: 12px; color: rgb(0, 0, 0); text-align: left; z-index: 1410065406;" id="gmbabelFish"&gt;&lt;div style="border-bottom: 1px dotted black; padding-bottom: 2px; padding-top: 2px;"&gt;&lt;span id="bfcloseButton" title="Close BabelFish" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bfconfigButton" title="Language configuration" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bflangsSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span id="bfserviceSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span style="cursor: copy;" class="BabelFishToolBar" title="Copy result to clipboard" id="bfclipboardSpan"&gt;&lt;/span&gt;&lt;span style="cursor: pointer; visibility: hidden;" class="BabelFishToolBar" title="No errors" id="bferrorSpan"&gt;&lt;/span&gt;&lt;img id="bffishImg" style="border: medium none ; margin: 0px; cursor: pointer;" title="click to translate" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUUDyoqJjAqRwAAAN1JREFUOMu1lMkVwyAMBYe0JGpCNUFNVk3k4AUwxPGS+ILxkzX8jyTH/Sfu9nrmJ3cXlnMASyWRPwd2d5XlHCBZn1BthcbRAdxTZQDI8k3mQzg11rhF+QZ9jdNOcQib6GFQYJYgCFucSRf6GsLU6wEY5yubTFqF2yq1vRwr3INXdQUWG+je1pELX4ED1wDyRAR0WfuAA9gloITyvsFMIMgYInYRqF6rO9Sqz9qkO5ilyo0o3YBwJ+6vrdQonxWUQllhXeHcb/wabMPkP2n81ocAIoLZrMqn/4y2RwP8DcQ+d6rT9ATiAAAAAElFTkSuQmCC" align="middle" /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div   style="border: 1px solid black; margin: 0px; padding: 2px; left: -100px; top: -100px; visibility: hidden; display: none; width: auto; height: auto; position: absolute; background-color: rgb(168, 236, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; color: rgb(0, 0, 0); text-align: left; z-index: 1410065406;font-family:Arial;font-size:12px;" id="gmbabelFish"&gt;&lt;div style="border-bottom: 1px dotted black; padding-bottom: 2px; padding-top: 2px;"&gt;&lt;span id="bfcloseButton" title="Close BabelFish" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bfconfigButton" title="Language configuration" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bflangsSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span id="bfserviceSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span style="cursor: copy;" class="BabelFishToolBar" title="Copy result to clipboard" id="bfclipboardSpan"&gt;&lt;/span&gt;&lt;span style="cursor: pointer; visibility: hidden;" class="BabelFishToolBar" title="No errors" id="bferrorSpan"&gt;&lt;/span&gt;&lt;img id="bffishImg" style="border: medium none ; margin: 0px; cursor: pointer;" title="click to translate" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUUDyoqJjAqRwAAAN1JREFUOMu1lMkVwyAMBYe0JGpCNUFNVk3k4AUwxPGS+ILxkzX8jyTH/Sfu9nrmJ3cXlnMASyWRPwd2d5XlHCBZn1BthcbRAdxTZQDI8k3mQzg11rhF+QZ9jdNOcQib6GFQYJYgCFucSRf6GsLU6wEY5yubTFqF2yq1vRwr3INXdQUWG+je1pELX4ED1wDyRAR0WfuAA9gloITyvsFMIMgYInYRqF6rO9Sqz9qkO5ilyo0o3YBwJ+6vrdQonxWUQllhXeHcb/wabMPkP2n81ocAIoLZrMqn/4y2RwP8DcQ+d6rT9ATiAAAAAElFTkSuQmCC" align="middle" /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div   style="border: 1px solid black; margin: 0px; padding: 2px; left: -100px; top: -100px; visibility: hidden; display: none; width: auto; height: auto; position: absolute; background-color: rgb(168, 236, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; color: rgb(0, 0, 0); text-align: left; z-index: 1410065406;font-family:Arial;font-size:12px;" id="gmbabelFish"&gt;&lt;div style="border-bottom: 1px dotted black; padding-bottom: 2px; padding-top: 2px;"&gt;&lt;span id="bfcloseButton" title="Close BabelFish" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bfconfigButton" title="Language configuration" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bflangsSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span id="bfserviceSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span style="cursor: copy;" class="BabelFishToolBar" title="Copy result to clipboard" id="bfclipboardSpan"&gt;&lt;/span&gt;&lt;span style="cursor: pointer; visibility: hidden;" class="BabelFishToolBar" title="No errors" id="bferrorSpan"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mono-project.com/skins/Mono2/images/header-logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 168px; height: 85px;" src="http://mono-project.com/skins/Mono2/images/header-logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;A situação ainda era triste (bom, ainda é), o desenvolvimento do sistema precisava e estava sendo realizado com o Visual Web Developer 2008 Express Edition (VWD), a única coisa com licença para desenvolver asp.net aqui na empresa.&lt;br /&gt;Tudo ocorria tranquilo em minha máquina de desenvolvimento, uma estação windows xp 32bits.  Para acesso ao servidor Oracle resolvi utilizar ODP.NET em meus DAOs e o sistema corria bem no servidor embutido do VWD.&lt;br /&gt;Quando resolvi por o sistema em produção em um servidor Windows 2003 64bits com IIS 6, qual não foi a ingrata surpresa de saber que o deploy não ocorerria assim tão fácil, pois de cara, este servidor não tinha suporte a asp.net 2.0. Pois bem, instalamos o abençoado .net 3.5 neste servidor, acreditando que meus problemas estaria acabados, mas não mudou em nada o ambiente. Pesquisando descobri que deveria rodar o aspreg_iis.exe -i para "registrar" o asp.net 2.0 no IIS6.&lt;br /&gt;Legal! Estava registrado e a aplicação agora rodava mas de pronto já berrava exceções referente a impossibilidade de conseguir carregar dll referente ao Oracle. Aí sim que a batalha foi terrível. Como o servidor é 64 bits achamos que o .net deveria ser de 64bits também, mas em lugar algum diz que o .net 3.5 é 32 e 64 bits, então removemos e instalamos o .net 2.0 64bits, afinal o asp.net do .net 3.5 ainda é 2.0.&lt;br /&gt;De nada adiantou as exceções agora só eram diferentes e não permitiam saber exatamente o que estava ocorrendo a não ser pela indicação BadFormatException.&lt;br /&gt;Certamente, então, deveria ser o ODP.NET instalado que não era de 64bits, corremos e instalamos a versão 64bits destes componentes, como podem imaginar, nada de diferente exceções e exceções. Alguns comentários pela web a fora sugeriam que o sistema deveria ser compilado forçadamente como 32 bits e para isto o VWD não servia, pois não dá a opções de escolher o target 32 bits.&lt;br /&gt;A esta altura já estava quase desistindo de utilizar o IIS6 do Windows 2003 64bits para rodar a aplicação. Como tenho meu amado e idolatrado Debian rodando virtualizado com VirtualBox baixei e compilei o mono 2.0 e depois instalei o cliente Oracle. Foi mais fácil executar a aplicação no mono com apache do que no .net com IIS, mas era certo que as exceções referentes ao Oracle continuariam a ocorrer, ou então outras distintas pois até o momento em que pesquisava não encontrara o ODP.NET para mono.&lt;br /&gt;Resolvi mudar meus DAOs e não mais utilizar ODP, passei a utilizar o provider embutido no .net. Já que assim estava, atirei a aplicação no servidor Windows para experimentar, mas não teve jeito, aí passaram a ocorrer outras exceções distintas referente à falta de suporte ao cliente Oracle que fosse inferior a versão 8 ponto alguma coisa.&lt;br /&gt;Atirei a aplicação no mono e bala, rodou tranquilo, pelo menos a princípio, algumas vezes ocorriam algumas exceções estranhas referente à acesso aos dados.&lt;br /&gt;Mas eu ainda estava com gana de colocar o sistema a rodar no Windows 2003, pois afinal é nosso ambiente oficial de execução e eu certamente não teria autorização para alocar a aplicação em um servidor de aplicação linux com mono que nem existe na empresa.&lt;br /&gt;Bom, neste momento a coisa foi uma doidura só experimentamos diversas configurações e versões de ODP.NET de 32 e 64 bits, .net em 32 e 64bits. Nesta altura já tinha voltado meus dados para utilizar ODP.NET.&lt;br /&gt;Em alguma momento conseguimos descobrir que o famigerado IIS 6 roda em 32 bits. Esta "descoberta" foi para alimentar a escalada final da decepção com este servidor. Não dava pra acreditar que o servidor web oficial e nativo do servidor Windows 64bits rodava em 32bits!&lt;br /&gt;Finalmente deixamos tudo em 32 bits, .net e odp.net e conseguimos correr a aplicação tranquilamente.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8199960472656693989?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8199960472656693989/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8199960472656693989&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8199960472656693989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8199960472656693989'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/02/saga-do-oracle-com-windows-2003-64bits.html' title='A saga do Oracle com Windows 2003 64bits e o Mono para experimentações'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-4628510931533510510</id><published>2009-01-28T02:37:00.000-08:00</published><updated>2009-01-28T02:57:20.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iText'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Possível causa para a mensagem "The document has no pages" do iText</title><content type='html'>&lt;div   style="border: 1px solid black; margin: 0px; padding: 2px; left: -100px; top: -100px; visibility: hidden; display: none; width: auto; height: auto; position: absolute; background-color: rgb(168, 236, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; color: rgb(0, 0, 0); text-align: left; z-index: 1410065406;font-family:arial;font-size:12px;" id="gmbabelFish"&gt;&lt;div style="border-bottom: 1px dotted black; padding-bottom: 2px; padding-top: 2px;"&gt;&lt;span id="bfcloseButton" title="Close BabelFish" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bfconfigButton" title="Language configuration" class="BabelFishToolBar" style="cursor: pointer;"&gt;&lt;/span&gt;&lt;span id="bflangsSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span id="bfserviceSpan" style="cursor: pointer;" class="BabelFishToolBar"&gt;&lt;/span&gt;&lt;span style="cursor: copy;" class="BabelFishToolBar" title="Copy result to clipboard" id="bfclipboardSpan"&gt;&lt;/span&gt;&lt;span style="cursor: pointer; visibility: hidden;" class="BabelFishToolBar" title="No errors" id="bferrorSpan"&gt;&lt;/span&gt;&lt;img id="bffishImg" style="border: medium none ; margin: 0px; cursor: pointer;" title="click to translate" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUUDyoqJjAqRwAAAN1JREFUOMu1lMkVwyAMBYe0JGpCNUFNVk3k4AUwxPGS+ILxkzX8jyTH/Sfu9nrmJ3cXlnMASyWRPwd2d5XlHCBZn1BthcbRAdxTZQDI8k3mQzg11rhF+QZ9jdNOcQib6GFQYJYgCFucSRf6GsLU6wEY5yubTFqF2yq1vRwr3INXdQUWG+je1pELX4ED1wDyRAR0WfuAA9gloITyvsFMIMgYInYRqF6rO9Sqz9qkO5ilyo0o3YBwJ+6vrdQonxWUQllhXeHcb/wabMPkP2n81ocAIoLZrMqn/4y2RwP8DcQ+d6rT9ATiAAAAAElFTkSuQmCC" align="middle" /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;"&gt;Buenas moçada, tempão louco que não mantenho atualizado este blog, mas como todos, é sempre a velha desculpa esfarrapada de "falta de tempo".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Bem, pretendo utilizar este espaço mais vezes pra relatar a solução de alguns pequenos problemas que enfrento no cotidiano referente à desenvolvimento de software, mais precisamente na codificação ou programação.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;É uma grande pena que no momento tenha que estar utilizando um ambiente não-livre e ferramentas da mesma forma para desenvolvimento: windows xp e visual web developer 2008 express edition.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Estou procurando, em paralelo, utilizar também php e java, para tanto até já tenho um ambiente virtualizado com VirtualBox e meu querido Debian Lenny.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Acontece, que atualmente, minhas maiores dores de cabeça foram com o ambiente "oficial" e já passo a esclarecer um deles.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Estou utilizando iTextSharp para gerar pdf em um sistema asp.net. Só para registrar tenho utilizado c# pela semalhança com java. Tudo tranquilo em meu ambiente de desenvolvimento (windows xp 32bits e servidor asp.net embutido do visual web developer) até que fiz o deploy em um servidor windows 2003 64 bits e iis 6 (em um post futuro falo mais sobre outra saga neste ambiente), aí começaram a ocorrer os famigerados "The document has no pages" sempre quando da execução do método .Close() do documento pdf. Sempre era gerado um arquivo pdf, no meu caso Notificacao.pdf, com 0 bytes. Bom, depois de tanto fuçar descobri que era um problema com a chamada FontFactory.GetFont(Font.HELVETICA), ou seja, alguns procuras no google indicavam que poderia ser problema com fontes e realmente eram. Passei a utiliar as chamadas como descrita abaixo:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Chunck chunk = new Chunk("Notificação de Débito de Celular", FontFactory.GetFont("Verdana", 18, iTextSharp.text.Font.BOLD));&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Problema resolvido!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Até um novo post.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-4628510931533510510?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/4628510931533510510/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=4628510931533510510&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4628510931533510510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4628510931533510510'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2009/01/possivel-causa-para-mensagem-document.html' title='Possível causa para a mensagem &quot;The document has no pages&quot; do iText'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-18053104873602179</id><published>2008-06-26T07:22:00.000-07:00</published><updated>2008-06-26T07:23:15.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='promoção'/><category scheme='http://www.blogger.com/atom/ns#' term='br-linux'/><title type='text'>Como Concorrer a um Asus EEE PC e Outros Prêmios e Ajudar a WikiPedia e Outro Projeto sem Gastar Dinheiro</title><content type='html'>&lt;b&gt;Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!&lt;/b&gt;&lt;br /&gt;…e também a pen drives, card drives, camisetas geeks, livros e mais! O &lt;a href=http://br-linux.org/&gt;BR-Linux&lt;/a&gt; e o &lt;a href=http://efetividade.net/&gt;Efetividade&lt;/a&gt; lançaram uma &lt;a href=http://br-linux.org/2008/campanha-wikipedia/&gt;campanha&lt;/a&gt; para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e &lt;a href=http://br-linux.org/2008/campanha-wikipedia/&gt;participe&lt;/a&gt; - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-18053104873602179?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/18053104873602179/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=18053104873602179&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/18053104873602179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/18053104873602179'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/06/como-concorrer-um-asus-eee-pc-e-outros.html' title='Como Concorrer a um Asus EEE PC e Outros Prêmios e Ajudar a WikiPedia e Outro Projeto sem Gastar Dinheiro'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-9036025170765965699</id><published>2008-03-26T07:49:00.000-07:00</published><updated>2008-03-26T07:52:18.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualizacao'/><title type='text'>Configurando Virtualbox Guest para acesso a compartilhamento de Debian Lenny dentro de Debian Lenny</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Estou iniciando no mundo da virtualização e para tanto, como usuário Debian que sou, iniciante que sou, parti para utilização do que me parece mais fácil, o Virtuabox. Meu impasse ocorreu quanto estava tentando acessar um compartilhamento da máquina hospodeira pela máquina hóspede, todas as duas Debian Lenny.&lt;br /&gt;&lt;br /&gt;A princípio, tudo deveria funcionar com apenas um "#apt-get install virtualbox-ose-guest-utils" para que pudesse ser acessado um compartilhamento configurado pelo virtualbox com um simples "#mount -t vboxfs nome_compartilhamento ponto_montagem", mas não foi tão fácil assim. O problema todo foi que o tal "#apt-get install virtualbox-ose-guest-utils" apresentou um problema ao tentar carregar o módulo "vboxadd" e a tarefa toda está em disponibilizar este módulo para o lenny guest.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Encurtando a história, para que isto tudo funcione é preciso que sejam instalados pacotes (vai que algum esteja sobrando, mas foi a primeira vez que fiz isto e fui instalando aos poucos):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#apt-get install virtualbox-ose-guest-source&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#m-a prepare virtualbox-ose-guest&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#m-a a-i virtualbox-ose-guest&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Após isto o módulo vboxadd já existe então pode-se instalar o virtualbox-ose-guest-utils&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#apt-get install virtualbox-ose-guest-utils&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Por fim, para que finalmente possa-se montar a partição, antes é necessário carregar o módulo vboxvfs. Realmente não sei porque o próprio comando mount não o carrega sob demanda, acredito que seja pela sutil diferença entre o tipo de sistema de arquivo vboxfs e o nome do módulo vboxvfs:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#modprobe vboxvfs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;#mount -t vboxfs downloads /mnt/downloads&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Estes passos permitiram que eu pudesse acessar o compartilhamento downloads.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Espero que esta dica seja de utilidade.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Um grande abraço a todos.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-9036025170765965699?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/9036025170765965699/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=9036025170765965699&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/9036025170765965699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/9036025170765965699'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/03/configurando-virtualbox-guest-para.html' title='Configurando Virtualbox Guest para acesso a compartilhamento de Debian Lenny dentro de Debian Lenny'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6514529440312205419</id><published>2008-03-19T04:53:00.000-07:00</published><updated>2008-03-19T05:09:40.598-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='historia'/><title type='text'>Após tantas e poucas coisas acontecerem...</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Olá amigos! Puxa vida que tanto tempo sem postar, já estava sentindo falta fazia tempo, mas algumas coisas aconteceram que me impossibilitaram de tal.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Neste dia 31 de janeiro, data da minha última postagem, foi o último dia que ainda estava como responsável por uma LanHouse de proprierade de minha empresa de provimento de acesso wireless. Infelizmente sofremos um acidente de moto, minha namorada e eu, mas graças a Deus foi muito mais um susto, pois os resultados foram leves escoriações. Passamos por um período de recuperação e além disto já estávamos abalados porque dois dias antes eu havia sido penalizado por duas multas, totalizando mais de 1000 UFIRs por ter dirigido uma Biz 100 sem possuir habilitação adequada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Passamos então, após este episódio, a não mais deslocarmo-nos à referida LanHouse, pois eu não poderia arriscar tomar mais duas buchas de 500 UFIRs cada e minha namorada estava traumatizada e sem condições de condução da Biz. Aliás, até hoje ela ainda tem muito medo de conduzir a motinho.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Como a LanHouse estava a mais de 15Km de casa, fiquei sem poder utilizar o meu computador que estava lá, a disposição dos usuários e quando não era o que eu utilizava para minhas experiências e trabalho.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Além de ser um dos dois sócios-proprietários da "poderosa" F&amp;amp;F Network, contando em seu conglomerado com a enorme LanHouse com 8 computadores (eram, já vendemos alguns pra pagar as contas), ainda sou servidor público municipal e não contava com uma boa máquina de trabalho no ambiente público o que não me permitia realizar nada de bons experimentos nos momentos de folga.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Finalmente, com o término da temporada de verão (a LanHouse estava disposta em uma praia próxima) o que ocasiona a volta em massa de todos os turistas à suas cidades de origem, deixando a praia às moscas até o próximo verão, pude tomar um dos computadores da LanHouse para uso pessoal novamente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Também estamos passando por alguns problemas técnicos com o nosso provedor wireless o que nos está tomando um tempo enorme.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Pude fazer pequenas alterações no RBM, inclusive com a adição de um trecho de código passado aqui pelo blog que faço questão de dar os devidos créditos a seguir, além disto pretendo testá-lo em algumas distribuições que puder a fim de tentar passar os procedimentos para executá-lo nestes outros ambientes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Um grande abraço a todos&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6514529440312205419?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6514529440312205419/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6514529440312205419&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6514529440312205419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6514529440312205419'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/03/aps-tantas-e-poucas-coisas-acontecerem.html' title='Após tantas e poucas coisas acontecerem...'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2551625844088366987</id><published>2008-01-31T10:11:00.002-08:00</published><updated>2008-02-06T11:44:36.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><title type='text'>Tutorial para utilização do Ruby Bandwidth Monitor</title><content type='html'>Como várias pessoas estava solicitando auxílio para utilização do Ruby Bandwidth Monitor (RBM) e também eu estava fazendo várias alterações nele, agora que está em um estágio um pouco mais usável e com alguns recursos, vou descrever o método de instalação do Ruby e Libpcap-Ruby e onde alterar o código-fonte do rbm.rb para informar os parâmetros (que ainda não consigo enviar por linha de comando).&lt;br /&gt;&lt;br /&gt;Tenho utilizado o RBM, constantemente, em sistemas Debian, tanto Etch (stable) como Lenny (testing), com Ruby1.8 e Libpcap-Ruby1.8, para instalá-los faça o seguinte, como root:&lt;br /&gt;#apt-get install ruby1.8 libpcap-ruby1.8&lt;br /&gt;&lt;br /&gt;Antes de iniciar, o RBM é utilizado em computadores que servem como roteadores de uma rede, fazendo NAT da rede interna para acesso a uma rede externa como a internet. Em todas as minhas configurações, sempre tenho a eth0 como dispositivo conectado à internet e eth1 para a rede interna.&lt;br /&gt;&lt;br /&gt;Feito isto o sistema já estará pronto para rodar o RBM, para baixar o código-fonte, vá em &lt;a href="http://www.katyphotoart.com/ruby/rbm.rb"&gt;http://www.katyphotoart.com/ruby/rbm.rb&lt;/a&gt; e para visualizar o codigo-fonte com a sintaxe colorida vá em &lt;a href="http://www.katyphotoart.com/ruby/rbm.rb.html"&gt;http://www.katyphotoart.com/ruby/rbm.rb.html&lt;/a&gt;, portanto wget nele:&lt;br /&gt;&lt;br /&gt;$wget http://www.katyphotoart.com/ruby/ruby.rb&lt;br /&gt;&lt;br /&gt;Edite o arquivo e altere as variáveis globais que estão definidas a partir da linha 24 até a linha 29, onde explico a função de cada uma:&lt;br /&gt;* $gateway_ip: o número de ip atribuído à interface que comunica-se com a rede interna, ou seja, o ip do gateway dos clientes.&lt;br /&gt;* $device: dispositivo (eth0, eth1, etc) que comunica-se com a rede interna. Em uma próxima versão vai ser necessário informar só o dispositivo que o RBM será capaz de obter o $gateway_ip&lt;br /&gt;* $sort_by: como explicado no código-fonte, indica por qual dos campos será classificado o resultado, ip (ou nome de máquina), traffic_in ou traffic_ou (para tráfegos de download ou upload), packets_in ou packets_out (para número de pacotes de download ou upload). Colocando um "-" (hífen) antes do parâmetro, a ordem de classificação será descendente, exemplo, "-ip".&lt;br /&gt;* $refresh: o tempo em segundos para acúmulo e exibição dos resultados.&lt;br /&gt;* $pcapoptions: para adicionar argumentos extras à biblioteca libpcap (responsável pela captura de pacotes), no estilo tcpdump. Digamos que eu queira obter somente o tráfego do cliente com ip 192.168.1.20, $pcapoptions terá como valor "host 192.168.1.20". Surigo a leitura do manpage do tcpdump para maiores detalhes.&lt;br /&gt;* $nameshow: permite mostrar nome de máquina (obtida através do arquivo /etc/hosts) em detrimento ao número ip. Para tanto, defina o valor desta variável como "hostname", qualquer outro valor significa que deve ser exibido o número ip. (Em uma versão futura pretendo utilizar chamadas ao dns para conversão de nomes se isto mostrar-se realmente útil)&lt;br /&gt;&lt;br /&gt;Feitas as alterações no código-fonte, basta rodar o programa, como root (pois é necessário para que a interface seja posta em modo promíscuo pela biblioteca libpcap):&lt;br /&gt;#ruby1.8 rbm.rb&lt;br /&gt;&lt;br /&gt;Para cancelar a execução do programa tecle a combinação CTRL+C.&lt;br /&gt;&lt;br /&gt;Logo em seguida vou seguir a sugestão do keynes (eu acho) e permitir a exibição de "10.0.0.30" (exemplo), ao invés de "010.000.000.030" como acontece agora.&lt;br /&gt;&lt;br /&gt;Era isto pessoal, qualquer dúvida é só perguntar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2551625844088366987?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2551625844088366987/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2551625844088366987&amp;isPopup=true' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2551625844088366987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2551625844088366987'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/tutorial-para-utilizao-do-ruby.html' title='Tutorial para utilização do Ruby Bandwidth Monitor'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7567694201230400446</id><published>2008-01-30T09:48:00.001-08:00</published><updated>2008-01-30T09:52:27.275-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><title type='text'>Ruby Bandwidth Monitor versão 0.02</title><content type='html'>Boa tarde gente!&lt;br /&gt;Corrigi a atribuição do endereço mac para os clientes que estava errado, acrescentei a possibilidade de fazer resolução de nomes com base no arquivo /etc/hosts, para isto basta que se edite o código fonte e seja alterado o valor da variável global @nameshow para "hostname".&lt;br /&gt;&lt;br /&gt;Era isto por enquanto. Como de costume o código está em &lt;a href="http://www.katyphotoart.com/ruby/rbm.rb.html"&gt;http://www.katyphotoart.com/ruby/rbm.rb.html&lt;/a&gt;&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/2409603809791857047-7567694201230400446?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7567694201230400446/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7567694201230400446&amp;isPopup=true' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7567694201230400446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7567694201230400446'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/ruby-bandwidth-monitor-verso-002.html' title='Ruby Bandwidth Monitor versão 0.02'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-162250904544995698</id><published>2008-01-29T17:58:00.000-08:00</published><updated>2008-01-30T10:11:23.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><title type='text'>Argumentos em linha de comand e pcaplet (para captura de pacotes)</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Estou voltando ao problema relatado anteriormente com o intuito de alguma alma me ajudar nesta questão. Perdi mais de uma hora eu acho para descobrir, a duras penas, que não posso fazer captura de pacotes com o pcaplet quando envio argumentos por linha de comando. Explicando melhor, considerem o código abaixo em um arquivo de nome cap.rb:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;01 #!/usr/bin/env ruby&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;02 require 'pcaplet'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;03 cap = Pcaplet.new("-i eth0 -s 128")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;04 filter = Pcap::Filter.new('ip', cap.capture)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;05 cap.add_filter(filter)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;06 cap.close&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Se simpleste eu rodá-lo com "ruby1.8 cap.rb" beleza, não é gerado nenhum erro, mas se eu rodo-o assim "ruby1.8 cap.rb argumento", simplesmente o programa para a execução na linha 03 e retorna a mensagem de erro "setfilter: syntax error".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Estava precisando enviar parâmetros por linha de comando para facilitar a vida de quem precisa enviar parâmetros à uma aplicação.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Assim que eu conseguir algum progresso neste sentido posto aqui, senão fico aguardando a sugestão de quem quiser me ajudar.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-162250904544995698?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/162250904544995698/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=162250904544995698&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/162250904544995698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/162250904544995698'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/argumentos-em-linha-de-comand-e-pcaplet.html' title='Argumentos em linha de comand e pcaplet (para captura de pacotes)'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8506104696865371207</id><published>2008-01-29T10:41:00.000-08:00</published><updated>2008-01-29T18:00:13.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free and open source software'/><title type='text'>Mais de 80% dos meus leitores usam Firefox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.ientrymail.com/webpronews/firefox_v_ie.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://images.ientrymail.com/webpronews/firefox_v_ie.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Tive que voltar pra dar esta boa-nova a vocês. Conforme o relatório do Google Analytics, meu leitores usam:&lt;br /&gt;* 80,14% Firefox&lt;br /&gt;* 11,42% IE&lt;br /&gt;* 5,59% Mozilla&lt;br /&gt;* 1,48% Opera&lt;br /&gt;* 0,57% Safari&lt;br /&gt;&lt;br /&gt;Se somarmos os 80,14 com 5,59, são quase 86% de usuário do Mozilla Firefox. Viva o software livre e de código aberto.&lt;br /&gt;&lt;br /&gt;Até logo&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8506104696865371207?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8506104696865371207/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8506104696865371207&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8506104696865371207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8506104696865371207'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/mais-de-80-dos-meus-leitores-usam.html' title='Mais de 80% dos meus leitores usam Firefox'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8924783103252400690</id><published>2008-01-29T09:52:00.000-08:00</published><updated>2008-01-29T18:00:52.414-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><title type='text'>Atualização do utilitário para controle de banda e novo nome</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Buenas gente, tive um tempo vago hoje e fiz algumas atualizações no utilitário pra controle de banda, seguindo algumas sugestões que me passaram por comentário. A primeira atualização acho que foi quanto ao nome, agora passa a se chamar Ruby Bandwidth Monitor (RBM) e as demais:&lt;br /&gt;* Paginação dos resultados&lt;br /&gt;* Classificação em ordem ascendente e descendente por todos os campos&lt;br /&gt;* Parâmetros informados no início do arquivo rbm.rc (notas a seguir)&lt;br /&gt;* Somatórios&lt;br /&gt;&lt;br /&gt;Não consegui de maneira alguma passar argumentos através da linha de comando e processar com ARGV sem receber a mensagem de erro "setfilter: parse error" na linha "cap = Pcaplet.new("-i #{$device} -s 128")" e este erro só ocorre porque tento passar argumentos pela linha de comando, então, por enquanto, tive que manter os parâmetros no código-fonte mesmo e são eles:&lt;br /&gt;* $device: nome do dispositivo de rede a ser monitorado. Ex: eth0, eth1&lt;br /&gt;* $gateway_ip: número ip da interface que será monitorada, em uma próxima versão vou tentar obter este número automaticamente, através do dispositivo informado&lt;br /&gt;* $sort_by: pode ser ip,mac,traffic_in,traffic_out,packets_in e packets_out para classificação em ordem ascendente e com o ascréscimento de um "-" (hífen) logo antes (ex: "-ip") para classificação em ordem descendente&lt;br /&gt;* $refresh: tempo em segundos para atualização dos resultados&lt;br /&gt;&lt;br /&gt;Basicamente utilizo, Debian i486, Ruby 1.8, libpcap-ruby1.8 e tenho instalado em meu sistema a biblioteca libpcap0.8.&lt;br /&gt;&lt;br /&gt;Quanto à biblioteca libpcap-ruby para CentoOS fico devendo por enquanto, mas vou procurar algum sistema RedHat pra testar.&lt;br /&gt;&lt;br /&gt;Quanto ao iptraf, tenho usado ele seguidamente, o único problema é que ele não totaliza o tráfego por ip e quanto ao MRTG, realmente seria a solução ideal, mas eu quis iniciar este projeto com dois propósito, aprender um pouco de Ruby e ter um utilitário simples, que não demandasse muitas configurações e fosse bem direto ao assunto. Realmente não saberia como fazer para o MRTG me oferecer as mesmas informações que propus com o RBC, assim, tão simples e rápido.&lt;br /&gt;&lt;br /&gt;Obrigado a todos pelos comentários, sugestões e críticas, o próximo passo acredito que seja fazer resolução de nomes para quem desejar assim (e eu desejo :-)).&lt;br /&gt;&lt;br /&gt;Código-fonte em: &lt;a href="http://www.katyphotoart.com/ruby/rbm.rb.html"&gt;http://www.katyphotoart.com/ruby/rbm.rb.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Até logo&lt;br /&gt;&lt;br /&gt;[]'s&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8924783103252400690?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8924783103252400690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8924783103252400690&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8924783103252400690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8924783103252400690'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/atualizao-do-utilitrio-para-controle-de.html' title='Atualização do utilitário para controle de banda e novo nome'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6310753527288807400</id><published>2008-01-27T19:38:00.000-08:00</published><updated>2008-01-29T18:01:29.015-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><title type='text'>Ruby: Utilitário para verificação de controle de banda</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Várias vezes procurei por algum utilitário que me auxiliasse na verificação do controle de banda do meu roteador. Precisava de algo que mostrasse o consumo de banda tanto de entrada quanto de saída de cada cliente (download e upload). Como utilizo o htb-tools este tem o htb ethX stats que, para mim, era quase perfeito, a não ser por não mostrar a taxa de transferência de saída.&lt;br /&gt;Como estou interessado no aprendizado de Ruby, decidi aventurar-me em criar um utilitário com as características que precisava.&lt;br /&gt;Outrora pesquisei como utilizar a biblioteca pcap com Java, mas desanimei-me logo em seguida nem lembro porque e descontinuei o projeto que nem havia iniciado. A uns dois dias atrás, deparei-me com um artigo da Linux Magazine que mostrava a utilização da biblioteca Pcap através do Perl para fazer uma espécie de log de utilização de banda por cliente e resolvi procurar se não havia a disponibilização de algum bind de pcap para Ruby. Gratamente fui surpreso que existia e meti a mão na massa.&lt;br /&gt;Estou apanhando um monte, pois se nem sei direito como programar em Ruby, nunca antes havia brincado com pcap, a não ser algumas poucas vezes, indiretamente com tcpdump.&lt;br /&gt;Gostaria só de compartilhar com quem esteja interessado, esta minha primeira versão "pré-alfabeto" e tentarei melhorá-lo com o tempo, pois ainda tenho que alterar o fonte para mudar alguns parâmetros e tenho utilizado algumas técnicas que devem causar calafrios na maioria dos bons programadores.&lt;br /&gt;Ainda não pude colocar o htb-gen em ação, mas este utilitário vai ser muito interessante para monitorar as taxas de transferências dos meus clientes.&lt;br /&gt;Apelidei-o de &lt;a href="http://www.katyphotoart.com/ruby/rbc.html"&gt;Ruby Bandwidth Control&lt;/a&gt;&lt;br /&gt;Abraços a todos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6310753527288807400?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6310753527288807400/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6310753527288807400&amp;isPopup=true' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6310753527288807400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6310753527288807400'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/ruby-utilitrio-para-verificao-de.html' title='Ruby: Utilitário para verificação de controle de banda'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2183154892470464888</id><published>2008-01-24T15:11:00.000-08:00</published><updated>2008-01-29T18:02:16.618-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='htb'/><title type='text'>Controle de banda para provedor wireless com pouco link para upload</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Olha que suamos a camiseta e mesmo assim eu ainda não estou com plena confiança de que está bom. Como sugeria professor de Teoria Geral de Administração, a Administração trata da forma como se gerencia/controla recursos finitos, pois para recursos infinitos não precisamos de gerenciamento/controle.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Pois bem, para download temos bastante banda, não quer dizer que não precisemos de Administração para ela, mas não estamos em um estado tão crítico, mas para upload a coisa está um tanto mais complicada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Tenho usado htb para Administração de banda desde o princípio (mas a história de como iniciamos o projeto do provedor vai ficar para outros posts), auxiliado pelo htb-tools. Conseguir afinar o arquivo de configuração do htb-tools que será a base para a geração das regras "tc" não parecia tão complicado a princípio, pois claro até então os recursos eram como se fossem quase infinitos, mas agora temos uma grande carteira de clientes e meu upload está me dando trabalho. Se fosse simplesmente atribuir 24kbps para cada cliente e que o htb se virasse com o resto seria o ideal, mas como o htb vai saber qual a melhor de atribuir burst? Como EU vou saber o que isto, burst, significa e como funciona?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;A resposta é que não sei e ainda vou continuar pesquisando a este respeito para poder afinar ainda mais minhas configurações e conseguir realmente oferecer serviços de ótima qualidade.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Só escrevi isto tudo aqui porque vai que aparece alguma alma caridosa que já tenha passado por isto e tenha como auxiliar-me nesta demanda. Encontrei o projeto htb-gen e pretendo experimentá-lo a semana que vem.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Abraços a todos.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2183154892470464888?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2183154892470464888/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2183154892470464888&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2183154892470464888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2183154892470464888'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/controle-de-banda-para-provedor.html' title='Controle de banda para provedor wireless com pouco link para upload'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2068397533422658179</id><published>2008-01-24T14:49:00.000-08:00</published><updated>2008-01-29T18:02:40.126-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filosofia'/><title type='text'>Os sentidos para uma compreensão do mundo</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;E se desconsiderássemos nossos sensores como visão, olfato e audição seríamos ainda capazes de compreender o mundo?&lt;br /&gt;Cada pessoa tem um mundo para si. Suas percepções ao longo do tempo e do presente lhe dá a noção de mundo. Sendo assim cada pessoa tem um mundo diferente, "vê" o mundo de forma diferente. Realmente eu acredito nisto.&lt;br /&gt;O interessante é que jamais poderemos crer que conseguiremos compreender plenamente qualquer um de nossos semelhantes. Qualquer pequena diferença de compreensão, de um detalhe que seja, pode fazer uma diferença enorme no final da cadeia de pensamentos e conclusões.&lt;br /&gt;Mas o mais incrível é que mesmo assim pensamos parecidos quando fazemos parte de uma mesma cultura, religião, partido político ou ideologia qualquer. Estas "orientações" conseguem milagrosamente, com uma receita simples, domesticar nossos cérebros e direcioná-los a um fim comum. Certamente que não haverá pensamentos e conclusões iguais, mas a grosso modo podemos dizer que pensamos parecidos.&lt;br /&gt;Então o que une as pessoas se elas sabem (ou acho que deveriam saber), que ninguém a compreenderá plenamente? Acredito que está em primeiro lugar o amor. É o amor que me faz acreditar que serei feliz para sempre com minha noiva quando casarmos, pois embora pensemos diferente em alguns pontos, ou melhor em muitos pontos e às vezes bem diferente, é a certeza de que ela me complementa e que basta que nos aceitemos e nos entreguemos um para o outro e seremos felizes.&lt;br /&gt;E porque pessoas de diversos partidos, religiões, culturas, etnias se unem todo ano em Porto Alegre para festejar, antes de tudo, o software livre e de código aberto? Acredito que seja porque há o "amor" ou um sentimentos grandioso que nos faz acreditar que esta forma de se posicionar no mundo nos faz e nos fará felizes.&lt;br /&gt;Que Deus nos direcione, cada vez mais para um mundo maravilhoso, livre e feliz, onde possamos fazer as diferenças não se tornarem oposição à construção de nosso paraíso e que o amor, ah! belo e doce amor, esteja sempre presente nos corações dos que querem se apaixonar.&lt;br /&gt;Katy TE AMO, porque somos diferentes, mas temos em comum, o amor um pelo outro.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8nEuFZlTAlY/R5kZ83EGcmI/AAAAAAAAAAk/G4JgEFSzHJo/s1600-h/meuamorzinho.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_8nEuFZlTAlY/R5kZ83EGcmI/AAAAAAAAAAk/G4JgEFSzHJo/s200/meuamorzinho.jpg" alt="" id="BLOGGER_PHOTO_ID_5159183381493609058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2068397533422658179?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2068397533422658179/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2068397533422658179&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2068397533422658179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2068397533422658179'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/os-sentidos-para-uma-compreenso-do.html' title='Os sentidos para uma compreensão do mundo'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8nEuFZlTAlY/R5kZ83EGcmI/AAAAAAAAAAk/G4JgEFSzHJo/s72-c/meuamorzinho.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2404584777475115348</id><published>2008-01-17T15:46:00.000-08:00</published><updated>2008-01-29T18:02:58.333-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Que caminho seguir? Java, C++, Python ou Ruby</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/6/6d/Duke.wave.shadow.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://upload.wikimedia.org/wikipedia/commons/6/6d/Duke.wave.shadow.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Esta eterna questão me toma, não consigo chegar à decisão. Quanto a Java pretendo continuar estudando-a e é certo que logo em seguida, assim que chegar meu notebook, devo iniciar um projeto J2EE pra consumo próprio. Vou utilizar, certamente, o framework MVC do ilustríssimo Sérgio, o Mentawai, que já citei anteriormente nas postagens referente ao meu TCC. Quanto à persistência ainda não defini, bom, mas vou deixar estes detalhes pra mais tarde, quando realmente iniciar o projeto.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://developer.kde.org/%7Elarrosa/visualtutorial/kde_logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://developer.kde.org/%7Elarrosa/visualtutorial/kde_logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;Sempre tive muita vontade de ser um programador C, tanto é que muitas e muitas vezes implementei pequenos programinhas em C, nada avançado, mas só para poder dizer que sabia programar em C. Estou achando muito interessante o KDE4, embora eu seja, atualmente, usuário Gnome, mas não posso deixar de admitir que sempre admirei o KDE e o QT (depois que a Trolltech passou a disponibilizá-lo, também, sob GPL). Se o tempo me permitir, tentarei iniciar alguns estudos, sem muita ambição, em C++ e quero utilizar o Kdevelop, o tutorial do Antonio Larrosa (http://developer.kde.org/~larrosa/tutorial.html) e este (http://www.beginning-kdevelop-programming.co.uk/) do Andrew Ward.&lt;br /&gt;Por fim, ainda paira a indecisão sobre começar os estudos em Python ou em Ruby, a inclinação está, atualmente, para o lado do Ruby por causa do Rails.&lt;br /&gt;Gostaria mesmo de saber que vantagens teria o Python sobre o Ruby, pois se, afinal, eu não encontrar nenhuma, acredito que definitivamente Python não será minha opção como linguagem de "altíssimo nível".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ruby-lang.org/images/logo.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.ruby-lang.org/images/logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2404584777475115348?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2404584777475115348/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2404584777475115348&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2404584777475115348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2404584777475115348'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/que-caminho-seguir-java-c-python-ou.html' title='Que caminho seguir? Java, C++, Python ou Ruby'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8686372888458202825</id><published>2008-01-15T17:37:00.000-08:00</published><updated>2008-01-29T18:03:09.116-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 005</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Vou tentar segui uma sugestão anônima para criação de frases mais curtas de agora em diante. Quem sabe assim, meus textos possam ser melhores compreendidos. Bom, mas se nem eu mesmo, às vezes, me entendo, como fazer meus leitores compreenderem-me plenamente? (Adorei a expressão "meus leitores"). ;-)&lt;br /&gt;Até que enfim eu tinha conseguido superar o problemão de "adormecimento" esporádico do cluster e agora ele funcionava "a mil". Ainda havia um detalhe que não consegui resolver até o final do trabalho e vou relatá-lo resumidamente (a minha moda) para que, quem sabe, alguém possa me dizer o que estava havendo.&lt;br /&gt;Um computador cliente, em uma sessão de testes, fazendo requisições por, digamos 10 minutos, nunca conseguia fazer com que o cluster (nos primeiros testes somente um computador, o primário), chegasse próximo a 100% de uso da CPU. E não era porque o cliente era fraco, pois normalmente não exigia mais de 30% de CPU do cliente neste tipo de teste, enquanto que o cluster não chegava a 80%. Cheguei até a tentar virtualização com Xen para fazer com que um computador rodasse várias instâncias servidoras tentando obter o máximo de sua performance, mas não adiantou em nada. Para ilustrar mais um pouco e tentarem compreender o problema, se eu utilizasse 2 computadores clientes, cada um ocuparia no máximo 20% de sua CPU (média) durante 10 minutos de teste e o cluster, então, passava de 80%. Se no teste fosse utilizado 3 computadores clientes, cada um também usava em média 20% da CPU, mas então o cluster já era carregado a mais de 90%. Nunca entendi isto, procurei razões, gargalos de rede ou de entrada/saída, mas não encontrei.&lt;br /&gt;Estava na responsabilidade de conseguir computadores clientes, para meu cluster de 3 nós, que fossem capazes de "sugar" o máximo de sua capacidade e graças a Deus consegui isto para praticamente todos os meus teste, só um, entre diversas configurações de teste é que não consegui obter, com 3 computadores clientes, 100% de uso da CPU do cluster na configuração de 3 nós.&lt;br /&gt;Até agora ainda Java parece algo pouco irrelevante para o Trabalho de Conclusão, mas lá por maio ele tornou-se peça fundamental. Como nesta época eu já tinha o cluster funcionando (até tive que refazê-lo logo após usar xen, pois consegui destruir com todos os arquivos de configuração do primário), e estava sobrando tempo para algo a mais.&lt;br /&gt;Foi aí que meu orientador de TCC, Alexandre Timm, fez-me aceitar que o mais importante do meu TCC não era o cluster e sim as ferramentas para medição de performance que eu tinha iniciado como um instrumento simples para poder comparar os resultados em diversos tipos de configuração do cluster: 1 nós, 2 nós, 3 nós, entre outros detalhes, para apurar se realmente um cluster obteria alguma vantagem em relação a um computador só.&lt;br /&gt;Que ótimo que este modelo de cluster trazia bons resultados, imagina se eu tivesse perdido meses pesquisando e iniciado o projeto, comprado computadores para verificar que não servia pra melhorar a performance, no máximo para alta disponibilidade, eu teria ficado muito decepcionado.&lt;br /&gt;Era incrível, pois o cluster já tinha &lt;span style="font-style: italic;"&gt;failover &lt;/span&gt;e &lt;span style="font-style: italic;"&gt;failback &lt;/span&gt;funcionando. Era desligar o primário "na marra" que o secundário assumia suas funcões, a base de dados postgresql não ficava comprometida e somente a performance é que ficava diminuída. Colocava o primário no ar e este reassumia suas funções, atualizando em disco tudo aquilo que estava desatualizado (somente a partição da base de dados, que era a única coisa realmente mutante do cluster) era automagicamente atualizada e o cluster retomava sua capacidade máxima. Inclusive se um nó parasse de funcionar, o cluster reconhecia e se regulava.&lt;br /&gt;Voltando ao Java, passei então a aprimorar todos os componentes que estava utilizando, separando-os e melhorando a troca de informações entre eles. Eu tinha então:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;uma aplicação web rodando em cada nós do cluster;&lt;/li&gt;&lt;li&gt;uma aplicação cliente rodando em cada computador cliente&lt;/li&gt;&lt;li&gt;uma aplicação console que coordenava todos os computadores clientes, iniciando uma sessão de teste simultaneamente e obtendo e armezanando os resultados verificados pelos clientes&lt;/li&gt;&lt;li&gt;uma aplicação que chamei de gráficos para comparar resultados de testes&lt;/li&gt;&lt;/ul&gt;É tão extensa as possibilidade de configuração de "peso" por nó para um determinado tipo de processamento, que obtive resultados extraordinários entre um teste e outro, simplesmente mudando estes "pesos" (se realmente alguém estiver interessado posso disponibilizar meu TCC para isto, mas acredito que valha a pena somente para quem esta trabalhando com clusters mesmo).&lt;br /&gt;Aprendi muito sobre Java, tive que usar extensivamente Thread (algo que era totalmente obscuro pra mim), e confirmei que Java é uma ótima plataforma, mesmo em intensa carga jamais "arriou", no máximo apresentou problemas que eu custei muito a saber o que era, hehehe, mas por causa de um módulo de memória que pifou e fazia a aplicação web (na verdade o tomcat), simplesmente sumir da memória.&lt;br /&gt;Estava na transição entre Java 5 e Java 6, e mesmo sendo beta, utilizei Java 6 em praticamente todo o trabalho.&lt;br /&gt;Algo muito engraçado que ocorria era que em testes, distante do meu laboratório, um Athlon 64 3000+ com Debian Sarge, podia processar algo como 30% a mais de requisições que um Athlon 64 3500+ com Windows XP. Este Athlon 64 3000+ era o servidor (ainda é), de banco de dados da prefeitura e o Athlon 64 3500+ era o notebook do meu colega que jamais teve intenção de se ligar ao mundo livre e simplesmente ignorava-o por não lhe fornecer as ferramentas que ele precisava. Então, por causa disto, muitas e muitas vezes "arriava-me" nele por um "simples" Athlon 64 3000+ sem bem mais poderoso, com Linux, que seu ínfimo Athlon 3500+ com ruindous.&lt;br /&gt;Chegou o dia da apresentação do TCC para a banca e era, basicamente, demonstrar como fôra todo o planejamento e construção do cluster, bem como das ferramentas para medição de performance que tinham se tornado tão ou mais importante que o próprio cluster para o escopo do trabalho. Sempre tive muita dificuldade para falar em público, imagina na defesa do TCC!&lt;br /&gt;Minha namorada (na época, hoje noiva. TE AMO), levou uma filmadora para o local da apresentação, mas pedia a ela para não filmar, pois saberia que dificultaria mais ainda meu rendimento. Antes da demanda, a todo momento verificava se ela não estava tentando me enrolar, mas para minha surpresa, quando iniciei a apresentação foi como se minhas vistas se fechassem a tudo, só vinha a minha cabeça parcelas do meu trabalho ancoradas por tópicos de uma apresentação do OpenOffice.org Impress preparada para isto. Consegui consumir mais que 45 minutos e eu achava que poderia falar tudo em menos de 15. Aliás, seriam somente 15 minutos de apresentação por TCC se mais do que somente eu, formando, estivesse terminando a graduação naquele semestre.&lt;br /&gt;Ah! A Katy, sem que eu percebesse, fez toda a filmagem da apresentação e foi um sarro só rever minha performance. Como eu sou ruim de apresentação!&lt;br /&gt;Acredito que este relato sobre meu TCC, Gnu/Linux e Java termine por aqui, a não ser que me venha a cabeças mais algumas coisas interessantes que ocorreram neste período.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8686372888458202825?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8686372888458202825/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8686372888458202825&amp;isPopup=true' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8686372888458202825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8686372888458202825'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/2006-gnulinux-java-e-o-tcc-cluster_15.html' title='2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 005'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7446802147746410695</id><published>2008-01-11T07:24:00.000-08:00</published><updated>2008-01-11T09:18:51.841-08:00</updated><title type='text'>2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 004</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Enquanto eu não conseguia verba para comprar componentes e dispor de mais máquinas para exigir o máximo do cluster, comecei a desenvolver um centro de controle parar realização dos testes, o console, ele seria o responsável por controlar as máquinas clientes, fazendo com que elas iniciassem uma sessão de teste ao mesmo tempo, procurando obter resultados mais precisos possíveis para um intervalo de tempo, pois disparar cada clientes "a mão", mesmo que eu tivesse três braços para iniciar e parar três clientes, ainda assim acredito que alguns centésimos de segundos teria de diferença entre um teste e outro, o que ocasionaria diferenças de resultado que eu estava disposto a eliminar.&lt;br /&gt;Tudo parecia estar indo bem, já conseguia comandar os clientes através do console e neles eu apreciava em tempo real os tempos de resposta e o número de requisições atendidas por segundo. Mas como se sofre quando não se conhece os detalhes "ocultos" das tecnologias com que se trabalha, foi justamente o que ocorreu, quando eu não consegui colocar o cluster em carga máxima, ou seja, fazê-lo usar 100%, ou perto disto, da CPU, tua parecia bem, mas quando comecei a conseguir manter o uso de CPU em 100%, ocorria um efeito trágico, do nada, o cluster parava de responder e ficava um longo período sem processar nada. Isto era o fim! Tinha chegado num ponto em que não tinha a mínima idéia do que poderia estar acontecendo, a não ser por um pequeno detalhe que eu havia percebido, assim que eu terminei a aplicação web, reparava no gerenciador do tomcat, que a cada requisição que eu fazia à aplicação, uma nova sessão era criada. Minha primeira tentativa de contornar o problema foi diminuir ao máximo o tempo de &lt;span style="font-style: italic;"&gt;timeout&lt;/span&gt; da sessão, coloquei 1 minuto, que era o mínimo permitido, mas mesmo assim, com este tempo, não era possível evitar que o cluster "travasse" em determinado momento de muita carga. Insisti que poderia modificar, então, alguma coisa na aplicação web para que ela não iniciasse uma nova sessão a cada requisição, mas minhas tentativas foram em vão e eu estava certo que era pelo número acumulado de sessões abertas, pois consegui visualizar que quando chegava a um determinado número de sessões abertas era que o cluster travava. Não lembro como consegui chegar à solução, mas foi algo bem diferente do que eu pensava ser a solução, lembro que foi alguma coisa relacionada a configuração da máquina virtual, como incluir o parâmetro "-server" e algumas diretivas para &lt;span style="font-style: italic;"&gt;garbage collector&lt;/span&gt; operar em paralelo. Simplesmente o cluster passou a voar, consegui resolver o problema e de quebra ele processava muito mais requisições por segundo.&lt;br /&gt;Passada a grande frustação e o êxtase da solução, ainda pairava em mim uma desconfiança de que ainda não tinha chegado ao fim os problemas que pareciam "insolucionáveis", mas para minha grata surpresa, não lembro de ter passado por outro momento de tanta dificuldade quanto este.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-7446802147746410695?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7446802147746410695/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7446802147746410695&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7446802147746410695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7446802147746410695'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/2006-gnulinux-java-e-o-tcc-cluster_11.html' title='2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 004'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2285991438000557031</id><published>2008-01-10T12:07:00.000-08:00</published><updated>2008-01-29T18:04:30.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 003</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Que beleza, o cluster estava sendo construído, mas eu precisa poder testar sua capacidade de processamento e minha primeira ação neste sentido foi criar uma aplicação web para instalar no cluster. Esta aplicação web deveria ter que acessar uma base de dados para que simulasse uma aplicação real, que fizesse transações na base de dados, como consultas e gravações.&lt;br /&gt;Eu já tinha resolvido iniciar estudos em Java e na época estava brincando com Mentawai (http://www.mentaframework.org) para desenvolvimentos de aplicações J2EE (este seria meu framework MVC). Antes dele estava penando estudando Struts e depois Webwork2, mas não era nada fácil produzir algo em Java e ter que declarar um monte de coisas em XML. Com Mentawai era tudo muito mais "natural" para mim, logo consegui desenvolver a aplicação web para rodar em Tomcat no cluster (já havia desistido de usar apache, porque para meu projeto, o Tomcat iria servir bem).&lt;br /&gt;Beleza, a aplicação web rodando no cluster, eu acessava com Firefox, mas e como medir os tempos de processamento? Quantas requisições por segundo o cluster era capaz de processar. E se eu tivesse um cluster com 2 nós, 3 nós, ou mesmo um só computador, como eu iria obter resultados para comparação?&lt;br /&gt;Antes mesmo de procurar por uma ferramenta para medição de performance, atraquei-me no desenvolvimento de uma aplicação desktop (com swing, nesta época o matisse estava me salvando, por isto optei por desenvolvê-la em Java) para disparar requisições contra o cluster e obter os tempos de cada resposta. Estava bem legal, mas para minha surpresa, o computador cliente, que estava disparando as requisições ao cluster, retornava praticamente os mesmos valores, independente de utilizar 1, 2 ou 3 computadores no cluster (certos estamos de que 1 nós não seria um cluster). Rapidamente tive a idéia de monitorar o uso de CPU de cada nó durante uma sessão de processamento e foi aí que descobri que meu notebook com processador pentium IV de 2.8GHz não seria capaz de elevar o uso de CPU, nem mesmo o nó primário (um athlon 3000+) de cluster a 100%, ou seja, o cluster estava com folga, mesmo que eu utilizasse um só nó, eu deveria ter que utilizar mais computadores clientes e aí estava um grande problema. A muito custo consegui comprar mais dois "jogos" de gabinete, placa-mae, memoria, disco rígido e processador para, juntamente com meu PC (o primário) formar o cluster. Eita projetinho mal elaborado!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2285991438000557031?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2285991438000557031/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2285991438000557031&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2285991438000557031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2285991438000557031'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/2006-gnulinux-java-e-o-tcc-cluster_10.html' title='2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 003'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-3057430381852956833</id><published>2008-01-09T09:50:00.000-08:00</published><updated>2008-01-29T18:04:39.280-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 002</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Para que eu pudesse ter balanceamento de carga e cada nós rodando um servidor web, eu precisava da base de dados disponível para cada nó o mais imediato possível. Minha idéia era de que cada nós teria uma cópia da base de dados, até mesmo para auxiliar na tarefa de alta disponibilidade. O problema era sincronizar estes dados todos. Isto levou-me a pesquisar sobre sistemas de arquivo replicados em rede, como OCFS2 e GFS, pensando que nisto meu problemas de replicação de dados estariam resolvidos, mas não foi nem perto, depois de muito pelear com GFS, passei a utilizar OCFS2 com o auxílio de um de seus desenvolvedores e consegui colocá-lo em funcionamento, mas não havia forma de conseguir fazer o mysql de um nó enxergar os dados gravados pelo mysql de outro nó, deveria ser algo relacionado a cache que o mysql faz. Voltei para o GFS, já entendendo um pouquinho de replicação de dados em rede e consegui fazâ-lo funcionar. Ah! Esqueci de dizer que eu usava Debian e faria tudo em Debian.&lt;br /&gt;De tanto fuçar até que consegui fazer o mysql, às vezes, um nó enxergar os dados gravados por outro, mas tive que desabilitar tudo quanto é cache, não poderia usar transação (InnoDB) e até mesmo uns negócios de flush do disco rígido tive que configurar. Tentei até mesmo postgresql, mas depois de muito procurar, fiquei sabendo que um diretório que armazena uma base de dados não pode ser acessado por mais de um processo servidor postgresql ao mesmo tempo, ele usa umas travas e o servidor postgresql do segundo nós já não podia abrir a base.&lt;br /&gt;Estava tudo errado, eu queria uma solução de balanceamento de carga que não precisasse ser vinculada a um único fornecedor de banco de dados. Em conversa com o desenvolvedor do OCFS2, este até recomendou-me utilizar uma versão do banco de dados da Oracle com suporte nativo a replicação. Mas se fosse o caso usaria o mecanismo de replicação nativo do Mysql e não era minha intenção.&lt;br /&gt;Passaram-se quase dois meses de pesquisa intensa, até que resolvi que não replicaria a base de dados, todos acessariam do nó principal, o redirecionador, e por minha sorte, ao estudar sobre balanceamento de carga com LVS, "achei" o DRDB e meu problema de replicação de dados estava em partes resolvido. Embora eu pudesse somente ter uma cópia dos dados replicada em outro servidor, este era o modelo do meu cluster para alta disponibilidade, em caso de falha do redirecionador, um outro nó, previamente configurado, assumiria o papel daquele, usando os dados replicados, mas um pouco antes disto até tentei fazer com que o DRDB permitisse gravação em ambos nós, o primário e o secundário, mas não teve jeito, a versão de uso ainda não permitia que o secundário montasse a partição para escrita, somente, leitura, então abandonei de vez a idéia de a base sendo gravada por diversos nós, somente o redirecionador ou primário o faria.&lt;br /&gt;A partir disto, acredito que já era março, passei a implementar LVS e DRDB, para, por fim, Heatbeat e Keepalived. Não que eu tenha terminado em março, mas sim acredito que eu já havia conseguido descobrir todos os componentes de software livre eu precisaria para poder implementar o cluster e realmente as pesquisas feitas nestes dois primeiros meses (janeiro e fevereiro/2006), foram as responsáveis pelo êxito do projeto. Estas pesquisas deveriam ter sido feitas lá em 2004, mas na época eu não estava muito a fim de passar trabalho.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-3057430381852956833?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/3057430381852956833/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=3057430381852956833&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3057430381852956833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3057430381852956833'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/2006-gnulinux-java-e-o-tcc-cluster.html' title='2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 002'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6635313359850095211</id><published>2008-01-09T09:24:00.000-08:00</published><updated>2008-01-29T18:04:46.271-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 001</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Finalmente, no final de 2004 eu havia pensando em algo para o Trabalho de Conclusão de Curso que não fosse desenvolver um sistema. Resolvi que iria enfrentar a tarefa de desenvolver um cluster, afinal, não tinha conhecimento de que alguém no campus da Ulbra tivesse elaborado trabalho parecido e eu julgava-me competente para abraçar esta tarefa utilizando somente software livre.&lt;br /&gt;No início de 2005 apresentei o projeto à banca e a orientaçao do curso veio com a boa notícia de que estava aceito. A princípio, no projeto, especifiquei uma meia dúzia de requisitos para construir o cluster, acredito que eu tenha trabalhado 2 dias neste projeto, o que me fez ter certeza de que em um ou dois meses, utilizando open-mosix eu teria um cluster para rodar aplicações web rodando a milhão. Este foi meu maior erro durante o TCC.&lt;br /&gt;Resolvi que não cursaria o segundo semestre de 2005 e daria início ao TCC somente em 2006, o que efetivamente ocorreu. Chegou então Janeiro de 2006 e tirei para começar a estudar, novamente, open-mosix e algumas coisas a mais que seriam necessárias para construi este cluster, ainda nem estava pesando onde arranjaria os computadores para montar este cluster.&lt;br /&gt;Lia Pitanga falando dos tipos de cluster e foi então que caiu a ficha. Um cluster open-mosix não serviria para aplicações web com apache! Ele era voltado para cálculos paralelizados, utilizando bibliotecas em C para criação do programa a ser paralelizado, era um cluster do tipo de alta performance. Eu definitivamente não queria aceitar que não daria para rodar apache, bem mais rápido, com open-mosix, mas tudo que eu lia era afirmando que não trazia vantagens e que no máximo eu teria que usar um esquema de cache de memória sei lá das quantas... Bom, tive que abandonar open-mosix, o que não poderia ser diferente.&lt;br /&gt;Passei então a estudar o domínio do problema, o que deveria ter feito lá em 2004 com mais vontade. Cheguei então ao tipo de cluster para balanceamento de carga e alta disponibilidade. Em termos de resultado, o de balanceamento de carga daria para mostrar em gráficos as diferenças no número de requisições concluídas pelo cluster em um terminado tempo. Mas ao mesmo tempo achei muito interessante uma solução de alta disponibilidade para um ambiente como o da Prefeitura. Pronto, estava resolvido, modifiquei um pouco a proposta e reapresentei, agora citando cluster para balanceamento de carga e alta disponibilidade. Mas isto não era nada do que eu eu iria passar ainda.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6635313359850095211?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6635313359850095211/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6635313359850095211&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6635313359850095211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6635313359850095211'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/2006-gnulinux-java-e-o-tcc-001.html' title='2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 001'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-5952346410969179233</id><published>2008-01-09T08:30:00.000-08:00</published><updated>2008-01-29T18:04:55.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>A procura e o encontro: Java</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;No final de 2003, o Baboo e eu criticávamos o Fabiano. Éramos colegas de faculdade naquela época. Nós defendíamos vorazmente PHP e o Fabiano o Java, com seus argumentos principais de que com PHP os projetos não eram normalmente orientados a OO e que os programadores Java usualmente ganhavam bem mais que os programadores PHP que poderiam ser encontrados em qualquer boteco.&lt;br /&gt;Em meu íntimo estava disposto a continuar com PHP de toda a forma, não querendo render-me a vontade de iniciar a aprendizagem em uma nova plataforma.&lt;br /&gt;Mas o destino como sempre, fez com que no final de 2004, o Fabiano já formado e mestrando na PUC viesse dar aula na disciplina de Tópicos Avançados em Sistemas de Informação I (só por curiosidade, TASI II eu havia cursado um ano antes, era pra estudarmos XML, mas acabamos estudando PHP), onde foi feito uma abordagem básica de J2EE.&lt;br /&gt;Fiquei interessado e também "obrigado" a aprender J2EE e gostei. Embora pra começar um projeto Web em Java demandasse 6 horas de preparação até conseguir fazer um "Hello World!" e as declarações de todos os servlets em web.xml, achei realmente interessante, acho que muito mais por estar finalmente desenvolvendo em Java. Como tarefa para o final do semestre, cada aluno apresentou um framework diferente e coube a mim, o Struts.&lt;br /&gt;Nesta mesma época, eu estava pensando em uma área de estudo para desenvolvimento do meu trabalho de conclusão e ingenuamente eu acreditava que poderia construir algo como um framework em PHP para desenvolvimento mais rápido de sistemas, sem precisar utilizar frames de HTML e que utilizasse templates como Smarty, acredito que seria algo parecido com MVC (mas mesmo quase concluindo o curso de Sistemas de Informação, jamais havia ouvido falar de MVC). Bom, após estudar e apresentar um pequeno exemplo do funcionamento de Struts vi que a tarefa de criar aquele framework em PHP estava além do meu alcance e abandonei de vez aquela idéia e, também, o PHP.&lt;br /&gt;Passei então a dedicar-me ao aprendizado de Java, principalmente para aplicações desktop, mas não conseguia evoluir, porque antes do matisse era muito complicado desenvolver interfaces e eu novato, não conseguia fazer nada, ficava brincando, então com J2EE.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-5952346410969179233?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/5952346410969179233/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=5952346410969179233&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5952346410969179233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/5952346410969179233'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/procura-e-o-encontro-java.html' title='A procura e o encontro: Java'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-4733897335579771035</id><published>2008-01-07T07:10:00.000-08:00</published><updated>2008-01-29T18:05:07.928-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>À procura de uma plataforma de desenvolvimento livre 003</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Foi então que em 2002 pensei ter encontrado a solução, não que esta não poderia ter sido a minha solução, comecei a dedicar-me a PHP. Neste mesmo ano, Rasmus Lerdorf, o criador do PHP palestrou no FISL e fiquei encantado com a possibilidade de desenvolver para a web, pois era outro bonde que eu já estava quase perdendo, primeiro o GUI e agora a web. Comecei a produzir tudo que podia de programinhas em PHP, inclusive os que seriam mais simplesmente implementados em Delphi ou mesmo CLIPPER. Como PHP lembrava-me os tempos de CLIPPER com sua produtividade e sem precisar ficar arrastando componentes, o problema era o HTML, pois com minha enorme criatividade, meus melhores layouts seriam dignos da exclamação "Nossa que horrível!". Tirando este contratempo, produzia e produzia com PHP, sua facilidade em acessar minha base de dados em mysql (outro que sofri pra quebrar o paradigma, mas isto seria outra história).&lt;br /&gt;Mas algo ainda parecia não estar certo, não me parecia correto produzir tudo para a web. E os sistemas de entrada massiva de dados que o ideal seria uma aplicação console (embora eu relutasse e sempre me "esmurrava" para acreditar que em GUI também poderia ser bom)? Como fazer uma aplicação simples e rodar em um Pentium 133 com 32MB de RAM se eu teria que instalar no computador do cliente um servidor mysql e um servidor http? Coitado de alguns clientes que tiveram que aceitar estas soluções, mas eles já não sofrem mais pois tenho certeza de que não utilizam mais aqueles programinhas que fiz (normalmente produzia de forma quase que gratuita, pois hoje eu vejo que cobrar R$ 50,00 ou R$ 100,00, ainda que em 2002 era piada, mas eu sempre aceitava que isto estava ajudando no meu desenvolvimento pessoal - e porque não?).&lt;br /&gt;Mas não dava não, mysql e apache em 32 MB de RAM não dava. Volta e meia produzia novamente em Delphi, pois rodava e bem de 486 com 32MB de RAM pra cima e mais alguns aninhos se passaram.&lt;br /&gt;Já em 2004 o problema de pouca RAM parecia no passado, mas eu continuava relutando em ter que instalar "trocentos" servidor só pra ter que rodar um simples programa no computador do cliente.&lt;br /&gt;Desde 1997 eu já estava ouvindo falar de Java e que rodava em qualquer browser e que era totalmente orientado a objetos (depois alguns já diziam que não era totalmente, algumas coisas faltavam), mas antes de 2001/2002 eu não vislumbrava desenvolver para a web, torcia para que fosse só moda sistemas rodar em web, páginas sim, sites de e-commerce, mas não sistemas, por favor! Antes de começar a aprender C nem pensava em Java, pois diziam ser o dialeto C e ainda orientado a objetos, fora que não tinha uma IDE RAD, tipo Delphi, "sem jeito, tô fora" eu pensava, como iria produzir alguma coisa assim? Havia uma galerinha (poucas pessoas) na faculade que eram mais abastados e tinham bons computadores, em casa ou no trabalho e podia testar novas tecnologias, alguns até relatavam que estava desenvolvendo em Java usando uma IDE sei lá o quê da Symantec, só que era muito lento. Eu já tinha feito um &lt;span style="font-style: italic;"&gt;upgrade&lt;/span&gt; no meu PC, agora ele era um Pentium 100 não com 16MB de RAM, já devia estar com uns 96MB, mas não tinha jeito, Java era muuuuuito lento e não tinha vontade nem de aprender, até discutia com uns colegas, mas isto já lá por 2003/2004 que o negócio mesmo era PHP, que Java não era produtivo e sei lá mais o quê (e isto que eu nunca tinha produzido nem um Hello World em Java).&lt;br /&gt;Mas é a vida! Vinha um Fórum de Software Livre e dizia que C++ era o canal pra se desenvolver com QT e lá eu ia eu codificar e codificar durante uns 3 meses, depois ja era C com GTK, depois era PHP com GTK, depois já era Python. Lembro que Python foi interessante, saí da palestra achando que finalmente o mundo estava salvo, para Python tudo era objeto, inclusive um "a".upper() dava pra se fazer. Mas era tudo tão difícil, não digo aprender a linguagem, mas ser produtivo era o problema.&lt;br /&gt;O pessoal do Mono, então, praticamente monopolizou um FISL e, embora olhando meio estranho por se tratar de uma implementação livre de tecnologia Microsoft, achei interessante poder ter &lt;span style="font-style: italic;"&gt;bindings&lt;/span&gt; atualizados, pois PHP GTK era um caso em que não podia usar as mais recentes características do GTK. Nesta época já contava com uma pequena experiência em Java e pude notar o quanto C# (que havia sido a linguagem que eu queria adotar por contemplar de toda a capacidade do framework) era parecido com ela. Não evolui em nada com Mono, até porque não gostei da idéia de ter que usar Glade pra produzir interfaces e codificar em outro editor, não era tão produtivo quanto Delphi ou CLIPPER e definitivamente eu não iria mais programar em uma plataforma de desenvolvimento que eu tivesse que pagar para utilizá-la e Java e Mono eram gratuítas e livre respectivamente.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-4733897335579771035?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/4733897335579771035/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=4733897335579771035&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4733897335579771035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4733897335579771035'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/procura-de-uma-plataforma-de_1471.html' title='À procura de uma plataforma de desenvolvimento livre 003'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-8579808442424045567</id><published>2008-01-07T06:52:00.000-08:00</published><updated>2008-01-29T18:05:34.607-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free and open source software'/><title type='text'>À procura de uma plataforma de desenvolvimento livre 002</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;À deriva, passei a utilizar linux com mais freqüência, a partir de 1999 e procurei estudar C, apesar de saber que seria humanamente impossível ser um bom desenvolvedor nesta linguagem, isto era coisa pra heróis.&lt;br /&gt;Estava achando interessante, embora totalmente improdutivo, eu conseguia desenvolver pequenos exercícios e estava achando interessando o quanto realmente C era rápido em relação ao MAX (um tipo de CLIPPER para linux que era utilizado pelo sistema de informações da prefeitura de Terra de Areia). Cheguei a produzir uma extensão extra-oficial e anexei ao sistema da CCA (empresa produtora deste sistema de informações), para realizar uma pré-impressão e foi aí que percebi o quanto C era rápido, pois desenvolvi esta mesma extensão em MAX e era muito lenta.&lt;br /&gt;Estudei um pouco de ncurses e cheguei um chat usando cabo serial (como é fácil fazer comunicação serial em linux). Meus colegas se abobaram, de certo pensaram que eu não tinha dormido por 3 semanas para poder concluir este projeto, ainda mais que eu tinha usado C e linux. Enquanto que a maioria fez o mesmo trabalho em Visual Basic. Mas não dava, C continuava a ser muito improdutivo, estava estudando como trabalhar com postgresql em C e era tudo de outro mundo.&lt;br /&gt;Voltei para o Delphi para poder produzir alguns coisinhas e por aí fiquei, embora sempre com uma preocupação na cabeça. Apareceu até um tal de Kylix e eu achei que fosse a "salvação da lavoura", pois poderia, enfim, desenvolver aplicações GUI tanto para Windows quanto para Linux usando a minha pequena formação em Delphi, mas foi somente um sonho, porque, pra começar, o Kylix era feio pacas, aquelas interfaces criadas por ele eram horrível, além de muito lento.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-8579808442424045567?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/8579808442424045567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=8579808442424045567&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8579808442424045567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/8579808442424045567'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/procura-de-uma-plataforma-de_07.html' title='À procura de uma plataforma de desenvolvimento livre 002'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-6876174646781127129</id><published>2008-01-07T06:31:00.000-08:00</published><updated>2008-01-29T18:07:38.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free and open source software'/><title type='text'>À procura de uma plataforma de desenvolvimento livre 001</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;À época em que eu me dedicava de corpo e alma ao desenvolvimento em CLIPPER, nunca pensara nas questões relativas ao licenciamento de software, pensava sim, sempre, em uma forma de poder cobrar de meus clientes por meus softwares utilizados, mas nem me passava pela cabeça que deveria ter que pagar a alguém por estar utilizando o meu adorado CLIPPER (Ah! nesta época eu ainda não tinha computador, utilizava ainda o computador do escritório em que eu trabalhava). Em 1997, quando cravei minhas garras no meu primeiro computador e já sabia, então que havia uma empresa que monopolizava tudo e que me obrigava a pagá-la pra poder utilizar o meu computador, passei também a procurar alternativas ao CLIPPER para poder começar a desenvolver, como diziam, &lt;span style="font-style: italic;"&gt;for Windows&lt;/span&gt;.&lt;br /&gt;Em 1996, recebi umas 3 edições de uma revista sobre CLIPPER e eles indicavam que Delphi seria uma boa alternativa aos desenvolvedores CLIPPER em detrimento ao Visual Basic, para desenvolvimento &lt;span style="font-style: italic;"&gt;for Windows&lt;/span&gt;. Certamente que fui induzido pelos mestres autores daquela revista de que o Borland Delphi era a escolha ideal para mim, ainda mais, para mim, que não era fabricada pela demoníaca Microsoft.&lt;br /&gt;Em 1997, continuava, ainda, a desenvolver muito em CLIPPER, pois mesmo achando que eu estava ficando para trás e que o mundo todo já era GUI, eu gostava mesmo era de CLIPPER e tinha "domínio" nesta plataforma, mas meu ingresso na Ulbra (curso de processamento de dados) e o contato com Delphi 2 instalado no laboratório de informática e também do horripilando Visual Basic, começaram a aguçar minha curiosidade. Um semestre antes de iniciar a disciplina de linguagem de programação I, que abordaria Pascal, eu já estava lendo um livro sobre Pascal para preparam-me para a demanda. Pascal era bem pior que CLIPPER, era muito limitada, mas diziam ser tão rápida quanto C (o que me deixava ansioso para aprendê-la, pois para mim os programadores C sempre foram meus ídolos e heróis).&lt;br /&gt;Conclui a disciplina de linguagem de programação I e passei a futricar em Delphi 2, mas foi em Visual Basic que desenvolvi meus primeiros estudos mais avançados em GUI graças à disciplina de linguagem de programação comercial II (como é o destino!!!). Ah! O interessante é que em linguagem de programação comercial I aprendemos... tchã tchã tchã tcha... CLIPPER! Eu peguei um sisteminha meu e estava com o trabalho final do semestre, que valia toda a nota, prontinho.&lt;br /&gt;Depois destas experiências, de dedicar-me ao Delphi 3 e depois ao Delphi 4, algo incomodava-me muito. Descobrira que para cobrar de meus clientes e para que os programas desenvolvidos por mim fossem legais eu deveria ter uma licença (paga) para o Borland Delphi, ou seja, não poderia usá-lo pirateado e cobrar. Minha vida tinha virado um inferno e passei a andar sem destino no mundo.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-6876174646781127129?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/6876174646781127129/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=6876174646781127129&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6876174646781127129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/6876174646781127129'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/procura-de-uma-plataforma-de.html' title='À procura de uma plataforma de desenvolvimento livre 001'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-1767659072331083865</id><published>2008-01-04T07:57:00.000-08:00</published><updated>2008-01-29T18:06:26.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fisl'/><category scheme='http://www.blogger.com/atom/ns#' term='free and open source software'/><title type='text'>1º FISL - 1999</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.oreillynet.com/oscon2002/graphics/jc5_01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 242px; height: 386px;" src="http://www.oreillynet.com/oscon2002/graphics/jc5_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Na época, eu não podia imaginar o quanto seria motivante assistir a uma palestra do Stallman, mesmo já sabendo (apenas em poucos detalhes), das histórias que se desenrolaram durante o desenvolvimento da comunidade de software livre e os dragões e trolls que o Saint enfrentou em suas aventuras.&lt;br /&gt;Sem saber nada de inglês, grudei-me naquele fone do rádio e ouvia a tradução e rindo com defasagem de uns 5 segundos em relação a 80% da platéia, encantava-me&lt;br /&gt;com as boas-novas que este senhor nos trazia.&lt;br /&gt;Antes de vê-lo, assim como os escoceses acreditavam que&lt;br /&gt;William Wallace tinha 3 metros de altura e duas cabeças, acreditava que Stallman fosse um homem alto, magro, embora de cabelos e barba comprida, de porte executivo, mas não, para minha agradável surpresa, além de ser um hacker, ele parecia um hacker. Se até então eu via o movimento do software livre/código aberto pela perspectiva da gratuidade, diversão, liberdade e ideologia, agora minha ótica já era, ideologia, liberdade, diversão e gratuidade.&lt;br /&gt;Sei que existem muitas e muitas pessoas que pensam diferente de mim, assim como Stallman e Torvalds também tem suas diferenças e estão entre os maiores ícones deste mundo livre.&lt;br /&gt;Foi um evento impressionante, através do Alex, chefe do setor de informática da FAMURS na época, pude apresentar-me ao Sr. Sandro presidente da Conectiva, que era o orgulho dos brasileiros.&lt;br /&gt;Eu enxia tanto o saco do Alex para que fizesse eventos às prefeituras, relacionado a software livre que acabei sendo conhecido como o cara do Linux para ele, pois até então quase não se pensava em software livre na administração público, por nenhum motivo, até porque era tudo pirata, qual a diferença de se regularizar se tudo estava "funcionando"?&lt;br /&gt;Para o bem do Brasil isto tudo mudou e hoje estamos na vanguarda do desenvolvimento e uso de software livre. Meu desejo é de que não desçamos deste bonde e possamos ajudar a conduzir o mundo para um momento em que possamos ter cada vez mais liberdade e que nossos computadores passem a ser respeitados, por usarmos só software "do bom", ou seja, livre.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-1767659072331083865?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/1767659072331083865/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=1767659072331083865&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/1767659072331083865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/1767659072331083865'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/1-fisl-1999.html' title='1º FISL - 1999'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-3582552182229460425</id><published>2008-01-03T08:02:00.000-08:00</published><updated>2008-01-29T18:06:40.384-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='historia'/><title type='text'>1994 e o Linux</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Até hoje não tenho certeza, se foi em 1994 ou 1995 que li pela primeira vez uma notícia sobre o Linux, acredito que foi em 1994, pois em 1995 eu já assinava a revista Informática Exame.&lt;br /&gt;Fiquei maravilhado! Foi em uma edição desta revista, onde em menos de meia página, exaltavam um sistema operacional baseado em Unix para ser usado em PC e que era muito mais poderoso do que o limitado MS-DOS. Diziam que um determinado professor era o responsável por disponibilizar na internet o sistema produzido por um jovem estudante universitário finlandês. Aquilo pra mim era uma notícia salvadora, pois nesta época já abominava o monopólio e a figura do Mr. Gates (sinceramente não sei porque nasceu este sentimento, pois pouco conheço e conhecia sobre a figura deste Sr.). Diziam lá, também, que este sistema operacional, o Linux, podia ser instalado a partir de uma pequena quantidade de disquetes e que um ambiente gráfico também poderia ser instalado a partir de outra pequena quantidade de disquetes.&lt;br /&gt;&lt;br /&gt;Imaginem que fiquei muito contente com a notícia e nem ao menos eu tinha um computador. Usava somente o do escritório de contabilidade onde trabalhava e programava somente longe dos olhos do patrão. Era muita adrenalina!&lt;br /&gt;&lt;br /&gt;Depois disto, não lembro mais de ver novamente notícias sobre Linux, mas nunca esqueci que ele existia. Fiquei impressionado com a idéia de que era um sistema grátis e que todos podiam usar sem precisar pagar licenças e que eu podia ver o código e alterar (embora eu tivesse a plena consciência de que entender o código de um sistema operacional era coisa pra extraterrestres)&lt;br /&gt;&lt;br /&gt;Em 1997, finalmente, adquiri meu primeiro computador, já no mês de janeiro. Passei vários meses fuçando, formatando e instalando windows versão 95, depois versão 98. Neste ano de 1998 foi que tive, então, minha primeira experiência salvadora, adquiri um livro de título parecido com "Como montar um provedor de internet" e com ele, acompanhava um CD de instalação da distribuição Slackware que não lembro a versão. Incrivelmente consegui particionar meu disco rígido e instalar o sistema e deixá-lo funcional sem perder dados!&lt;br /&gt;&lt;br /&gt;Nesta época eu gostaria muito de iniciar um negócio e parecia que um provedor de internet seria algo promissor, mas meu maior interesse é que eu teria internet pra uso próprio, pois naquela época só podia acessar por interurbano pra Porto Alegre ou através de um 0800 do SBT Online que permitia até 10 minutos de navegação gratuíta, a cada ligação, durante um bom tempo. Também participávamos de feiras de informática em Porto Alegre e catávamos tudo quanto é disquete de instalação de provedores que davam 30 dias de acesso grátis&lt;br /&gt;&lt;br /&gt;Não sei de que forma, mas conheci e comprei um livro de título parecido com "Linux Primeiros Passos" que vinha com uma distribuição chamada Caldera, pois tava complicado entender como funcionava o Slackware e eu estava querendo saber de tudo que podia sobre linux. Esta foi a distro mais estranha com que me deparei, embora lembre que consegui instalar facilmente, inclusive tinha um servidor X (se não me engano Metro X) que me ofertou um ambiente gráfico funcional.&lt;br /&gt;&lt;br /&gt;Por fim, neste biênio 97-98, procurando por Linux na internet, fiquei sabendo da Conectiva, empresa brasileira que tinha uma distro baseada em RedHat que se chamava Marumbi. De cara comprei estes CDs através do site, nem lembro como foi feito o pagamento. Aliás, eu já estava doido pra que pudesse comprar de tudo que eu precisasse pela internet, só que não existia este serviço ainda, se eu fosse inteligente tinha criado um e-commerce e ficado rico hehehehe :-), mas minha satisfação sempre foi trabalhar com a tecnologia e não tinha um bom "tino" pra negócios.&lt;br /&gt;&lt;br /&gt;Sendo assim, 1998 representa minha entrada definitiva para um mundo muito mais maravilhoso e livre, embora eu lembre teve um período de uns 6 meses em que fiquei sem utilizar Linux, não tenho certeza, mas acho que foi por falta de motivação, mas a partir da versão 5.0 da Conectiva, passamos a utilizá-la no CPD da Prefeitura (meu local de trabalho, como funcionário, atual) no servidor e então jamais me distanciei.&lt;br /&gt;&lt;br /&gt;Gente, desculpem novamente as longas historinhas.&lt;br /&gt;&lt;br /&gt;Um grande abraço a todos&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-3582552182229460425?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/3582552182229460425/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=3582552182229460425&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3582552182229460425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/3582552182229460425'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/1993-e-o-linux.html' title='1994 e o Linux'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-4034378315013638407</id><published>2008-01-03T07:30:00.000-08:00</published><updated>2008-01-29T18:07:25.035-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='historia'/><title type='text'>Historinhas pra boi dormir. Parte 003!</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Quero começar a postar alguma coisa sobre software livre desde já para que eu tenha chance do Augusto citar meu blog no &lt;a href="http://br-linux.org/"&gt;br-linux.org&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt;Brincadeiras a parte, gostaria de concluir minha saga pré-software livre, para então, dedicar-me de corpo e alma ao mundo livre.&lt;br /&gt;&lt;br /&gt;Não sei se acontece com muitas pessoas, mas até eu concluir o segundo-grau, sempre tive como referência temporal dos acontecimentos, também a série/ano escolar. Acredito que os acontecimentos começaram a tornar-se relevantes em minha memória a partir de 1985:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Primeira série 1985 - voltei a morar em Tramandaí&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Segunda série 1986 - Copa do Mundo no México, Brasil derrotado pelos franceses&lt;/li&gt;&lt;li&gt;Terceira série 1987 - fui morar em Itati&lt;/li&gt;&lt;li&gt;Quarta série 1988 - Olimpíadas de Seul&lt;/li&gt;&lt;li&gt;Quinta série 1989 - voltei a morar em Terra de Areia, minha cidade atual&lt;/li&gt;&lt;li&gt;Sexta série 1990 - Copa do Mundo na Itália, Brasil sofre derrotado para o Maradona e Canija&lt;/li&gt;&lt;li&gt;Sétima série 1991 - null. Só pra citar então, passei a conseguir me habituar a escola que já estava a 3 anos&lt;/li&gt;&lt;li&gt;Oitava série 1992 - Olimpíadas de Barcela, só lembro que foi muit legal&lt;/li&gt;&lt;li&gt;Primeiro Ano 1993 - Escola nova, particular, cursava contabilidade&lt;/li&gt;&lt;li&gt;Segundo Ano 1994 - Copa do Mundo nos EUA, finalmente o Brasil brilha pela estrela de Romário&lt;/li&gt;&lt;li&gt;Terceiro Ano 1995 - Grêmio bi da Libertadores e finalmente formado!&lt;/li&gt;&lt;li&gt;1996 - ingressei no curso de Processamento de Dados (sendo que foi extinto e passei ao curso de Sistemas de Informação), na Ulbra. Grêmio bicampeão Brasileiro e Olimpíadas de Atlanta (foi a que mais assisti seus eventos pela TV, pois estava de férias)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1997 - Grêmio tricampeão da Copa do Brasil&lt;/li&gt;&lt;li&gt;1998 - Copa do Mundo e novamente o Brasil perde pra França&lt;/li&gt;&lt;li&gt;1999 - null&lt;/li&gt;&lt;/ul&gt;Bom, desculpem a longa lista e paro no ano de 1999, depois disto minhas referências temporais ficam mais esparsas. Como podem notar sempre gostei de esportes e vinculei os acontecimentos a estes eventos ou títulos. Mas quero deixar registrado em separado os maiores de todos os momentos de minha vida até agora:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;05 de janeiro de 2005, iniciou-se minha relação com a Katy&lt;/li&gt;&lt;li&gt;09 de dezembro de 2007, selamos nosso noivado (com direito a pedido surpresa :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Agora, vamos às tecnologias de software livre!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-4034378315013638407?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/4034378315013638407/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=4034378315013638407&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4034378315013638407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/4034378315013638407'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/historinhas-pra-boi-dormir-parte-003.html' title='Historinhas pra boi dormir. Parte 003!'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7709623482817505906</id><published>2008-01-03T06:28:00.000-08:00</published><updated>2008-01-29T18:06:54.010-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='historia'/><title type='text'>Historinhas pra boi dormir. Parte 002!</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Já que estou aqui, "quente" da última postagem, porque não continuar?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;"Você suspira pelo dia em que os homens eram homens e escreviam seus próprios drivers de dispositivos?" (Torvalds, acredito que em 1991. Fonte http://www.eduardostefani.eti.br/index.php?acao=verartigo&amp;amp;warLink=./artigos/art0020.php)&lt;br /&gt;&lt;br /&gt;Não sou desta época, o que não significa que eu não era homem! :-) Ainda sou novinho perto desta turma maravilhosa, que embora distantes gerações (Stallman a Linus, só para ilustrar), tenham feito deste mundo um lugar melhor para se viver, pelo menos para nós, fuçadores de computadores e amantes da liberdade.&lt;br /&gt;&lt;br /&gt;Quando iniciei era tudo muito mais fácil (é como consigo ver hoje). Só havia CLIPPER e MS-DOS, mas isto não significa que eu tenha iniciado meus contatos com computadores lá na década de 1980, foi exatamente em 1994, mas como moro em um pequena cidade do interior do RS, as novidades (US$ 8-|), custavam muito a chegar.&lt;br /&gt;&lt;br /&gt;Aliás, antes do CLIPPER, na verdade nosso contato maior (nosso digo dos 4 ou 5 programadores de minha cidade), foi com dBase ou FoxBase, para depois "evoluirmos" para o CLIPPER Summer'87, 5.0 e, finalmente, 5.2.&lt;br /&gt;&lt;br /&gt;Que época de ouro, lembro-me que ficava fascinado por saber que conseguia, depois de uns 2 anos de prática, achar que sabia decor todos as funções da biblioteca básica do CLIPPER e pensar que poderia codificar qualquer tipo de processamento em algorítmo. Eu tinha nesta época 17 anos. E é verdade que em muitos momentos prestei uma grande ajuda em alguns algorítmos cabeludos para meu chefe Amaury Hertzog, a quem eu tenha uma grande gratidão por concluir que foi o principal responsável por eu poder trabalhar com tecnologia, e ao amigo Arno que muitas vezes pude olhar seus códigos em poucos minutos e dizer-lhe uma solução para o qual ele estava a horas procurando.&lt;br /&gt;&lt;br /&gt;Bom, antes que pensem "iii, agora começou a se achar, se dizendo o &lt;span style="font-style: italic;"&gt;Master of Universe&lt;/span&gt; do CLIPPER", era porque na verdade, pelo menos em 99% das vezes eram coisas simples, mas que nós, programadores de meia-tigela, que não tínhamos noção nem do ABC de lógica, penávamos pra resolver. Por isto reitero que hoje vejo o quanto éramos ingênuos, pois na verdade estávamos engatinhando quando se tratava de programar computadores, mas nem por isto repito que foi uma época mágica, pois podíamos tudo.&lt;br /&gt;&lt;br /&gt;Não posso esquecer de citar meu colega de trabalho, Fabiano, que desde cedo tinha um espírito empreendedor, era da tecnologia, mas acredito que seu maior dom sempre foi fazer negócios, pelo menos ele transparecia isto, ou seja, a finalidade da tecnologia pra ele era alavancar negócios, assim como é hoje para a maioria das pessoas, mas eu, como adolescente e fuçador, achava fascinante trabalhar com a tecnologia, muito mais do que gerar negócios com ela.&lt;br /&gt;&lt;br /&gt;Até logo&lt;br /&gt;&lt;br /&gt;[]'s&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-7709623482817505906?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7709623482817505906/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7709623482817505906&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7709623482817505906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7709623482817505906'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/historinhas-pra-boi-dormir-parte-002.html' title='Historinhas pra boi dormir. Parte 002!'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-7197598570156835404</id><published>2008-01-03T06:14:00.000-08:00</published><updated>2008-01-29T18:07:09.990-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filosofia'/><title type='text'>Historinhas pra boi dormir. Parte 001!</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Incrivelmente passa-me na idéia que uma pequena quantidade de pessoas possa vir a acompanhar minhas postagens, embora minha razão faça-me entender que eu esteja sendo um tanto otimista :-)&lt;br /&gt;&lt;br /&gt;Neste espaço algumas pessoas poderão conhecer um pouquinho sobre o que/como penso e em que trabalho. Aliás, acredito que somente minha adorada noiva, amor da minha vida e futura esposa, Katy, possa interessar-se, pois é ela quem demonstra prazer em "usar" seu precioso tempo comigo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eis minha mais preciosa riqueza!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8nEuFZlTAlY/R3zwiKvNxzI/AAAAAAAAAAM/TGTwgNUTMFM/s1600-h/katy01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_8nEuFZlTAlY/R3zwiKvNxzI/AAAAAAAAAAM/TGTwgNUTMFM/s320/katy01.jpg" alt="" id="BLOGGER_PHOTO_ID_5151256543593613106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;i&gt;Uma deusa, uma louca, uma feiticeira, meu Deus ela é D+&lt;/i&gt;&lt;/span&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/2409603809791857047-7197598570156835404?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/7197598570156835404/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=7197598570156835404&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7197598570156835404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/7197598570156835404'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/historinhas-pra-boi-dormir-parte-001.html' title='Historinhas pra boi dormir. Parte 001!'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8nEuFZlTAlY/R3zwiKvNxzI/AAAAAAAAAAM/TGTwgNUTMFM/s72-c/katy01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2409603809791857047.post-2244548978237733915</id><published>2008-01-02T09:30:00.000-08:00</published><updated>2008-01-29T18:07:17.653-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filosofia'/><title type='text'>Mundo novo, ano novo!</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;À aurora deste novo ano, antes de tudo, fica a gratidão a Deus e a todos que fizeram de 2007 um ano maravilhoso e o desejo de que 2008 seja, no mínimo, melhor!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2409603809791857047-2244548978237733915?l=meumaravilhosomundolivre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://meumaravilhosomundolivre.blogspot.com/feeds/2244548978237733915/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2409603809791857047&amp;postID=2244548978237733915&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2244548978237733915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2409603809791857047/posts/default/2244548978237733915'/><link rel='alternate' type='text/html' href='http://meumaravilhosomundolivre.blogspot.com/2008/01/mundo-novo-ano-novo.html' title='Mundo novo, ano novo!'/><author><name>Flávio Menezes dos Reis</name><uri>http://www.blogger.com/profile/00684329679683679951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp2.blogger.com/_8nEuFZlTAlY/R355UavNx1I/AAAAAAAAAAY/Ls91RJcQVmQ/S220/404639.jpg'/></author><thr:total>1</thr:total></entry></feed>
