<?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-8312361233856668827</id><updated>2012-01-28T19:03:52.145-04:00</updated><category term='linux'/><category term='linux dns'/><category term='dicas'/><category term='javascript'/><category term='olpc'/><category term='Brasil'/><category term='mac os x'/><category term='e-books'/><category term='wow'/><category term='videogames'/><category term='educação'/><category term='programação'/><category term='windows 7'/><category term='invasores'/><category term='firefox'/><category term='fotografia'/><category term='bootcamp'/><category term='ferramentas'/><category term='python'/><category term='multiprocessamento'/><category term='python dicas'/><category term='windows'/><category term='linguagens'/><category term='informática'/><category term='ubuntu'/><category term='piadas'/><category term='svn'/><category term='humor'/><title type='text'>JungleCoders</title><subtitle type='html'>Tecnologia vista por amazônidas fanáticos, maníacos por tecnologia.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.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-8312361233856668827.post-3356396186634334833</id><published>2011-06-04T16:51:00.000-04:00</published><updated>2011-06-04T16:51:04.915-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>A Era do Javascript</title><content type='html'>Meus primeiros contatos com Javascript datam de uma época distante, onde o Netscape era o mais popular browser da Internet! Eu usava um servidor Sun e estudava um produto chamado Netscape One, que vinha com uma tecnologia de script do lado servidor chamada de LiveScript. Ela já era também disponível no browser, mas não prestava para muita coisa na época. As tecnologias quentes eram o CGI e o SSI. Eu me interessava também pela novidade do momento, a tal de PHP 3 ! Se minha memória não falha, estou falando do período de 95 a 98.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Tecnologias como Java Applets nunca "pegaram", sempre foram consideradas lentas demais, pesadas demais. Já com o Javascript, além de lento, não se podia fazer muita coisa. A maior parte dos trabalhos se limitava a validação de campos e tarefas menores com strings e datas. Jogos em Javascript, só de forca e da velha. Nessa época eu escrevia CGI's em C++ e lembro da magia que foi aprender a programar em Perl.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Javascript nunca foi uma linguagem "seria" até alguns anos atrás, quando ficou impossível de ser ignorada. No lançamento do iPhone, muitos ficaram chocados com idéia inicial da Apple de aplicações web com Javascript... depois é que eles liberaram aplicações nativas. Isso já em 2007... mas a maioria dos celulares tinha browsers de Internet sofríveis, muitos sem Javascript. Hoje vemos compiladores de e para Javascript, compactadores, obfuscadores e uma infinidade de livros. Javascript está instalada na maioria dos computadores do mundo, incluindo telefones celulares e mesmo sistemas embarcados. Você pode até mesmo usar Javascript para instrumentar seu programa escrito em Java ou C++! É impossível ignorar a força do Javascript. A prova final para mim foi há algumas semanas quando vi uma pequena máquina virtual, suficientemente completa para rodar o &lt;a href="http://bellard.org/jslinux/"&gt;kernel do Linux em Javascript&lt;/a&gt;, fora jogos como Doom e emuladores diversos, completamente escritos ou portados para Javascript!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A impressão que tenho é o mesmo que aconteceu na década de 80, onde para se ter velocidade programava-se em Assembly, mas era difícil e cada micro tinha o seu próprio Assembly incompatível. Isso era nítido na programação de jogos. Até nas revistas, os programas eram escritos parte em Basic, parte em Assembly. Com o passar do tempo, ficou prático escrever em Pascal e C, compiladas e muito mais fáceis que Assembly. Com o Javascript acontece a mesma coisa, quando começo a ver a quantidade de compiladores que agora geram códigos em Javascript, tenho a mesma impressão. Como escrever grandes programas em Javascript ainda é difícil, diversas bibliotecas e ferramentas podem ser utilizados para reduzir este esforço. Uma dessas ferramentas é a &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeScript&lt;/a&gt;, que dá uma sintaxe limpa ao Javascript, inspirada em Python. É como se essas linguagens estivessem fazendo o trabalho que C e Pascal fizeram antes e o Javascript sendo o novo Assembly universal, afinal é suportado pela maioria dos micros e é multiplataforma. Não falo aqui que o Javascript substitui o Assembly, nada disso. Apenas um posicionamento das linguagens como ferramenta num cenário de aplicações global.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como tudo agora é na ou para a Web, Javascript é incontornável. A popularização do suporte a HTML 5 nos browsers só vem a ajudar. Nos últimos anos, motores Javascript de alta performance se popularizaram no Google Chrome, FireFox, Safari e até mesmo no Internet Explorer! Canvas, WebGL, bancos de dados locais, web sockets, web workers, tudo disponível em praticamente qualquer browser, via Javascript!&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-3356396186634334833?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/3356396186634334833/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=3356396186634334833' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3356396186634334833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3356396186634334833'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2011/06/era-do-javascript.html' title='A Era do Javascript'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7088384855665848510</id><published>2011-03-12T18:35:00.000-04:00</published><updated>2011-03-12T18:35:43.939-04:00</updated><title type='text'>Khan no TED</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/nTFEUsudhfs" title="YouTube video player" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;Eu ainda me impressiono com a Khan Academy. Fantástica ferramenta para quem precisa relembrar e aprender conceitos de matemática, física, etc. Agora ele ataca problemas de nivelamento entre estudantes com ritmos de aprendizagem diferente. Quando teremos este tipo de iniciativa em português? Vídeos e não mini novelas! O potencial das video aulas, com playback controlado pelos alunos é interessante, mesmo em áreas sem Internet ou infra-estrutura para video aulas transmitidas ao vivo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7088384855665848510?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7088384855665848510/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7088384855665848510' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7088384855665848510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7088384855665848510'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2011/03/khan-no-ted.html' title='Khan no TED'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/nTFEUsudhfs/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1724832582948215916</id><published>2011-02-08T06:12:00.001-04:00</published><updated>2011-02-08T06:21:33.229-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='educação'/><title type='text'>Programe ou seja programado</title><content type='html'>Eu vi este vídeo ano passado, mas como não tinha legendas em português... não o coloquei aqui.&lt;br /&gt;Porém, mesmo sem legendas, estas ideias não poderiam ficar sem um comentário breve.&lt;br /&gt;Assista ao vídeo:  &lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="295" src="http://www.youtube.com/embed/imV3pPIUy1k?fs=1" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Douglas Rushkoff apresenta a importância do conhecimento de programação no mundo moderno.&lt;br /&gt;Não que ele defenda um mundo de programadores ou que aborde uma linguagem de programação X ou Y.&lt;br /&gt;O que é fantástico no vídeo é a relação entre a invenção da escrita, programação e as mídias modernas.&lt;br /&gt;Do início do compartilhamento do conhecimento através da escrita, de livros e depois com a invenção da prensa moderna, ele compara o acesso do cidadão comum a cada uma destas formas de transmissão do saber. Como esse conhecimento era controlado e distribuído entre as pessoas comuns e como sempre a sociedade comum estava um passo atrás das últimas tecnologias de produção e distribuição deste mesmo conhecimento.&lt;br /&gt;&lt;br /&gt;A questão é realmente saber se hoje estamos ficando para trás, ao não incluirmos a programação no mundo de nossos filhos. Hoje, tão importante quanto ler e escrever, programar é necessário. De uma simples planilha a sistemas complexos, diferentes níveis de programação são utilizados. Assim como a invenção da escrita não levou a uma sociedade de escritores, como apresentado no vídeo, a programação não criará uma sociedade de programadores. O ponto é realmente ter ideia do que pode ser programado, de ter noções básicas de como as coisas funcionam e não de simplesmente utilizar os meios como nos são fornecidos: Twitter, Facebook, Google e mesmo a web.&lt;br /&gt;&lt;br /&gt;O vídeo postado pela Wilmara no Facebook me chamou a atenção para o problema da educação:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/-uqDyBR29as" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Isso me fez pensar no por quê meus filhos ainda perguntam que língua é falada em tal ou tal país... tendo a Wikipédia e o Google disponíveis. Eles sabem acessar o Facebook, jogos e principalmente o YouTube. Mas a capacidade de síntese não é dada ou ensinada na escola. Continuamos a ensinar a decorar e não a reunir novas informações e criticar o conhecimento. Lembro do tempo que passei para achar o nome científico de 10 animais quando estava no primário... hoje isso seria feito em segundos!&lt;br /&gt;&lt;br /&gt;O foco continua sendo: ler, memorizar, repetir. Eu fui confrontado com esta realidade no meu primeiro emprego, como professor de lógica de programação. Os alunos estavam na faixa dos 15 anos, e eu tinha acabado de completar 18. Quando começamos a trabalhar com problemas simples de matemática, como porcentagens e proporções a casa caiu. Isso era muito estranho, pois eu era professor numa escola técnica, digamos elitista do ponto de vista que você tinha que ser aprovado num concurso para estudar lá. Não eram alunos ruins ou com problemas de aprendizado, mas alunos acima da média! O que alguns tinham dificuldade era em como utilizar o conhecimento passado através de exercícios de cálculo para uma nova realidade. Repito, não era problema em calcular, mas de saber que técnica já conhecida utilizar para resolver um problema similar, mas em outro contexto. Era simplesmente desenvolver suas equações, escrever enunciados de novos problemas, aplicar o que já sabiam, o contrário da forma como tinham sido preparados a vida toda!&lt;br /&gt;&lt;br /&gt;Traçando um paralelo: será que ao invés de apenas deixar nossas crianças assistirem vídeos no YouTube, deveríamos ensiná-las a criar seus próprios vídeos? A escrever corretamente, ou pelo menos tentar escrever corretamente, usando wikis e mesmo criando suas próprias home pages? Aqui falamos de programação em sentido mais amplo, como dominar as ferramentas que utilizamos. Afinal, eu não sou artista, mas recebi noções básicas de arte na escola... ainda sei combinar cores, embora não saiba desenhar ou pintar. Precisamos ensinar nossas crianças a dominar as novas mídias. Não para criar uma sociedade de programadores, mas para evitar que eles simplesmente consumam conhecimento sem a menor noção de como este é produzido, armazenado, disponibilizado e principalmente as formas que pode ser controlado.&lt;br /&gt;&lt;br /&gt;Vídeo bônus:&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/18681508" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/18681508"&gt;Only at OR Books: Program or Be Programmed by Douglas Rushkoff&lt;/a&gt; from &lt;a href="http://vimeo.com/orbooks"&gt;OR Books&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1724832582948215916?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1724832582948215916/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1724832582948215916' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1724832582948215916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1724832582948215916'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2011/02/programe-ou-seja-programado.html' title='Programe ou seja programado'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/imV3pPIUy1k/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-2604927099342089232</id><published>2010-12-02T14:22:00.000-04:00</published><updated>2010-12-02T14:22:37.233-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Livro de Introdução Programação com Python já está venda</title><content type='html'>Nada como uma noite fria e cheia de neve para colocar o blog em dia!&lt;br /&gt;Meu livro de programação foi publicado pela Editora Novatec e já está disponível para venda.&lt;br /&gt;Eu criei uma página sobre o livro, com links para livrarias e emails de contato:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nilo.pro.br/iprog/"&gt;http://www.nilo.pro.br/iprog/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O livro foi escrito de forma a apresentar novos conceitos gradualmente, com exemplos e exercícios. &amp;nbsp; Quando comecei a dar aulas, eu ensinava Basic e Pascal. Com o Basic, tinha o problema dos números de linha. Com o Pascal os ponto-e-vírgula... era muita coisa para escrever antes de começar a programar. Nestes casos, o uso de um pseudo-código claro e simples, livre de símbolos em excesso era interessante.&amp;nbsp;Eu evitei usar pseudo-código ou fluxogramas, pois acredito que ao se aprender a programar, o melhor é ir direto ao ponto.&amp;nbsp;Com a linguagem Python, isso tudo fica muito mais simples. Escrever em pseudo-código pode até ser mais complicado que escrever em Python!&lt;br /&gt;O leitor/aluno precisa ver algo acontecer para continuar estudando. O importante é saber ler o programa e entender o que vai acontecer quando o programa for executado. Eu realmente acredito que o aluno deve saber se o programa está correto antes de executá-lo. A execução é apenas uma confirmação. Uma seção sobre rastreamento foi incluída no livro, para preservar esta importante etapa no aprendizado de programação.&lt;br /&gt;&lt;br /&gt;A clareza e simplicidade da linguagem são realmente muito importantes para facilitar o aprendizado. Python torna a programação acessível par estudantes de outras áreas e não apenas de computação e engenharia.&lt;br /&gt;Outra característica do Python é que ela permite usar quase tudo que temos no computador. Uma vez aprendendo a programar em Python, pode-se continuar estudando outras linguagens de programação ou partir diretamente para aplicações web, jogos, banco de dados, etc. O caminho é mais suave e sem interrupções. Não serve apenas de linguagem introdutória, mas do dia a dia.&lt;br /&gt;&lt;br /&gt;Escrever um livro era algo que eu sempre quis fazer. Dá muito trabalho, tem que ler, reler, re-escrever e corrigir inúmeras vezes. O trabalho de revisão é realmente incrível, principalmente com a nova ortografia e com os desafios de escrever um livro técnico para leigos. Ter uma editora ajuda muito nesta tarefa, pois sozinhos nós começamos a não perceber mais os erros. Digo nós porque minha esposa ajudou na revisão.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Título: Introdução à Programação com Python&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Autor: Nilo Ney Coutinho Menezes&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;ISBN: 978-85-7522-250-8&lt;br /&gt;Páginas: 224&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Editora: &lt;a href="http://novatec.com.br/livros/intropython/"&gt;Novatec&lt;/a&gt;&lt;br /&gt;Ano: 2010&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resenha do Livro:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 1.5em; margin-left: 0em; margin-right: 0em; margin-top: 0em; padding-bottom: 0em; padding-left: 0em; padding-right: 0em; padding-top: 0em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Este livro é orientado ao iniciante em programação. Os conceitos básicos de programação, como expressões, variáveis, repetições, decisões, listas, funções e arquivos, são apresentados um a um com exemplos e exercícios. A obra visa explorar a programação de computadores como ferramenta do dia a dia. Ela pode ser lida durante um curso de introdução à programação de computadores e usada como guia de estudo para autodidatas. Para aproveitamento pleno do conteúdo, conhecimentos básicos de informática, como digitar textos, abrir e salvar arquivos, são suficientes. Todo software utilizado no livro pode ser baixado gratuitamente, sendo executado em Windows, Linux e Mac OS X.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 1.5em; margin-left: 0em; margin-right: 0em; margin-top: 0em; padding-bottom: 0em; padding-left: 0em; padding-right: 0em; padding-top: 0em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Embora a linguagem Python (versão 3.x) seja muito poderosa e repleta de recursos modernos de programação, este livro não pretende ensinar a linguagem em si, mas ensinar a programar. Alguns recursos da linguagem não foram utilizados para privilegiar os exercícios de lógica de programação e oferecer uma preparação mais ampla ao leitor para outras linguagens. Essa escolha não impediu a apresentação de recursos poderosos da linguagem, embora o livro não seja fundamentalmente uma obra de referência.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://novatec.com.br/livros/intropython/sumario9788575222508.pdf"&gt;Sumário (PDF)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-2604927099342089232?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/2604927099342089232/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=2604927099342089232' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2604927099342089232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2604927099342089232'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2010/12/livro-de-introducao-programacao-com.html' title='Livro de Introdução Programação com Python já está venda'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5304463491346696682</id><published>2010-08-13T15:30:00.000-04:00</published><updated>2010-08-13T15:30:24.623-04:00</updated><title type='text'>Um vídeo sobre educação</title><content type='html'>A pensar:&lt;br /&gt;&lt;br /&gt;&lt;object height="326" width="446"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/SirKenRobinson_2010-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SirKenRobinson-2010.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=865&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=sir_ken_robinson_bring_on_the_revolution;year=2010;theme=how_we_learn;theme=the_creative_spark;theme=how_the_mind_works;theme=a_taste_of_ted2010;theme=master_storytellers;theme=whipsmart_comedy;theme=new_on_ted_com;theme=the_rise_of_collaboration;event=TED2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/SirKenRobinson_2010-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SirKenRobinson-2010.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=865&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=sir_ken_robinson_bring_on_the_revolution;year=2010;theme=how_we_learn;theme=the_creative_spark;theme=how_the_mind_works;theme=a_taste_of_ted2010;theme=master_storytellers;theme=whipsmart_comedy;theme=new_on_ted_com;theme=the_rise_of_collaboration;event=TED2010;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Disponível com legendas em português e outras línguas.&lt;br /&gt;Clique em View Subtitles e depois em portuguese (Brazil).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5304463491346696682?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5304463491346696682/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5304463491346696682' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5304463491346696682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5304463491346696682'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2010/08/um-video-sobre-educacao.html' title='Um vídeo sobre educação'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5342553848893586606</id><published>2010-07-11T18:32:00.000-04:00</published><updated>2010-07-11T18:32:05.956-04:00</updated><title type='text'>Como não desenvolver software</title><content type='html'>Eu nunca vi dois programadores desenvolverem o mesmo programa da mesma forma. Dizer o que é certo em desenvolvimento de software é muito difícil, tudo depende de quais correntes de pensamento você segue. Orientação a objetos, script-maníacos, programação funcional? Tem espaço para todo mundo e ninguém escapa em maior ou menor grau de vários sintomas aqui descritos.&lt;br /&gt;&lt;br /&gt;Algumas coisas são tão ruins que mesmo em um assunto tão "quente" como desenvolvimento de software, pode-se achar um consenso. Eu vou relatar algumas das más práticas que conheci, pois acredito que elas são bastante comuns, especialmente com as novas tecnologias, Internet e código open source. Quanto maior o time de desenvolvimento, mais frequentes ficam esse pequenos problemas. O intuito deste post é relatar algumas experiências com o mesmo rigor científico de uma conversa de bar. Todas as afirmações são relativas e dependem do humor de quem as lê. Tudo deve ser encarado com várias pitadas de sal e bom humor. Eu avisei :-D&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Over-engineering: quem nunca viu um pequeno exemplo com 1000 linhas de código não sabe do que estou falando... era para ser um "Hello World"... 1000 linhas depois ninguém sabia o que era. Um programa de computador precisa ser razoavelmente robusto a falhas, mas existe uma grande diferença entre uma aplicação crítica e uma aplicação simples, que pode simplesmente parar de funcionar e dar uma mensagem de erro! O sintoma se apresenta quando a confiabilidade do Sol começa a ser posta em jogo. E a pergunta cruel surge: quando o Sol explodir, o que faremos? Variações desta realidade são exigências como confiabilidade e disponibilidade de sistemas web comparáveis às do Facebook ou do Google, exceto que você ainda não tem o tráfego nem o dinheiro destes sites. Variações incluem o desejo incotrolável de utilizar o maior número de patterns no maior número de classes possível. Nada pode ser feito em apenas uma classe. Classes ficam melhor em dúzias. Porque deixar para um futuro refactoring o que já pode ser feito hoje?&lt;/li&gt;&lt;li&gt;Paralisia por análise: quando os programadores se lançam na quest máxima: a busca DO framework. Perdem-se às vezes meses com experimentos para simplesmente escolher um novo framework, ignorando toda a experiência anterior do time, ou que o tempo perdido não volta mais. Em informática é muito difícil escapar desta situação, principalmente com software open source, constantemente atualizado e melhorado. Parar de trocar pode simplesmente significar a morte do programador, ou sua condenação ao castigo máximo, como programar para sempre em Clipper ou Cobol :-D A questão é que uma decisão deve ser tomada e normalmente nenhum framework oferece solução para tudo, ou torna tudo simples, fácil e claro. Algumas pessoas buscam soluções que "não dão trabalho", mas esquecem que o fruto desta automatização é normalmente seguir padrões e conceitos do novo framework, conceitos que demandam tempo para ser aprendidos. Uma mistura de paralisia por análise com over-engineering é quando o time resolve encontrar uma solução perfeitamente escalável, adaptável a qualquer cliente e que possa rodar por uns 10 anos com pouca manutenção... ou seja, buscam alcançar o nirvana da programação. Isso não é desculpa para não analisar as melhores alternativas para resolver o problema, mas esta análise não deve durar mais tempo que o desenvolvimeno da solução em si.&lt;/li&gt;&lt;li&gt;Bala de prata: é quando o time decide resolver tudo com a mesma tecnologia sempre. Normalmente com C ou Java, mas começam a aparecer mais e mais casos com linguagens scripts. A verdade é que não existe bala de prata (no sentido de solução universal), nem lobizomem. Toda solução deve ser cuidadosamente analisada, dentro de um prazo bem definido, para não cair no problema da paralisia. Já se dizia há muito tempo: "Se a única ferramenta que você conhece é um martelo, tudo vira prego".&amp;nbsp;&lt;/li&gt;&lt;li&gt;Time Bom Bril: é o sonho de todo gerente de software. Um time multiplataforma, multilinguagem, com profissionais altamente inteligentes, simpáticos e dóceis. Entre outras características deste tipo de alucinação é usar "O time" em todo e qualquer tipo projeto, ignorando o conhecimento de domínio. Hospital, eleições, lançamento de foguetes, hardware? Não tem problema, "O time" resolve. Além deste tipo de patia causar danos ao pobres membros do time, a perda de produtividade é enorme, causando a aparição do folclórico Jack-of-all-trades-master-of-none. Ninguém consegue dominar tudo e alcançar resultados excelentes em tudo, isso é ilusão. Profissionais altamente capazes podem aprender muito rápido e superar o resultado de times ordinários, mas isso tem um preço. A pulverização de esforços e a constante pressão podem queimar um time de desenvolvimento muito rápidamente.&lt;/li&gt;&lt;li&gt;Cada um por si e ninguém por todos: muitos chefes atrapalham, mas quando não há algum chefe, todos são chefes! Essa é fácil de se cair quando se tem um time super star ou um dream team em determinada tecnologia. Como todos são profissionais de alto valor e experientes, independência total é dada a cada membro do time. No final, ninguém se entende, pois cada membro do tal time resolveu utilizar as práticas e conceitos da corrente de desenvolvimento que mais lhe agrada. No fim, a empresa fica com uma salada de códigos-fonte, provavelmente escritos em várias linguagens de programação, frameworks diferentes, etc. Um pouco de ordem ajuda a manter a sanidade do time.&lt;/li&gt;&lt;li&gt;Commits preciosos: alguns times são intruídos a só "comitarem" suas alterações após finalizarem sua tarefa de implementação. Isso funciona bem e evita que código inacabado perturbe o desenvolvimento de outros desenvolvedores devido a anomalias no build. O problema é que algumas pessoas não dividem as tarefas em espaços razoáveis de tempo. O sintoma são commits quinzenais ou mesmo mensais! Indagados sobre a prática, alguns podem responder que fazem isso para não poluir o repositório com commits pequenos. A questão toda é que o próprio desenvolvedor precisa de um sistema de controle de versão para seu desenvolvimento inacabado. Se um sistema de controle de versão distribuído, como o GIT ou Mercurial é usado, pode-se resolver este tipo de problema com branches locais. Com SVN não tem muito jeito... você tem que comitar após testar e garantir que o que foi commitado não quebra o build. Se algo estiver errado, o sistema de controle de versão tem ferramentas para corrigir estas falhas. Além disso, fazer o merge após um mês de desenvolvimento pode ser muito trabalhoso, pois a probabilidade de se ter alterado o mesmo arquivo que outras pessoas é alta, gerando conflitos.&lt;/li&gt;&lt;li&gt;Repo killer: quando um membro decide comitar e atualizar apenas partes do repositório, privando os outros membros do time de trabalharem com a mesma versão do código. Essa é inexplicável. Uma variação é o desenvolvedor que escolhe a dedo o que atualizar, esquecendo de incluir novos arquivos e mudanças que nem ele mesmo lembra que fez. Esse problema é uma bomba relógio, pois as diferenças entre os repositórios será evidente cedo ou tarde.&lt;/li&gt;&lt;li&gt;Builds locais: poupar o dinheiro de uma máquina de build pode ser a pior economia a fazer em um time de software. Se apenas uma pessoa desenvolve o código, você só saberá que tudo foi comitado ou não no dia que ela sair da empresa. Aí começa a caça aos arquivos perdidos. Outro grande problema é a não documentação do ambiente de desenvolvimento, mas esse problema aparece mais rápido, normalmente quando o HD do desenvolvedor pifa e ele passa uma semana para lembrar tudo que usava (IDE's, bibliotecas, paths, etc). Esse problema também expõe um mais grave: a falta de testes.&lt;/li&gt;&lt;li&gt;Ausência de testes: uma das causas de se perder um usuário de seu sistema é transformá-lo em testador. Para isso, você não desenvolve testes automatizados e normalmente não realiza qualquer controle de releases. Isso gera inúmeros problemas durante todo ciclo de desenvolvimento e o único teste acaba sendo feito pelo compilador. Um código que compila está longe de estar livre de erros. Não controlar os erros já reportados pelo usuário é grave. Não corrigi-los é pior e ressuscitar bugs antigos por falta de testes é imperdoável.&lt;/li&gt;&lt;li&gt;Zipmania: desenvolvedores param de usar o sistema de controle de versão e começam a trocar Zips com nomes poderosos por IM: sistema20100610_XPO.zip. O vetor de transmissão é um desenvolvedor suicida que resolve fazer a integração na máquina de outro desenvolvedor, antes de fazer os devidos commits, para "evitar conflitos". Fica melhor ainda quando eles começam a criar zips para "congelar" um release e fazer "backup".&lt;/li&gt;&lt;li&gt;Variáveis com apenas dois ou três caracteres: essa é muito boa. Um dia você será castigado, tendo que rastrear código em C que usa strtok e variáveis como z, zz e zzz!&amp;nbsp;Fica mais interessante quando esse código é responsável por crashes imprevisíveis no código, do tipo null pointer/segfaults :-D. O pior é que o carrasco pode ter sido você mesmo! É sempre bom comentar o código, principalmente quando o método implementa algo mais complexo que 10 linhas. Mesmo que você não comente, o minimo que pode ser feito é utilizar nomes de variáveis que ainda signifiquem algo dentro de 6 meses ou 2 anos.&lt;/li&gt;&lt;li&gt;Gotos: código em C com goto ninguém merece. Tirando raríssimas exceções, usar goto's em C é imperdoável. Fica ainda pior quando os "labels" tem sempre o mesmo nome, em várias funções e o tal goto é escondido por macros. Eu aprendi programar nos anos 80, gotos eram a única saída em Basic, mas já eram abominados em C e Pascal há bastante tempo e mesmo antes (&lt;a href="http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF"&gt;Dijkstra, 1968&lt;/a&gt;). Para programadores modernos, um goto é simplesmente um atentado a programação estruturada.&lt;/li&gt;&lt;li&gt;A praga do log: aqui os sintomas são diferentes dependendo da linguagem. Em C/C++ você pode usar o pré-processador para esconder seu log de DEBUG ou fazer a coisa certa e usar um framework descente. Em Java, você tem os loggers da vida. O pior que você pode fazer é usar múltiplos System.outs ou printfs para fazer o log na mão. A praga do log é que mesmo usando um framework, você acaba espalhando linhas de log para tudo e usando apenas dois ou três níveis de log. No final, você tem arquivos de log gigantescos que chegam mesmo a retardar a execução do programa. Eu já procurei causas de lentidão em sistemas Java para descobrir que tínhamos deixado o log das bibliotecas em C ligado! Simplesmente, cada linha do log abria, escrevia, dava um flush e fechava o arquivo na mesma linha, claro, escondendo tudo isso numa macro! C hoje em dia é tão rápido que você pode fazer barbaridades, mas quando você loga deste jeito dentro de um XML parser... a coisa explode.&lt;/li&gt;&lt;li&gt;Ignorar mensagens de erro do compilador: essa aqui é um prelúdio para o sofrimento. Se no gcc seu código não compila com -Wall ou se você é o rei dos pragmas do Visual C++, lembre que se estas mensagens fossem realmente pouco importantes, elas não seriam geradas pelo compilador! No Java, usa-se o -Xlint para ter warnings mais precisos. O importante é que seu build seja limpo! Isso faz com que qualquer erro seja rapidamente notado. O mesmo para os logs. Se tudo é mostrado na tela, você simplesmente pára de olhar, pois se acostuma a ver lixo ou mensagens que não são interessantes.&lt;/li&gt;&lt;li&gt;Localização tabajara: ao trabalhar com código para múltiplas línguas, melhor não improvisar. Java resolve este tipo de problema muito bem e o Python na sua versão 3 melhorou bastante. Misturar strings em páginas de código diferentes é fatal! Fazer localização com ifs no código é pior ainda. Até a Microsoft tenta forçar o uso de UNICODE no Visual C++. O pior é ignorar diferenças de codificação e mesmo de tratamento de mensagens. Além da ordem das palavras, línguas diferentes tem critérios também diferentes para ordenação de caracteres, plural e letras maiúsculas, por exemplo.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Build scripts escritos em Perl e batches: quem ainda trabalha com Perl merece todo castigo :-D O problema são pessoas que não utilizam Perl e que tentam fazer scripts de build em Perl. O mais legal é quando o build é multiplataforma é os tais scripts geram código em C ou C#, sem nada dizer. Para melhorar a festa, pode-se utilizar múltiplos scripts (multiplicados pelo padrão: copy and paste, rename). Agora a cereja do sorvete é fazer isso tudo usando Windows ou Cygwin.&lt;/li&gt;&lt;li&gt;Babel: por que utilizar apenas uma linguagem de programação? Seu projeto pode ter muitas, você pode até deixar seus programadores escolherem a linguagem de programação mais adaptada a cada tarefa e depois reunir isso tudo via SOAP. Usar Perl com qualquer outra coisa é trabalhar contra a empresa. C/C++ e Java, tudo bem, um pouco de Python ok. Mas se seu código é realmente escrito partes em Basic, partes em C/C++/C# e você resolveu colocar a parte concorrente em F# é porque você já vive o sonho do .Net. O mesmo acontece em Java: Jython ou JRuby, Groovy e Scala. Você pode misturar como quiser, mas a manutenção do código vai ser um pesadelo. Quanto mais linguagens você utilizar, mais difícil será encontrar alguém capaz de trabalhar com todas estas linguagens. Lembre-se que toda linguagem evolui, forçando um esforço arqueológico para entender o que a versão X fazia com a versão Z. Melhor evitar ou pedir aprovação do alto conselho Klingon antes de começar a construir sua torre. E por que apenas uma torre? Você pode desenvolver seu código para múltiplas plataformas, para adicionar um pouco de tempero. Mesmo com Java, faz-se milagre: J2SE, Java ME CDC e Java ME CLDC... a festa! Com C# você pode brincar com o compact framework e por que não com Mono?&lt;/li&gt;&lt;li&gt;Demos: demo é coisa do cão :-D Quem trabalha comigo ouve essa todo dia. O problema de "demos" que elas são normalmente escritas para rodar apenas uma vez e num curto espaço de tempo. O que leva ao próximo problema. Uma demo é diferente de um protótipo. Um protótipo normalmente é criado para resolver um problema específico ou para demonstrar como os analistas entenderam o problema, um instrumento para refinar e melhorar programas. Uma demo é normalmente criada para demonstrar o domínio de uma tecnologia, é um PPT executável e com código fonte! Normalmente elas resistem a aposentadoria e tem a tendência a evoluir. O ambiente propício para proliferação é a véspera de exposições e eventos.&lt;/li&gt;&lt;li&gt;Códigos escritos para rodarem apenas uma vez: não acredite nisso. Uma vez que um programa é escrito, o universo conspira para que ele seja mantido por muito tempo. Quase nunca você vai escrever código para rodar apenas uma vez. Se for o caso, tenha certeza de apagar o bicho logo depois da primeira execução, só para garantir.&lt;/li&gt;&lt;li&gt;XML Doom: alguém resolve que tudo deve ser escrito em XML. Eu já via até métodos que recebem os seus parâmetros no formato mágico que começa com X. O mais interessante do XML é que ele foi criado para facilitar o intercâmbio de informações e também ser legível tanto por computadores quanto por seres humanos. A ideia era poder ter um formato simples, baseado em UTF, ou pelo menos ciente dos inúmeros problemas de internacionalização e de representação de dados binários em formato texto. A coisa começou a desandar quando começamos a escrever arquivos XML na mão, para facilitar o parsing de arquivos de configuração. O XML que deveria ser gerado pelo computador, acabou sendo gerado manualmente. Alguns conseguem ter a sorte de ter editores de textos adaptados e mesmo ferramentas que ajudam na árdua tarefa de criação destes monstros. Uma ideia muito boa que acabou sendo abusada. XML não deve ser usado pra tudo.&lt;/li&gt;&lt;li&gt;Copy and Paste hell: essa é a pior de todas. Se você copia e cola o mesmo código várias vezes, algo está errado. Ou você não usa os recursos de template de seu IDE (aqueles que transformam syso em System.out.println()) ou você está realmente perdido. Grave mesmo é se você copia grandes partes de código, criando métodos gigantes. Programas criados com alta participação de copy and paste demonstram um problema grave de modularização e normalmente não isolam conceitos adequadamente. Lembre-se que cada código copiado e colado terá os mesmos problemas do código de origem, se você tiver sorte, fazendo com que alterações e modificações tenham que ser propagadas para todas as cópias. É realmente um desafio a sua memória. Sempre se esquece um ou dois... e lá estarão os problemas. Duro mesmo é corrigir o mesmo problema várias vezes. Além disso o tamanho do programa cresce assustadoramente rápido. Depois de ver código em javascript com 10000 linhas por arquivo você fica com medo desta síndrome.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Parece comédia, mas tudo isso é real. Profissão alguma é perfeita ou sem dificuldades, a diferença em informática é que nós criamos e retiramos os obstáculos no nosso caminho :-). Normalmente misturando novas soluções com antigos problemas numa velocidade fantástica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5342553848893586606?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5342553848893586606/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5342553848893586606' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5342553848893586606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5342553848893586606'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2010/07/como-nao-desenvolver-software.html' title='Como não desenvolver software'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-2781100874289536073</id><published>2010-06-09T03:52:00.000-04:00</published><updated>2010-06-09T03:52:31.817-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ferramentas'/><category scheme='http://www.blogger.com/atom/ns#' term='e-books'/><title type='text'>Lendo livros em formato PDF</title><content type='html'>Um problema que sempre tive com livros em formato PDF é marcar o ponto onde parei de ler para depois continuar. Nos últimos anos, livros em formato PDF se popularizaram e eu consumo principalmente os livros da &lt;a href="http://pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt; neste formato. Um simples documento PDF de até 5 ou 10 páginas pode ser lido inteiramente em poucos minutos, mas um livro de 500 ou 600 páginas não pode ser consumido de uma só vez. É nesses casos que um leitor adaptado a esta tarefa é necessário.&lt;br /&gt;&lt;br /&gt;No Mac eu vinha usando o &lt;a href="http://skim-app.sourceforge.net/"&gt;Skim&lt;/a&gt;, um leitor de PDF que permite fazer anotações e outras modificações no PDF que só o Acrobat da Adobe permitiriam, a diferença é que o Skim é open souce. Com o Skim, pode-se utilizar uma barra de leitura que ajuda muito na hora de ler, principalmente para quem pula linhas como eu :-D&lt;br /&gt;&lt;br /&gt;Mas como todo grande aplicativo de Mac, o Skim não tem versão para Ruindows e também não grava a última página de cada PDF... tornando a leitura de livros difícil. Para contornar este tipo de problema, eu acabei por utilizar anotações no meu telefone para registrar a página que parei em cada livro, verdadeiramente low tech.&lt;br /&gt;&lt;br /&gt;Semana passada eu encontrei o &lt;a href="http://www.adobe.com/products/digitaleditions/"&gt;Adode Digital Editions&lt;/a&gt;, gratuito e multiplataforma, desenvolvido pela mesma companhia que inventou o formato PDF. Ele foi criado para permitir acesso aos livros digitais da plataforma e-book da Adobe, mas também pode ser utilizado para ler livros já baixados em formato PDF ou ePub. A grande vantagem é poder utilizar o recurso de biblioteca, permitindo juntar os PDFs espalhados pelo disco rígido em uma só interface, organizar estes PDFs em pastas e marcar onde paramos de ler facilmente. No Digital Editions, quando reabro um PDF ele está exatamente na mesma posição que deixei da última vez. A interface é bem limpa e facilita a leitura, tendo apenas os controles básicos de navegação e visualização do PDF e opcionalmente o conteúdo a esquerda.&lt;br /&gt;&lt;br /&gt;Ainda não experimentei em vários micros, mas como o recurso de criar uma conta na Adobe, acredito que a sincronização seja possível. Outros recursos parecem bem interessantes, como a possibilidade de emprestar livros. Por enquanto, a funcionalidade de marcar o último ponto de leitura e o tamanho de apenas 19Mb x 195Mb do Acrobat Reader para Mac já são bem interessantes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-2781100874289536073?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/2781100874289536073/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=2781100874289536073' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2781100874289536073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2781100874289536073'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2010/06/lendo-livros-em-formato-pdf.html' title='Lendo livros em formato PDF'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-464228511570117588</id><published>2009-12-05T11:23:00.006-04:00</published><updated>2009-12-05T13:29:02.746-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux dns'/><title type='text'>Configurando BIND para utilizar o servidor DNS Público do Google</title><content type='html'>O Google lançou esta semana o &lt;a href="http://code.google.com/speed/public-dns/"&gt;Google Public DNS&lt;/a&gt;, visando aumentar a velocidade de resolução de nomes de Internet.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;A resolução de DNS (Serviço de Resolução de Nomes) é responsável por converter o nome de um site em endereço IP (www.google.com --&amp;gt; 64.233.163.163). Esse serviço é utilizado sempre que seu computador precisa de um endereço de Internet. Cada vez que um novo nome é convertidio em endereço IP, o resultado desta conversão é guardado em uma tabela de acesso rápido em seu computador para agilizar acessos futuros, ou seja, uma tabela cache ou simplesmente cache.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um exemplo simples é resolver www.google.com. A primeira vez que você acessar o domínio, o serviço de DNS de seu computador vai verificar o cache local e retornar o endereço IP, mas como é a primeira vez que você tenta acessar o Google hoje, não vai encontrar este nome de domínio em sua tabela cache. Quando isso acontece, uma requisição será feita ao seu servidor de DNS.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um servidor de DNS também faz um cache dos últimos domínios pesquisados, porém vai recorrer aos Root Servers da Internet caso também não tenha o domínio cadastrado. E assim funciona o DNS e toda a Internet como a conhecemos hoje. A grande questão é entender o problema que o Google Public DNS Resolve.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O primeiro problema é que o tempo de acesso entre computadores na Internet pode ser medido em milisegundos (uma eternidade em termos de transmissão de dados :-) ). O tempo de resposta (Round Trip Time - RTT) é simplesmente o tempo que um computador demora para enviar um pacote e receber a resposta de outro computador. Ou seja, o tempo que o computador A leva para receber a resposta do computador B. Um caso prático é o tempo exibido pelo comando ping. O comando ping envia um pacote usando o protocolo ICMP e espera a resposta do outro sistema, imprimindo o tempo entre a requisição e o recebimento da resposta. Quanto mais distantes os computadores, maior o tempo de acesso. Este efeito é causado pelos meios de transmissão (fibra, satélite, cabos, etc) e pelo roteamento da Internet.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quando um servidor de DNS não encontra um nome de domínio/host em sua tabela cache, este precisa realizar uma nova pesquisa. No caso de www.google.com, a primeira pesquisa será ao servidor responsável pelos domínios .com sobre o endereço dos servidores do Google. Só então seu servidor fará outra pesquisa, desta vez perguntando o endereço de www ao servidor de google.com. A coisa piora quando você tem nomes com vários níveis, mas o servidor faz um cache destas requisições de forma a evitar todo esse trabalho a cada acesso. O tempo de resposta de cada uma destas pesquisas é igual ao tempo de resposta entre os servidores mais o tempo para processar a resposta propriemente dita.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O problema que o Google Public DNS resolve é centralizar de forma Googleludiana toda essa informação. Isso significa poder utilizar a rede global da Google para armazenar e atualizar estas tabelas de conversão. Outro ponto é responder as requisições de forma muito rápida, coisa que o Google é campeão em fazer. Vários provedores de acesso tem mega-caches de domínios, porém a atualização deste cache é um outro problema. O Google pretende resolver o problema dos grandes caches e ainda aumentar o nível de segurança do serviço de resolução de nomes (DNS).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um exemplo: imagine que o tempo de resposta entre seu servidor de DNS é igual a T. Para responder o endereço IP de www.google.com, teríamos algo como 3T ou 4T. Considere que no caso do Brasil, com redes lentas, esse T é bem grande (&amp;gt;100ms). Pense também que uma simples página web pode ter dezenas de nomes a resolver. Isso causa um atraso enorme ao tempo total de carga da página. Usando o serviço do Google, o tempo de resposta se aproxima de T (uma vez que as tabelas cache do Google tendem a ser maiores e mais rápidas que a do seu pobre ou rico servidor).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uma descrição completa do problema e da solução pode ser encontrada &lt;a href="http://code.google.com/speed/public-dns/docs/performance.html"&gt;neste link&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Agora, como usar isso. A tentação pode ser de simplesmente trocar o IP do seu servidor de DNS para 8.8.8.8 e 8.8.4.4. Esta solução é muito interessante e é descrita nas páginas do serviço, mas o melhor mesmo é configurar seu servidor local de DNS para utilizar este serviço. Isto minimiza o tempo de acesso de todas as máquinas da rede e como o tempo de acesso ao servidor local é muito menor que acessar o servidor do Google, o tempo de resolução de domínios ficará bem baixo.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para quem usa o Bind no Linux sem ter o mesmo configurado como servidor de domínios local ou principal, simplesmente como cache de DNS, basta adicionar as seguintes linhas no /etc/bind/named.conf (o endereço pode mudar de acordo com a sua distribuição Linux).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Adicione as linhas com os servidores do Google (em negrito) logo depois de directory, dentro de options:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new';"&gt;options {&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="white-space: pre;"&gt;         &lt;/span&gt;directory "/var/bind";&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;b&gt;         forwarders { 8.8.8.8; 8.8.4.4; }; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;b&gt;         forward only;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new', serif;"&gt;&lt;span style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depois disso, recarrege a configuração do Bind (/etc/init.d/named reload) e tudo feito. Agora você conta com seu cache local e com o serviço público do Google. A diferença é bem perceptível.&lt;br /&gt;&lt;br /&gt;Você também pode obter um bom desempenho configurando os servidores do Google em seu roteador de acesso sem fio, mas isso vai depender da velocidade de resposta do mesmo. Vale experimentar!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-464228511570117588?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/464228511570117588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=464228511570117588' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/464228511570117588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/464228511570117588'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/12/configurando-bind-para-utilizar-o.html' title='Configurando BIND para utilizar o servidor DNS Público do Google'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-3345233873686021489</id><published>2009-10-29T16:56:00.005-04:00</published><updated>2009-10-29T18:18:37.564-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='bootcamp'/><title type='text'>Windows 7 64 bits no iMac com Snow Leopard - BootCamp 3.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UxRa3tq1KCQ/SuoEjo33azI/AAAAAAAAABg/boWBX9Gah7I/s1600-h/BootCamp.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 164px;" src="http://2.bp.blogspot.com/_UxRa3tq1KCQ/SuoEjo33azI/AAAAAAAAABg/boWBX9Gah7I/s400/BootCamp.PNG" alt="" id="BLOGGER_PHOTO_ID_5398132113670630194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A vida não é facil para quem tem um iMac e quer instalar o Windows 7 64 bits. A Apple decidiu que os drivers de 64 bits não poderiam ser instalados nos iMacs, só nos MacPros, mas tudo tem jeito :-D. &lt;a href="http://junglecoders.blogspot.com/2009/05/windows-7-com-bootcamp.html"&gt;Neste outro post&lt;/a&gt;, eu descrevi como instalar a versão 32 bits do Windows 7 RC, mas com o Boot Camp 2.1 do velho Leopard.&lt;br /&gt;&lt;br /&gt;O problema é que eu gostei do novo brinquedo e comprei o Windows 7 Edição Familiar Premium. Eu já sabia que o RC seria destruído, então comecei preparado. A caixa chegou na segunda-feira, comprei por 56€ numa super-promoção ainda em Julho na PixMania.be! Por 56€ é uma opção muito interessante, não sei se teria feito o mesmo se tivesse que pagar os 99 que a Microsoft pede hoje. Backup feito, começa a aventura!&lt;br /&gt;&lt;br /&gt;Usando a mesma partição do meu Windows 7 RC, eu apenas pedi ao BootCamp 3.0 do Snow Leopard para iniciar o CD de instalação Windows. Fiz o boot e instalei normalmente, usando o setup do Windows. O Windows 7 vem com dois DVDs, um com a versão 32 bits e outro com a versão 64. É bom olhar antes de dar o boot, porque não lembro de nenhum indicador visual de qual dos dois estava instalando (salvo no próprio DVD!).&lt;br /&gt;&lt;br /&gt;Instalei o Windows 7 64 bits na mesma partição do Windows 7 32 bits RC, mas para minha surpresa o instalador disse que estaria movendo tudo para uma pasta Windows.OLD. Eu já estava preparado para começar do zero, aguardando a formatação do disco, coisa que não aconteceu. Tudo do Windows 7 RC antigo foi movido para a Windows.Old, inclusive o Program Files e outros diretórios.&lt;br /&gt;&lt;br /&gt;Terminada a instalação, não tive qualquer problema no Mac, até precisar instalar o boot camp. A mensagem que apareceu é que a versão 64 bits dos drivers não é suportada na minha máquina: &lt;span style="font-style: italic;"&gt;Boot Camp x64 is unsupported on this computer model&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Uma rápida visita no site da &lt;a href="http://support.apple.com/kb/HT1846"&gt;Apple&lt;/a&gt;, revela que os iMacs não estão na lista dos equipamentos suportados para os drivers de 64 bits do Windows Vista ! Uma rápida busca no Google, revela este &lt;a href="http://jonsview.com/2008/10/16/installing-windows-vista-64-bit-on-an-imac"&gt;artigo&lt;/a&gt;. Eu já havia lido outros, mas poucos sobre o problema da restrição do iMac. Meu iMac é modelo 2008. Antes disso, nem adianta tentar. Nao precisa baixar nada de sites estranhos, tudo que você precisa está no DVD do Snow Leopard. Um dos comentários do artigo diz que conseguiu instalar o BootCamp pelo arquivo .msi. Aparentemente é o setup.exe que verifica a restrição aos iMacs. O problema é que clicando no Boot Camp\Drivers\Apple\BootCamp64.msi no Windows Explorer ele não instala. O comentário também diz para executar em linha de comando privilegiada. Aí a coisa ficou esquisita, pois eu já era administrador do sistema. Lembrei que o Windows 7 é um primo próximo do Vista, chato mesmo.&lt;br /&gt;&lt;br /&gt;O que precisa fazer:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A partir do menu iniciar, abra a pasta de acessórios e clique com o botão direito no Command Prompt. Escolha a opção de executar em modo privilegiado. &lt;/li&gt;&lt;li&gt;Na janela de comandos que abriu, vá para o diretório do BootCamp64, no meu caso o drive D: é o DVD-ROM:&lt;/li&gt;&lt;/ul&gt;d:&lt;br /&gt;cd "\Boot Camp\Drivers\Apple"&lt;br /&gt;msiexec /i BootCamp64.msi&lt;br /&gt;&lt;br /&gt;Depois é só prender o fôlego e ter fé. A instalação do Boot Camp é assustadora. Telas pretas e piscadas alucinantes aconteceram no meu caso, mas é coisa rápida, bips também acontecem. Nada que não assuste durante a instalação de um novo Windows, principalmente instalando drivers do Vista 64 no Windows 7... mas já da para aguardar até os drivers nativos do Windows 7 serem lançados.&lt;br /&gt;&lt;br /&gt;Um boa é que mesmo antes do Boot Camp ser instalado eu já tinha rede. Rede com cabo e sem fio funcionaram de primeira após a instalação. O som, o eject e a camera só funcionaram depois de instalar o BootCamp. Alias, o som não está tão bom assim. Uma dica é que o eject funciona pelo Windows Explorer, mesmo antes de instalar o Boot Camp. É só clicar no drive de DVD  com o botão direito e selecionar ejetar.&lt;br /&gt;&lt;br /&gt;A melhor surpresa foi poder acessar a partição do Mac pelo Windows Explorer. Isso é muito legal, principalmente quando você procura um arquivo que está no outro sistema.&lt;br /&gt;&lt;br /&gt;Em relação a utilização de memória, aqui eu perdi uns 200 MB de cara, só trocando de 32 para 64 bits. O Windows 32 pedia uns 400 MB para mostrar o Desktop :-)... o 64 ja começa com 600MB. Era a desculpa que eu precisava para colocar mais 2G :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-3345233873686021489?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/3345233873686021489/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=3345233873686021489' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3345233873686021489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3345233873686021489'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/10/windows-7-64-bits-no-imac-com-snow.html' title='Windows 7 64 bits no iMac com Snow Leopard - BootCamp 3.0'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UxRa3tq1KCQ/SuoEjo33azI/AAAAAAAAABg/boWBX9Gah7I/s72-c/BootCamp.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-881332122432762554</id><published>2009-10-25T07:42:00.018-04:00</published><updated>2009-10-25T12:10:08.911-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python dicas'/><title type='text'>Capturando a saída interativa do interpretador Python em Python</title><content type='html'>Tudo tem que ser automatizado. Como estou escrevendo um pequeno livro sobre Python já há muito tempo, tenho que atualizar a versão da linguagem todo ano :-D. Com o Python 3.1 o problema ficou mais sério, pois agora tenho que testar os exemplos do livro com essa nova versão que não é totalmente compatível. O livro está sendo escrito em Latex, usando o TextMate e o &lt;a href="http://skim-app.sourceforge.net/"&gt;Skim&lt;/a&gt; no Mac OS X. Eu fiz a besteira de inserir manualmente o código fonte Python no texto Latex, agora tenho que revisar os scripts um a um. Como vou revisar, aproveito para consertar e desta vez gravar os programas Python em arquivos separados.&lt;br /&gt;&lt;br /&gt;Resolvi então utilizar o &lt;a href="http://www.scons.org/"&gt;SCONS&lt;/a&gt; para ajudar na tarefa. Para isso, um builder customizado precisa ser criado. No SConstruct:&lt;br /&gt;&lt;pre class="brush:python"&gt;&lt;br /&gt;PYTHON_BIN="/opt/local/bin/python2.6"&lt;br /&gt;&lt;br /&gt;python_output=Builder(action= '$PYTHON_BIN capture.py $SOURCE $TARGET',&lt;br /&gt;                  suffix     = '.pyt',&lt;br /&gt;                  src_suffix = '.py')&lt;br /&gt;&lt;br /&gt;env = Environment(BUILDERS = {'python_output': python_output})&lt;br /&gt;env["PYTHON_BIN"]=PYTHON_BIN&lt;br /&gt;&lt;br /&gt;env.python_output("p1")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;e depois o programa em Python que faz a captura, capture.py:&lt;br /&gt;&lt;pre class="brush:python"&gt;&lt;br /&gt;import pexpect&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;PYTHON_BIN="/opt/local/bin/python3.1"&lt;br /&gt;&lt;br /&gt;interacao = file(sys.argv[1], "r").readlines()&lt;br /&gt;&lt;br /&gt;python = pexpect.spawn(PYTHON_BIN)&lt;br /&gt;python.logfile_read = file(sys.argv[2], "w")&lt;br /&gt;&lt;br /&gt;for l in interacao:&lt;br /&gt;   python.expect(["&gt;&gt;&gt; ", "... "])&lt;br /&gt;   python.send(l)&lt;br /&gt;&lt;br /&gt;python.sendline("exit()")&lt;br /&gt;python.expect(pexpect.EOF)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O script capture.py recebe dois parâmetros: o nome do arquivo Python e o nome do arquivo de saida.&lt;br /&gt;Para testar, crie um arquivo p1.py:&lt;br /&gt;&lt;pre class="brush:python"&gt;&lt;br /&gt;a=5&lt;br /&gt;b=10&lt;br /&gt;print(a+b)&lt;br /&gt;c = a + b&lt;br /&gt;d = c * a / 100&lt;br /&gt;print(c,d)&lt;br /&gt;for x in range(3):&lt;br /&gt;    print ("Oi")&lt;br /&gt;&lt;br /&gt;#Erro:&lt;br /&gt;=d=d&lt;br /&gt;rrrrr&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Deve produzir a seguinte saída em p1.pyt:&lt;br /&gt;&lt;pre class="shell"&gt;Python 3.1.1 (r311:74480, Oct 24 2009, 17:11:04) &lt;br /&gt;[GCC 4.2.1 (Apple Inc. build 5646)] on darwin&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&gt;&gt;&gt; a=5&lt;br /&gt;&gt;&gt;&gt; b=10&lt;br /&gt;&gt;&gt;&gt; print(a+b)&lt;br /&gt;15&lt;br /&gt;&gt;&gt;&gt; c = a + b&lt;br /&gt;&gt;&gt;&gt; d = c * a / 100&lt;br /&gt;&gt;&gt;&gt; print(c,d)&lt;br /&gt;15 0.75&lt;br /&gt;&gt;&gt;&gt; for x in range(3):&lt;br /&gt;...     print ("Oi")&lt;br /&gt;... &lt;br /&gt;Oi&lt;br /&gt;Oi&lt;br /&gt;Oi&lt;br /&gt;&gt;&gt;&gt; #Erro:&lt;br /&gt;... =d=d&lt;br /&gt;  File "&lt;stdin&gt;", line 2&lt;br /&gt;    =d=d&lt;br /&gt;    ^&lt;br /&gt;SyntaxError: invalid syntax&lt;br /&gt;&gt;&gt;&gt; rrrrr&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;  File "&lt;stdin&gt;", line 1, in &lt;module&gt;&lt;br /&gt;NameError: name 'rrrrr' is not defined&lt;br /&gt;&gt;&gt;&gt; &lt;br /&gt;&gt;&gt;&gt; exit()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se você utilizar este arquivo, não esqueça de modificar as variaveis PYTHON_PATH. Eu uso MacPorts e devo especificar o caminho completo da versão de Python que quero utilizar. Isso evita problemas com outras versões instaladas no sistema, como o Python da Apple. Eu utilizei o Python 3.1 nos exemplos do livro, mas ainda uso o 2.6 para instalar meus módulos no Mac Ports.&lt;br /&gt;&lt;br /&gt;Eu espero que isto ajude alguém com o mesmo tipo de problema: capturar a saída interativa de um programa como se fosse um terminal comum.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-881332122432762554?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/881332122432762554/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=881332122432762554' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/881332122432762554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/881332122432762554'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/10/teste.html' title='Capturando a saída interativa do interpretador Python em Python'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1174612142972990809</id><published>2009-10-24T08:17:00.006-04:00</published><updated>2009-10-24T09:09:39.682-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Aventuras com FSCK</title><content type='html'>Back-ups sempre vão bem... essa semana acabei perdendo 2 HDs. Um no PC, consegui retirar todos os dados e transferir para um servidor remoto. O outro, meu Ubuntu, Tambaqui de guerra.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheguei de manhã ao trabalho e vi que computador estava desligado. Como o Tambaqui é um pequeno servidor também, eu já o deixo ligado. Liguei o peixe e o boot ocorreu normalmente (eu sempre digo que só dá problema o que antes estava funcionando perfeitamente :-), senão ninguém viria com aquela desculpa-esfarrapada-padrão-de-quem-não-tem-backup: ontem estava bonzinho!).Olhando os arquivos depois do boot, vi que haviam vários arquivos com nomes estranhos com ??? e !!!!... sinal de problemas no sistema de arquivos, mas o fsck jurava que estava tudo bem :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rodei então o init 1 para inicializar em usuário único. E lá rodei o fsck no menu do Ubuntu... que detectou vários problemas. Terminada a análise, fiz o boot e para minha surpresa o disco estava vazio !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como já havia perdido um HD no dia anterior, disse: de novo! :-( Vi que a raiz tinha ido pro saco. Eu precisava apenas de dois diretórios com meus dados, prática que sigo já há alguns anos. Bom, dei uma olhada rápida no disco e constatei que estava mesmo vazio. Eu só consegui dar o boot com o CD do Ubuntu, mas não tive problemas em montar a tal partição. Começei a me preparar para reinstalar o Ubuntu quando vi que a partição não estava vazia.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu nunca acreditei muito no &lt;a href="http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/lostfound.html"&gt;lost+found&lt;/a&gt;. Toda vez que tive problemas no Linux, encontrei apenas pedaços dos meus arquivos dentro do lost+found. Mas desta vez a coisa estava diferente. Entre estes pedaços estavam diretórios com nomes como #xxxxxx, milhares deles. Logo descobri aonde meus arquivos haviam ido parar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Iniciei então o seguinte procedimento para procurar meus arquivos:&lt;/div&gt;&lt;div&gt;ls -laR lost+found &gt; bigls.txt&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O fsck havia recortado meus diretórios e deixado tudo em um só nível! A opção de gerar o arquivo bigls.txt era de justamente poder procurar com calma tudo que eu poderia salvar. O arquivo final tinha mais de 40MB ! Mas isso não é nada para o less. Utilizando a / para pesquisar, pude navegar no pequeno ls monstro que havia criado e logo detectar o que precisava ser salvo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depois, ficou fácil de mover os diretórios mais importantes para um disco de rede. O nome do arquivo eu pegava no bigls.txt, aberto em outra janela com o less. Simples e prático. Ainda estou recuperando as instalações que havia feito na máquina, pois não consegui quase nada do meu /etc (tomcat com ldap é chato).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nessa nova instalação vou deixar um rsync rodando para o disco de rede... pelo menos dos dados e do /etc :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quanto ao outro disco, rodando Windows XP... no meu velho notebook (2HDs perdidos em 2 meses e contando !)... também consegui montar o disco que nem boot mais tinha usando também o CD do Ubuntu. Ficou tudo muito simples porque o Ubuntu já identifica o disco Windows e é ultra fácil montá-lo, bastando clicar no volume correspondente no menu. Eu gosto muito de usar a linha de comando, mas confesso que gostei desta vez de utilizar as ferramentas gráficas no Ubuntu. Abri dois navegadores, um com a partição Windows e outro com um disco remoto usando Samba. A cópia foi tranqüila, bastando arrastar e soltar! Quem diria um dia fazer isso no Linux :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um programa que ajuda a ver os problemas de boot no Windows é o &lt;a href="http://www.cgsecurity.org/wiki/TestDisk_PT"&gt;testdisk&lt;/a&gt;. Ele detecta as partições e ajuda a reconstruir o setor de boot entre outras coisas. Pena que ele não está disponível pelo apt-get do Ubuntu 9.04. Mas no link acima tem uma opção para download. Basta baixar e desempacotar a versão binária. Um executável pronto (linkado estaticamente) já está pronto para ser utilizado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outro programa para o cinto de utilidades é o &lt;a href="http://sourceforge.net/apps/trac/smartmontools/wiki"&gt;SmartMonTools&lt;/a&gt;. Ele acessa as informações do &lt;a href="http://pt.wikipedia.org/wiki/S.M.A.R.T."&gt;S.M.A.R.T.&lt;/a&gt; do seu HD e ajuda a decidir o que aconteceu. Claro que é melhor usar essa ferramenta antes de ter problemas, mas meu Windows XP resolveu morrer sem último suspiro. Cheguei de manhã e ele já estava morto, mas sem perda de dados. Nunca se sabe se é um problema de vírus ou simplesmente um defeito no HD que você não havia percebido. Esses utilitários ajudam a executar os testes mesmo &lt;i&gt;&lt;a href="http://pt.wikipedia.org/wiki/Post_mortem"&gt;post mortem&lt;/a&gt;&lt;/i&gt;. Claro, dependendo do estado do seu HD, porque se ele nem liga ou nem mesmo é detectado... esqueça.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1174612142972990809?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1174612142972990809/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1174612142972990809' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1174612142972990809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1174612142972990809'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/10/aventuras-com-fsck.html' title='Aventuras com FSCK'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5217570698331415029</id><published>2009-09-14T07:03:00.001-04:00</published><updated>2009-09-14T14:21:31.876-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='piadas'/><title type='text'>COOnan</title><content type='html'>Sem muito o que fazer, criei um novo personagem no universo dos bárbaros da programação: COOnan. COOnan é um bárbaro que vive em Java... na Indonésia :-D&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como todo bárbaro, poucas ferramentas são tudo que ele tem. Então OO serve pra tudo e não existe qualquer outra coisa no horizonte. Como uma fé inalienável, nada escapa a OO, salvo criação heréticas com nomes mais engraçados que o nome da ilha em que ele vive.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tudo se resume em aplicações avançadas de OO. Criar uma interface ? Fácil, 5 arquivos e umas 12 classes já fazem o serviço. É classe por classe, objeto por objeto. Métodos gigantes e classes anônimas? não tem problema !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5217570698331415029?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5217570698331415029/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5217570698331415029' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5217570698331415029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5217570698331415029'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/05/coonan.html' title='COOnan'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-9159058819374675515</id><published>2009-09-07T07:13:00.001-04:00</published><updated>2011-10-04T03:25:23.361-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Brasil'/><title type='text'>Rico país pobre</title><content type='html'>&lt;a href="http://farm4.static.flickr.com/3453/3878274033_6915b43990.jpg"&gt;&lt;img alt="" border="0" src="http://farm4.static.flickr.com/3453/3878274033_6915b43990.jpg" style="cursor: hand; cursor: pointer; display: block; height: 375px; margin: 0px auto 10px; text-align: center; width: 500px;" /&gt;&lt;/a&gt;&lt;br /&gt;Faz quase 3 anos que estou morando na Bélgica. Um pequeno país europeu, 3 vezes menor que Portugal, um pouco maior que o Estado de Alagoas. Vindo do Brasil, principalmente do Amazonas onde tudo é grande e longe, demora um pouco para entender as distâncias locais.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;São pouco mais de 10 milhões da habitantes vivendo na &lt;a href="http://pt.wikipedia.org/wiki/B%C3%A9lgica"&gt;Bélgica&lt;/a&gt;. Pra completar, fala-se 3 línguas: holandês, francês e alemão. Onde moro, fala-se francês. O conflito entre o norte (holandês) e o sul (francês) é crescente. A parte que fala alemão é muito pequena para criar problema, eles simplesmente estão lá.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Assisti um vídeo no &lt;a href="http://www.theprogressproject.com/"&gt;The Progress Project&lt;/a&gt;, sobre o Nokia Data Gathering. O vídeo mostra uma iniciativa muito interessante de usar telefones celulares para coletar informações sobre dengue. Mas o que me chamou a atenção foi lembrar do estado de pobreza que a maioria dos brasilieiros vive. Como falei, moro agora em um pequeno país. O clima é ruim, recursos naturais quase não existem, hoje vive-se em paz, mas antes era cercado por inimigos por todos os lados. O que será que deu errado no nosso Rico País Pobre?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu lembro de viver muito bem em Manaus, mas em 2003, meu filho sofreu um "acidente" de carro. Foi levado para um hospital público (João Lúcio) e depois transferido para a Unimed. Uma das coisas que me chamaram atenção é que o hospital público era melhor equipado que a própria Unimed :-( Pior, parecia que o menino era culpado por ter se acidentado e o que a Unimed nos fazia o favor de aceitá-lo, mas isso é coisa passada... O importante é lembrar o estado de necessidades básicas no Brasil: educação, segurança e saúde.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Chegando na Bélgica, minha filha precisou ser hospitalizada. Hospitalizada aqui, porque acho que no Brasil teriam nos mandado para casa. O importante é que o médico decidiu sobre a hospitalização e assim ela foi hospitalizada. Dinheiro veio depois, primeiro a saúde. Considerando que isso aconteceu com um estrangeiro recém chegado e que não falava francês, nem tinha acabado de tirar todos os documentos, um milagre. Mas o caso mais sério estaria por vir, nossa filha Iris, nasceu com lábios leporinos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nessa época, já tínhamos todos os documentos, mas não estávamos esperando nada parecido. Ela fez todo os exames pré-natais (detectaram a má formação já no quinto mês de gestação), tivemos acompanhamento psicológico e até apresentaram fotos de bebês com o mesmo problema aos irmãos menores, já prevendo a rejeição que é comum nesses casos. No dia da cirurgia para corrigir os lábios (com 5 dias de vida!), me dirigi ao Hospital e perguntei quanto custaria, porque até então ninguém havia falado nada de dinheiro. A atendente me explicou calmamente: não tenho como dizer antes da cirurgia, o senhor receberá a conta depois de uns 3 meses em sua residência. Eu não sabia se ficava contente ou preocupado com isso. Conta enviada depois de 3 meses?!? Normal aqui, duro para brasileiro acreditar né? Perguntei a ela: &lt;/div&gt;&lt;div&gt;- Quanto custa em média? Eu tenho que me preparar para pagar isso.  &lt;/div&gt;&lt;div&gt;Calmamente ela respondeu: &lt;/div&gt;&lt;div&gt;- Não tenho como informar, pois varia com a equipe e com o que acontecer durante a cirurgia. Por que isso é importante para o senhor? Se não puder pagar, o senhor vai deixar de fazer a cirurgia na menina? A questão financeira se discute depois, não se preocupe! &lt;/div&gt;&lt;div&gt;Calei. Já estava me preparando para vender o carro... meu cálculo foi o seguinte: se a visita do encanador custava 65€, imaginei a cirurgia plástica... voltei meu foco para Iris e para minha esposa. Pelo menos a primeira cirurgia estava garantida. Tudo foi realizado com ótimos resultados. &lt;/div&gt;&lt;div&gt;A segunda cirurgia foi realizada 4 meses depois. Essa foi maior e demorou muito mais tempo. Mas os resultados também foram ótimos. Hoje ela é um bebê de quase 2 anos, ainda em tratamento, mas feliz.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O objetivo de relatar esse tipo de experiência é tentar explicar ou entender as enormes diferenças entre nosso país e aqui. Jamais denegrir a imagem do Brasil ou dos médicos brasileiros, mas ressaltar aonde precisamos chegar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu lembro de discussões sobre a riqueza de São Paulo ou de outros Estados brasileiros e me defronto com números de um país gigante, mas ao mesmo tempo pobre e anão. Mesmo São Paulo não é tão rica assim. Em termos de infra-estrutura, a começar pelo metrô, fica fácil de perceber as diferenças entre uma grande cidade rica (Paris) e uma grande cidade pobre (São Paulo). Com menos de 30 milhões de automóveis para quase 200 milhões de habitantes e um sistema de transporte precário, fica óbvio que a coisa não é tão rosa como alguns tentam se convencer. Claro, lendo isso na tela do computador já lhe separa da grande maioria dos brasileiros.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas como disse, já estou aqui há quase três anos e não é uma questão de competência pessoal ou resultado de um governo incorruptível (que nem aqui existe). O que será então a grande diferença entre estes dois países?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Minha opinião, humilde uma vez que não realizei um grande estudo, apenas observações do dia a dia; é que a grande diferença é no papel do estado em prover o básico para a formação de uma sociedade sadia. Já falei de saúde, o Brasil tem feito progressos, mas ainda está muito atrasado: os pobres sofrem nas mãos do atendimento público, sub-financiado e os ricos são reféns de planos de saúde, mas que resolvem os problemas mais básicos. Isso impede a melhoria de vida e do atendimento aos pobres, porque ninguém liga pros pobres, eles vivem em outro mundo, não é? Salvo em época de eleição.&lt;/div&gt;&lt;div&gt;Educação é outro ponto. Universidades públicas excelentes, mas escolas primárias e secundárias em tempo parcial. Não que não haja melhorias, mas na educação também temos dois sistemas paralelos: os ricos em escolas particulares e os pobres em escolas públicas. Quem estuda no grupo é o filho da empregada doméstica, então ninguém liga :-(&lt;/div&gt;&lt;div&gt;Segurança nem se fala. Olhando os índices de violência por bairro (fiz isso com os de Manaus em 2005) fica claro que os bairros mais violentos são os mais pobres. Isso fica pior em cidades onde os pobres são verdadeiramente excluídos, vivendo o mais longe melhor. Nos bairros ricos, os crimes também acontecem e são esses os combatidos e mostrados na TV!&lt;/div&gt;&lt;div&gt;Não é questão de ricos contra pobres, mas a existência de realidades paralelas no mesmo país. Se o sistema de saúde fosse realmente único, se todos tivessem que esperar o mesmo para ter uma consulta médica ou estudar nas mesmas escolas, a coisa seria diferente. Aí nos importaríamos realmente no que acontece no outro mundo. Pararíamos de enxergar os ricos como ladrões e os pobres como coitados... ou seria o inverso?&lt;/div&gt;&lt;div&gt;Isso tudo se resume em diminuir a desigualdade social. Na Europa, os ricos são muito ricos, mas também são muito poucos. Um engenheiro ganha de duas a três vezes mais que um operário e dependendo do país essa diferença é ainda menor! Nada como a diferença de 10 ou 20 vezes mais entre o salário de um engenheiro e o valor do salário mínimo. Depois não se entende o por quê da desigualdade !&lt;/div&gt;&lt;div&gt;Rico mora em condomínio fechado com segurança privada e faz compra em &lt;i&gt;shopping centers&lt;/i&gt;... o problema de segurança é mais sério no trajeto entre estes pontos e o trabalho, mas é tolerado. Criamos dois mundos no mesmo país, uma fronteira imaginária entre ricos e pobres.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O que fazer? O que é pior, ser rico no país dos pobres ou pobre no país dos ricos? Temos que escolher e pensar no bem de todos. Violência se resolve com renda e emprego, mas as pessoas precisam de saúde, moradia e educação para chegar lá. Eu sempre achei programas como o &lt;a href="http://www.mds.gov.br/bolsafamilia/"&gt;bolsa família&lt;/a&gt; populistas e criado por políticos na época de eleição, mas hoje acredito ser o caminho para obtermos um equilíbrio social durante a formação da nossa sociedade. Hoje o valor do bolsa família ainda é muito baixo, sentiríamos mais resultados se o valor fosse próximo ao do salário mínimo. Não é tão utópico assim, é comum na Europa. Na Bélgica se chama alocação familiar e é pago por filho com idade entre 0 e 24 anos (se continuar estudando). Embora não tenha o nome de bolsa família é bem parecido. Na época de volta às aulas, depositam uns 50€ para ajudar nos gastos (aqui 150€ de material escolar é um escândalo e sai na TV... ai eu pagava muito mais que isso, uns R$1.000 a R$1.500!). Recebe-se 800€ de prêmio pelo nascimento (1200€ pro primeiro filho)... Até sair da faculdade, valores entre 95 e 200€ por mês/filho são depositados na conta da esposa (pro pai não comprar pinga!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Temos um grande complexo de inferioridade como povo. Coisas como europeus são bons (fazendo referência aos brancos que nascem no Brasil) e todos os outros são vagabundos, corruptos ou simplesmente desajustados. Isso é um forma deslavada de racismo, mas que contamina nossa sociedade. É aceitar o estigma do jeitinho brasilieiro como algo gravado em nosso DNA. Alias, aqui, Brasil é tudo igual. Europeu é quem tem passaporte europeu e não importa a cor da pele.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sabendo que não são somos predestinados ao fracasso como povo e que nem negros, portugueses ou índios tem qualquer coisa a ver com isso... o que nos falta? Assumir a responsabilidade pelos nossos atos e omissões e continuar a vida como agentes de mudança e não como vítimas da história.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu realmente acredito que o Brasil será um grande país num futuro próximo, pensando em 2050. As taxas de crescimento e educação vem melhorando, lentamente, mas continuamente. É preciso acreditar e identificar o que está realmente errado. Iniciativas como a &lt;a href="http://amadaassociacao.blogspot.com/"&gt;Associação Amada&lt;/a&gt;, responsável pela divulgação do implante coclear em Manaus, mostram como chegar lá e o que fazer no caminho. É quando nossa sociedade se organizar para fortalecer suas bases e não apenas fazer carnaval (nada contra a festa, mas imagine um grande mutirão da educação ou barracões de matemática e ciências!). Feliz 7 de Setembro, dia da independência do Brasil.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-9159058819374675515?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/9159058819374675515/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=9159058819374675515' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/9159058819374675515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/9159058819374675515'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/09/rico-pais-pobre.html' title='Rico país pobre'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3453/3878274033_6915b43990_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-3370563756742184461</id><published>2009-09-06T07:04:00.007-04:00</published><updated>2009-09-06T09:27:44.673-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fotografia'/><title type='text'>Fotos panorâmicas com Hugin</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2547/3892526192_aa009d859b_b.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 1024px; height: 229px;" src="http://farm3.static.flickr.com/2547/3892526192_aa009d859b_b.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Tô começando a gostar de fotografia de verdade. Esta fotografia foi criada com o software livre &lt;a href="http://hugin.sourceforge.net/"&gt;Hugin&lt;/a&gt;.  Juntando-se 4 fotos normais, obtêm-se a vista panorâmica. Muito fácil de usar!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tamanho original &lt;a href="http://farm3.static.flickr.com/2547/3892526192_2c6119bab5_o.jpg"&gt;3733x834&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-3370563756742184461?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/3370563756742184461/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=3370563756742184461' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3370563756742184461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3370563756742184461'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/09/fotos-panoramicas-com-higin.html' title='Fotos panorâmicas com Hugin'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2547/3892526192_aa009d859b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1449921150049298365</id><published>2009-08-28T15:48:00.003-04:00</published><updated>2009-08-28T15:53:33.595-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac os x'/><title type='text'>Snow Leopard na área</title><content type='html'>Bom, a instalação finalmente terminou e o World of Warcraft continua funcionando. Quase 1 hora de instalação e uns 4 boots depois, tudo terminou bem. A instalação é toda automática, deixei instalando e fui ver televisão. Toda customização de cores, teclado, língua, dashboard etc foi mantida. O bom e velho Mac de sempre.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1449921150049298365?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1449921150049298365/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1449921150049298365' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1449921150049298365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1449921150049298365'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/08/snow-leopard-na-area.html' title='Snow Leopard na área'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-9157289817518981266</id><published>2009-08-25T15:18:00.002-04:00</published><updated>2009-08-25T15:36:43.036-04:00</updated><title type='text'>iTunes - Além da música</title><content type='html'>Hoje, revisitei o iTunes U. Pra quem ainda não conhece, o iTunes U é uma seção do iTunes Store com aulas de diversas Universidades. A quantidade de cursos vem crescendo e a qualidade é muito boa, embora eu prefira as aulas com vídeo aos podcasts.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Vídeos do MIT e Stanford? Tem lá e de graça. Eu procuro mais vídeos sobre matemática e estatística, séries de Fourier e outras coisas que preciso no trabalho, mas tem muito material sobre história, economia e biotecnologia entre outros. Alguns introdutórios, outros bem avançados, faltando as vezes cursos entre estes dois extremos, mas um ótimo recurso para se ter uma idéia do assunto ou simplesmente outra visão.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fica a dica para quem estiver procurando o que assistir na televisão.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-9157289817518981266?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/9157289817518981266/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=9157289817518981266' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/9157289817518981266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/9157289817518981266'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/08/itunes-alem-da-musica.html' title='iTunes - Além da música'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7939652495832036787</id><published>2009-07-14T17:13:00.004-04:00</published><updated>2009-07-14T18:06:54.869-04:00</updated><title type='text'>A Era do Console</title><content type='html'>&lt;div&gt;Ainda lembro dos "mágicos" da época do DOS. Aquele pessoal que criava seus prompts coloridos ou com gráficos inimagináveis para época (caracteres especiais e símbolos perdidos em páginas de código quase esquecidas). Lembro quando um colega comprou o MS DOS 5.0 e passamos uma tarde para configurar a tal página 850. O Manual dizia que os acentos do português só apareceriam corretamente nela. Tudo muito simples, apenas algumas linhas no CONFIG.SYS e outras no AUTOEXEC.BAT. É, o Word era modo texto. Depois disso, descobrimos que o teclado também tinha que ser configurado... mais linhas no AUTOEXEC.BAT. Claro que nada disso resolvia o problema de imprimir os acentos na impressora, isso era outra batalha!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas já era uma vitória ter maiúsculas e minúsculas... coisa opcional nos anos 80... acentos era luxo :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O livro dos mágicos era o manual do MS DOS. Coisa rara porque naquela época muita gente nem sabia que se vendia isso. Software ainda vinha com manual impresso e poucos liam. Os que liam se tornavam seres míticos, capazes de dominar o DOS e outros dinos da época como o SCO.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depois disso eu ganhei um mouse, mas achava que só serviria para desenho :-D Mas eu estava enganado. O mouse e as GUI matariam o console em pouco tempo. Eram os anos 90... Windows 3... coisas cabeludas da época. Bom mesmo era usar o Amiga de outro colega com jogos e o poderoso Amiga OS. No PC só DOS e o Windows que rodava no DOS. Consumia tanta memória (RAMs de 1MB, HDs de 10 MB eram comuns) que não sobrava espaço para mais nada, QEMM que o diga. Meu micro não rodava Word for Windows, porque era um AT 286, mas o Windows enrolava nele... com o Windows 3.1 consegui um 486, 4MB de RAM e finalmente pude rodar o Word for Windows ! Antes eu me divertia com a sofisticação do write.exe... acentos impressos em qualquer impressora e documentos com qualidade de carta (essa é velha)! Mas o console continuaria reinando até o Windows 95.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hoje com aplicativos Web e a tal da Web 2.0, o console perdeu a graça. Console só em sistema velho de farmácia ou posto de gasolina. Fosseis vivos escritos em Clipper. Eu ainda uso todo dia no Linux, no Mac e no Ruindows, gente não muda facilmente. A era do console acabou, mas que o bicho ajuda, ajuda. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu tentei escrever scripts com saída colorida em Python. Descobri que existem várias bibliotecas para isso, mas bibliotecas multiplataforma não achei nenhuma. Claro, quem que ainda trabalha com isso?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Curses, WConio e pequenos scripts abundam, mas todos precisam de módulos em C que são bem chatos de distribuir com o script, principalmente pro Ruindows.&lt;/div&gt;&lt;div&gt;Eu acabei por escrever um pequeno módulo para trocar a cor, limpar a tela e configurar o título da janela do console ou xterm. Até agora está funcionando no Linux e no Mac, mas falta unificar a parte Windows. No console do Windows não tem muito o que fazer, senão usar a ctypes para chamar algumas funções da kernel.dll. Apesar de usar a ctypes, dá pra mascarar a inicialização de acordo com o sistema operacional e fazer tudo em Python.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acabei criando um projeto open source para isso. Pelo menos não vou esquecer o trabalho que deu, nem ter que fazer backup sozinho. Vou colocar os fontes aqui: &lt;a href="http://code.google.com/p/colorconsole/"&gt;http://code.google.com/p/colorconsole/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fuçando essa arte quase esquecida, achei como mudar o prompt padrão do console do Windows XP. É bem simples, como tudo no Windows:&lt;/div&gt;&lt;div&gt;1. Você abre o regedit&lt;/div&gt;&lt;div&gt;2. Procura a chave &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;3. Crie uma entrada string com o nome PROMPT&lt;/div&gt;&lt;div&gt;4. Digite seu novo prompt, por exemplo: &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;[%computername%]$S$P$G&lt;/span&gt;&lt;/div&gt;&lt;div&gt;5. Log off e log in, claro senão não seria o velho XP :-)&lt;/div&gt;&lt;div&gt;6. Se tudo deu certo, seu prompt padrão do Ruindows foi mudado!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Passo-a-passo &lt;a href="http://www.pctools.com/guides/registry/detail/1252/"&gt;aqui&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se você ainda usa o cmd.exe diariamente, vale a pena instalar o "Open Command Window Here" no Windows Explorer. Um power toy da Microsoft que pode ser baixado &lt;a href="http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/CmdHerePowertoySetup.exe"&gt;aqui&lt;/a&gt;. Como eles mudam o site deles a cada 4h, melhor procurar no Google.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7939652495832036787?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7939652495832036787/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7939652495832036787' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7939652495832036787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7939652495832036787'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/07/era-do-console.html' title='A Era do Console'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-6773755687185039265</id><published>2009-06-14T06:19:00.004-04:00</published><updated>2009-06-14T07:20:20.271-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Computador Cebola</title><content type='html'>Um computador cebola é um notebook de trabalho que você tem há vários anos e que ainda não conseguiu trocar :-) Só de olhar, já dá vontade de chorar, como cebolas.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Toda empresa grande ou pequena tem um sacerdote dos micros ou responsável por TI. Normalmente o cara tem trabalho até a próxima geração e foge de novidades como o diabo da cruz... nada deve mudar. Os mesmos caras que condenaram sua empresa a usar o Windows 2000, porque o Windows XP não presta, Vista é heresia !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A fé torta desses caras é tamanha quando você vê que eles usam Mac Book Pros... mas que formataram o bicho e tiraram o melhor da máquina, o Mac OS X, para instalar qualquer outra coisa. Dá para imaginar um Mac Book Pro com Ubuntu ? Digo, só com Ubuntu ? É como comprar uma Ferrari para ir a feira.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outra arma do pessoal de TI são os sistemas internos. Quer um HD novo ? Abra um ticket to sistema XYZ... Quando você tem sorte, o sistema deles é integrado com outros da empresa, se der azar, vai ter que se cadastrar :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se você enjoar de falar com o sacerdote de plantão, um jeito de se livrar deles é perguntar sobre backups. Se o cara for de TI mesmo, vai desaparecer em menos de 5s, claro dizendo que é você quem deve fazer os backups... naqueles discos compartilhados de rede com 1GB para tudo que você tem :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas, o mais legal mesmo é quando você tem que escrever um relatório dizendo que o Cebola está lento. Eu recebi o meu com 1GB de RAM, mas consegui fazer o upgrade para 2 GB (30€!). Falta o HD encantado (320GB - 40€), pois o HD do Cebola é muito lento e pequeno (100GB). Claro que um cebola desses não é tão ruim, mas experimente rodar o Visual C++ 2005 em uma máquina virtual (Virtual PC) com 512 MB de RAM ou ressucitar o NetBeans das profundesas do HD. Rodar, roda, tudo funciona. Agora se o mais caro nessa história toda é o tempo do desenvolvedor, por que não ter máquinas melhores ? Vejo um Mac Book Pro no fim do tunel...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outro fator é o stress de chegar de manha e acordar o Cebola. Eu tenho um ritual de chegar e dar o boot, correr para fazer café (é... aqui você faz tudo mesmo) e depois voltar para fazer o login, beber mais café, abrir o Firefox e o Thunderbird... mas aí já não tem mais copo grande o suficiente para tanto café. Acho que o coitado do Cebola leva uns 5 minutos para fazer tudo isso! E o Cebola é temperamental. Se você importuná-lo durante esse ritual matinal, o tempo pode dobrar. Se quiser deixar o Cebola realmente contrariado, deixe o Skype inicializar automaticamente... aí sim, o dia foi pro saco.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uma coisa boa do Cebola é que o pior é logo pela manhã, depois disso é uma máquina aceitavél e confiável. Acho que problema é o HD cansado do bicho mesmo e o cretino do Windows XP que não sabe acessar o disco. O Cebolinha, irmão mais velho do Cebola, roda Linux. Com 1GB de RAM não tenho problema e olha que deixo o Tomcat rodando! Falar nisso eu instalei o Windows 7 no meu Mac, mas deixei o Mac OS X :-) Até agora tudo bem. Fico sem saber se realmente a diferença é o hardware bom ou se a Microsoft esqueceu de deixar o Windows 7 lento, mas isso eles devem corrigir nos primeiros service packs :-D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-6773755687185039265?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/6773755687185039265/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=6773755687185039265' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6773755687185039265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6773755687185039265'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/06/computador-cebola.html' title='Computador Cebola'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5363500277871498925</id><published>2009-05-17T14:29:00.006-04:00</published><updated>2010-11-29T04:25:09.195-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='bootcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='mac os x'/><title type='text'>Windows 7 com BootCamp</title><content type='html'>Querendo jogar no Mac, acabei baixando o &lt;a href="http://www.microsoft.com/Windows/Windows-7/download.aspx"&gt;Windows 7 RC&lt;/a&gt; da Microsoft. A dúvida era se podia instalar com o BootCamp, fiquei sabendo que podia &lt;a href="http://www.simplehelp.net/2009/01/15/using-boot-camp-to-install-windows-7-on-your-mac-the-complete-walkthrough/"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As coisas mais importantes a fazer antes de começar são:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Achar os discos de instalação do Mac OS X&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fazer um back-up do sistema&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Imprimir as instruções do BootCamp&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Os discos do Mac OS X são necessários para a instalação dos drivers. Backup sempre é bom e o Time Machine ajuda. As instruções do BootCamp tem umas 20 páginas, mas dá para imprimir 4 páginas por folha e salvar algumas árvores.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Feito isso, é só seguir as instruções. No meu caso, tudo correu bem, mas alguns momentos de fé foram necessários. Depois de copiar os arquivos, o Windows resolve dar o boot pela primeira vez. Eu recebi uma mensagem para dar o boot pelo CD, mas basta ignorar que o Windows do HD é iniciado.&lt;/div&gt;&lt;div&gt;Depois disso, ele pede para se atualizar e reinicia uma segunda vez.&lt;/div&gt;&lt;div&gt;O Wifi e a rede voltaram funcionando sem problemas, mas o micro estava sem som.&lt;/div&gt;&lt;div&gt;Os drivers do bootcamp ficam no disco 1 do Mac OS X. Execute o setup.exe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eu tive uma mensagem de erro nesse ponto, o erro 2229. Se isso acontecer com você, copie o disco 1 para uma pasta do Windows. Baixe um programa chamado &lt;a href="http://www.technipages.com/download-orca-msi-editor.html"&gt;orca&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Ele é um editor de arquivo .msi. O erro 2229 acontece porque o instalador recusa a versão do Windows 7. Depois de instalar o orca, abra o bootcamp.msi que você copiou do CD original do Mac OS X. Ele vai exibir uma lista  a direita com várias opções, escolha "Launch Condition Table" e com o botão direito "Drop table". Grave o bootcamp.msi e execute o setup.exe que você copiou do CD. Agora o bootcamp deve instalar sem problemas, salvo os avisos do Windows 7 sobre incompatibilidade, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tudo funciona bem depois do bootcamp instalado, mas com alguns probleminhas. Eu consegui ter som e até fazer a câmera funcionar. O microfone funciona, embora não apareça no Skype por exemplo. Os drivers novos da placa de vídeo você consegue rodando  o Windows Update pelo IE8. Até consegui jogar com essa nova instalação. Fora isso, até os overlays de volume, brilho e a tecla eject funcionam bem. O alt gráfico no meu maravilhoso teclado belga não funciona, mas as outras teclas sim.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vale lembrar que o Windows 7 RC só funciona até março de 2010. Como só usarei para testar e jogar, não tem problema. Depois você pode instalar o Windows 7 que comprar ou simplesmente deletar a partição usando também o bootcamp.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No site da Apple, está disponível o bootcamp 2.1 (BCUpdateVista32), mas esse eu não consegui fazer funcionar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para registro, instalei usando o Mac OS 10.5.7. Ao dar o boot, pressiona alt para escolher entrar no Mac OS ou no Windows 7. Abrindo as preferências do sistema, discos de inicialização você pode configurar qual dos dois sistemas será o padrão.&lt;br /&gt;&lt;br /&gt;Update: para instalar o bootcamp 2.1, siga as instruçoes desse post &lt;a href="http://www.macmagazine.com.br/forum/index.php?showtopic=2996#p16518"&gt;aqui&lt;/a&gt;. Basta abrir o regedit, achar o bootcamp services no registry e mudar Language para 0x409 ! Mais detalhes no post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5363500277871498925?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5363500277871498925/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5363500277871498925' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5363500277871498925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5363500277871498925'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/05/windows-7-com-bootcamp.html' title='Windows 7 com BootCamp'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7218660541089678560</id><published>2009-04-25T15:28:00.002-04:00</published><updated>2009-04-25T15:31:03.732-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Bitnami</title><content type='html'>Instalar pacotes open source no Windows não era fácil. Com o &lt;a href="http://bitnami.org/"&gt;Bitnami&lt;/a&gt;, o trabalho fica bem mais próximo do Linux. Django, Ruby, Trac, tudo fácil de instalar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7218660541089678560?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7218660541089678560/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7218660541089678560' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7218660541089678560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7218660541089678560'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/04/bitnami.html' title='Bitnami'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7831668728932366301</id><published>2009-04-22T10:56:00.011-04:00</published><updated>2009-04-22T16:16:37.352-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Alterar nome de usuários com SVN</title><content type='html'>Eu precisei mudar o nome do usuário que fez commits no repositório SVN ao migrar de uma máquina para outra. No caso, o repositório havia sido criado para uso local, com usuários locais e depois integrado para uso do departamento.&lt;br /&gt;&lt;br /&gt;Para trocar os nomes dos usuários:&lt;br /&gt;1) Fazer um dump do repositório (até para backup) usando o svnadmin&lt;br /&gt;&lt;div class="shell"&gt;&lt;pre&gt;svnadmin dump REPO_PATH &amp;gt; dump1&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;2) Utilizando o svndumptool.py:&lt;br /&gt;&lt;div class="shell"&gt;&lt;pre&gt;svndumptool.py transform-revprop svn:author \&lt;br /&gt;NOME_ANTIGO NOME_NOVO dump1 dump2&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Onde dump1 é o nome do arquivo criado no passo 1 e dump2 o novo dump com o nome já trocado.&lt;br /&gt;&lt;br /&gt;O svndump pode ser instalado e baixado daqui: &lt;a href="http://svn.borg.ch/svndumptool/"&gt;http://svn.borg.ch/svndumptool/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7831668728932366301?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7831668728932366301/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7831668728932366301' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7831668728932366301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7831668728932366301'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/04/alterar-nome-de-usuarios-com-svn.html' title='Alterar nome de usuários com SVN'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-8735380593428575097</id><published>2009-03-29T15:31:00.003-04:00</published><updated>2009-04-25T15:22:35.722-04:00</updated><title type='text'>Modularização</title><content type='html'>Esse vídeo é muito interessante e rápido de assistir. Conceitos como modularização e acoplamento são explicados de maneira prática e intuitiva. &lt;div&gt;Eu aprendi a programar lendo manuais de computadores feitos no Brasil :-) Era a reserva de mercado. Primeira linguagem: BASIC... mas nada de visual ou mesmo do Quick Basic. Eu usava um TK85 e aprendi o Sinclair Basic. No segundo grau, resolvi cursar uma escola técnica de informática. Lá fui apresentado a outras linguagens: Pascal, C, Cobol, Clipper, Modula. Orientação a Objetos ainda era uma coisa distante, Borland C++ 1.0 e Turbo Pascal 6... bons tempos. A moda na época era programação estruturada, mas o vídeo abaixo resume tudo isso:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://mwrc2009.confreaks.com/player.swf" height="380" width="640" allowscriptaccess="always" allowfullscreen="true" flashvars="image=images%2F14-mar-2009-18-10-the-building-blocks-of-modularity-jim-weirich-preview.jpg&amp;amp;file=http%3A%2F%2Fmwrc2009.confreaks.com%2Fvideos%2F14-mar-2009-18-10-the-building-blocks-of-modularity-jim-weirich-small.mp4&amp;amp;plugins=viral-1"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Principle_of_least_knowledge"&gt;Lei de Demeter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-8735380593428575097?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/8735380593428575097/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=8735380593428575097' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8735380593428575097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8735380593428575097'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2009/03/mudularizacao.html' title='Modularização'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-3060353058304854867</id><published>2008-12-26T06:00:00.001-04:00</published><updated>2009-04-25T15:27:20.553-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Mouse morto no Ubuntu</title><content type='html'>Esse é para registrar e poupar o Google :-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quando instalei o Linux na minha máquina de casa, o primeiro problema que tive foi o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;mouse&lt;/span&gt; parar de funcionar de tempos em tempos. Embora o resto do computador continuasse funcionando, o X morria. Depois de muito navegar e pesquisar, descobri ser um problema no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;chipset&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;nvidia&lt;/span&gt; 4, que a minha placa mãe utiliza. Ainda que plausível, este problema não causa qualquer problema no Windows XP. Isso me levou a vergonhosa tarefa de explicar às crianças que o Linux travava. Minha filha do meio perguntou porque usávamos o Linux, já que Windows XP não travava !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Com o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Ubuntu&lt;/span&gt; 8.10, renovei minhas esperanças, mas o bug continua lá. O problema congela o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;mouse&lt;/span&gt; e depois o teclado, se este estiver ligado a porta &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;USB&lt;/span&gt;. Comprei um teclado PS/2 (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;argh&lt;/span&gt;!) e tentei comprar um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;mouse&lt;/span&gt; também PS/2, mas para o outro micro :-) Descobri que o adaptador não funcionava e acabei usando como &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;USB&lt;/span&gt; mesmo. Restou então utilizar bruxaria:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Script&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ressuscita&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;mouse&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;#!/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;bin&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;modprobe&lt;/span&gt; -r &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;usbhci&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;modprobe&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;usbhci&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Usando o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;xbindkeys&lt;/span&gt; e o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;xbindkeys&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;conf&lt;/span&gt; (ambos podem ser instalados usando &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;apt&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;get&lt;/span&gt;), configurei &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;ALT&lt;/span&gt;+M para executar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;script&lt;/span&gt; acima. Como precisa ter poderes de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;root&lt;/span&gt; para executar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;modprobe&lt;/span&gt;, criei o atalho usando o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;gksudo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;ressussita&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;mouse&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Funciona bem se você ainda tiver teclado :-) Como liguei meu teclado a porta PS/2, ele não é mais &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;afetado&lt;/span&gt; pelo problema. Se seu teclado for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;USB&lt;/span&gt;, a solução é fazer um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;ssh&lt;/span&gt; para máquina e executar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;script&lt;/span&gt; na mão.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Claro que eu reportei esse bug há bastante tempo, mas acho que o pessoal não liga muito para ele, ou ele é realmente difícil de resolver: &lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/84762"&gt;Link pro bug&lt;/a&gt;. De qualquer forma, fica o registro dessa solução quebra-galho aqui.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-3060353058304854867?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/3060353058304854867/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=3060353058304854867' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3060353058304854867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3060353058304854867'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/12/mouse-morto-no-ubuntu.html' title='Mouse morto no Ubuntu'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7850893243151373477</id><published>2008-12-24T06:00:00.004-04:00</published><updated>2008-12-24T06:46:18.186-04:00</updated><title type='text'>Saudade e coisas de ano novo</title><content type='html'>O ano de 2008 passou muito rápido para mim e 2009 já está na porta.&lt;div&gt;A vida passa mais lentamente em cidades pequenas, pelo menos pra mim, mas nem tão lentamente assim. Como a TV Belga é muito ruim e minha TV (por IP) é pior ainda, resolvi alugar alguns DVDs e lembrar de coisas interessantes do Brasil.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Primeiro, alugar DVDs no Brasil é fácil. Você vai na locadora e pega 20 :-) Com algum cálculo mágico, eles te dão algo como uns 5 dias para ver os filmes. Aqui é mais simples. Pegando 10 DVDs ou 20, tem que devolver no dia seguinte ! E tem mais, a locadora só abre de 13:00 às 20:00... se devolver depois das 17:00 paga multa de €5,00 !!! Tudo muito mágico :-) Isso explica o por quê nosso recorde é de 3 DVDs no fim de semana (claro que não abre domingo, fica para segunda). Alias, nada abre domingo aqui: farmácias, supermercados... pode esquecer! Só restaurante e cinema e olhe lá!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esse ano não vamos voltar ao Brasil pro Natal devido a crise do petróleo :-). A passagem dobrou de preço, mas agora está só 50% mais cara... de €600 para €900 é o que eu queria dizer, mas já foi €1.200 no auge da crise. O jeito é usar o Skype e o Orkut para falar com a família e os amigos. O bom e velho email fica de reserva.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;É nessas horas que a razão volta e ajuda a passar a saudade. Internet no Brasil é um lixo mesmo. Até para falarmos pelo Skype é dureza. Manaus é uma cidade amaldiçoada em relação a Internet. Isolada no meio do continente e com a pior e mais cara Internet do país.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fora as lembranças da Internet capenga, temos um kit de 3 DVDs para passar a saudade: Carandiru, Cidade de Deus e Tropa de Elite. Quando a saudade pinta, é só assistir a um desses filmes. Com o tempo, lembramos do Brasil e por incrível que pareça, lembramos só das melhores partes. Eu esperava não esquecer das piores partes, mas nada é perfeito, nem aqui nem lá, em lugar nenhum. Acabamos por contruir a imagem de um Brasil mais bonito do que realmente é, mas isso é coisa de imigrante mesmo :-) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Brasil é um país muito interessante e nossa pátria, isso o tempo não muda. Eu ainda acredito que a longo prazo, o Brasil será muito melhor que qualquer país europeu, mas isso por enquanto é só um sonho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esse ano conheci mais brasilieiros, o que definitivamente não é bom para aprender francês :-) mas que ajuda muito nessa época de Natal. Ao sair do país aprendemos a dar valor a coisas que antes eram certas como a ceia de Natal e os almoços de domingo em família.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como nada é perfeito, o Orkut não funciona bem aqui em casa. As imagens e páginas simplesmente não carregam :-( Se eu esquecer de contactar alguém, fica aqui o registro de Feliz Natal e próspero ano novo. Com 5 horas de diferença para Manaus, ligar fica complicado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Feliz Natal e próspero ano novo!&lt;/div&gt;&lt;div&gt;Joyeux Noël et Bonne Année!&lt;/div&gt;&lt;div&gt;Prettige Kerstdagen en een Gelukkig Nieuwjaar!&lt;/div&gt;&lt;div&gt;Frohe Weihnachten und ein gutes Neues Jahr!&lt;/div&gt;&lt;div&gt;Merry Christmas and a Happy New Year!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7850893243151373477?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7850893243151373477/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7850893243151373477' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7850893243151373477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7850893243151373477'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/12/saudade-e-coisas-de-ano-novo.html' title='Saudade e coisas de ano novo'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7743479197077717931</id><published>2008-11-02T04:31:00.002-04:00</published><updated>2008-11-02T06:03:46.607-04:00</updated><title type='text'>Ubuntu 8.10</title><content type='html'>Eu fiquei muito impressionado com o Ubuntu 8.04, não podia deixar passar o 8.10 sem testá-lo. O 8.04 eu havia testado em uma máquina virtual, o Virtual PC da Microsoft e funcionou bem depois de passar alguns parâmetros na inicialização do kernel. Há duas semanas também tive uma outra surpresa muito agradável usando Linux, quando o Bluetooth em Java funcionou sem problemas, ou melhor, com menos problemas que no Windows. Isso resume o quanto eu estava motivado para instalar o novo Ubuntu.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Baixei a imagem e gravei um CD de &lt;span class="Apple-style-span" style="font-style: italic;"&gt;boot&lt;/span&gt; com o 8.10. Pra minha surpresa, embora a gravação tenha ocorrido bem, o CD não passou na verificação disponível no &lt;span class="Apple-style-span" style="font-style: italic;"&gt;boot&lt;/span&gt;. Gravei outro CD, pois não confio no meu gravador já faz tempo. O segundo CD bootou bem e também passou na verificação de integridade. Eu havia separado partições no disco para brincar com o Linux: uma para o /boot, outra para o &lt;span class="Apple-style-span" style="font-style: italic;"&gt;swap&lt;/span&gt; e finalmente uma para a raiz. Embora a instalação tenha sido mais lenta do que eu esperava, tudo ocorreu bem, salvo a perda de cores ao trocar do terminal pro modo gráfico. Isso me lembrou um dos maiores pesadelos de quando instalei meu primeiro Linux: fazer o X funcionar! Na época de placas VGA Trident... a coisa era realmente feia. Lembro que comecei a usar Linux porque podia criar vários terminais e ele botava com um simples &lt;span class="Apple-style-span" style="font-style: italic;"&gt;floppy&lt;/span&gt; de 1.44 MB! Ontem, instalei o Ubuntu com a ATI Radeon 4670, uma placa média, mas que foi lançada há pouco tempo, menos de três meses.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O que mais me irritou durante a instalação foi a parte do particionamento. Eu já instalei diversos Linux antes, mas desta vez fiquei um pouco inseguro com o particionador da Canonical. Primeiro deu um belo problema, pois o iPod da minha esposa estava carregando e foi reconhecido pelo particionador como um drive USB, mas com partições incompatíveis. Depois disso, o particionador se perdeu e tive que reiniciar a instalação do zero, sem o tal do iPod desta vez.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Na segunda tentativa, tudo correu bem e até o particionador estava ajudando. Salvo a tela que pede para escolher a partição onde instalar o Ubuntu. Eu queria testar o 8.10 numa partição real, nada de máquina virtual. Mas a máquina também é usada por outras pessoas aqui de casa e obviamente roda Windows. Essa foi a etapa mais difícil, escolher o particionamento manual, com os gráficos de alocação do disco nada confiáveis e acreditar que na próxima tela eu teria oportunidade de escolher onde instalar o Ubuntu. No final, tudo ocorreu bem, o particionador finalmente perguntou onde instalar o Linux e que partições formatar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A instalação demorou mais do que eu esperava, mas acredito que tenha sido meu drive de CD o culpado. No final, o Ubuntu instalou o Grub (sem perguntar) e adicionou mesmo o boot do Windows. Uma ressalva fica para o Grub: uma simples tela preta ! O grub do Gentoo que é um bicho de casca dura é muito mais bonito e colorido. O tema do GRUB padrão do Ubuntu é simples demais até para quem veio da era DOS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Após um reboot, o sistema começou a funcionar muito bem e até ofereceu instalar os drivers proprietários da ATI ! Isso realmente foi inesperado, normalmente as distros são xiitas e não deixam instalar software "impuro" sem perguntar 3 vezes, quando deixam. A verdade é que quem compra uma placa de vídeo da ATI ou da NVidia pretende usá-las em jogos e aplicativos com aceleração 3D, pouco importa de onde veio o driver, desde que funcione. O modo xiita-open-source-seguidor-de-Stallman deveria ser opcional. Nada contra open source, mas nem todo usuário de Linux tem vocação ou tempo para ser um guerreiro do Emacs ou coisas assim. Muitos querem apenas um computador que funcione bem. Se é para ter problemas com drivers e paus constantes, melhor ficar no Windows mesmo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uma decepção veio com a versão do OpenOffice ainda a 2.4 e não a 3.0, mas por enquanto passa. Outro problema foram os temas... a escolha é tão ruim que o tema "human" fica realmente lindo. Ainda não fui atrás de outros temas, mas eu preciso de telas mais claras para crianças. Instalei o edubuntu para ter os programas que elas usam, mas ainda preciso humanizar a "human" para ser usado por humanos mais jovens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uma boa notícia é que o problema do &lt;span class="Apple-style-span" style="font-style: italic;"&gt;mouse&lt;/span&gt; que travava o micro nas versões anteriores parece ter sido resolvido. Era um problema de hardware, com a controladora USB da Nvidia... mas que só ocorria no Linux, o bom e velho XP (a que ponto chegamos...) não tinha problema algum com o rato (mesmo escolhendo Português do Brasil veio rato como mouse mesmo:-) ). Pelo menos até agora. Enfim, o Ubuntu 8.10 está muito bom e quase pronto para ser usados por leigos. Eu diria que se você possui uma máquina que pode ser dedicada ao Linux, o Ubuntu pode até mesmo ser instalado sem grandes conhecimentos técnicos. Na 8.04 eu instalei usando o Wubi e foi muito bom, embora não tenha feito a mesma coisa com a 8.10, está também é uma grande alternativa. O melhor que é grátis para testar e correções saem todos os dias.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7743479197077717931?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7743479197077717931/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7743479197077717931' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7743479197077717931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7743479197077717931'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/11/ubuntu-810.html' title='Ubuntu 8.10'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-578671479076344008</id><published>2008-08-29T04:18:00.001-04:00</published><updated>2008-08-29T04:19:52.930-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='dicas'/><title type='text'>Firefox Ubiquity</title><content type='html'>O Mozilla Labs &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;está&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;experimentando&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;uma&lt;/span&gt; nova &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;extensão&lt;/span&gt; para o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Firefox&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;chamada&lt;/span&gt; &lt;a href="http://labs.mozilla.com/2008/08/introducing-ubiquity/"&gt;Ubiquity&lt;/a&gt; . Esta &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;extensão&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;permite&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;que&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;você&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;abra&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;uma&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;janela&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;de&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;comandos&lt;/span&gt; no browser e realize mash-ups &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;muito&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;interessantes&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;versão&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;de&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;teste&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;veja&lt;/span&gt; o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;vídeo&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;traz&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;recursos&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;como&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;fazer&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;pesquisas&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;rápidas&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;na&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Wikipedia&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;pesquisar&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;endereços&lt;/span&gt; no Google Maps &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;entre&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;outros&lt;/span&gt;. O &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;melhor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;de&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;tudo&lt;/span&gt; é &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;que&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;os&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;usuários&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;podem&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;definir&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;novos&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;comandos&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;veja&lt;/span&gt; o &lt;a href="https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_Author_Tutorial"&gt;tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Se &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;você&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;quer&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;inserir&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;mapas&lt;/span&gt; no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;seu&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;gmail&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;traduzir&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;trechos&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;de&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;páginas&lt;/span&gt; web, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;procurar&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;livros&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;na&lt;/span&gt; Amazon &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;sem&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;sair&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;da&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;página&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;atual&lt;/span&gt;, Ubiquity &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;pode&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;ter&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;sido&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;feita&lt;/span&gt; para &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;você&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-578671479076344008?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/578671479076344008/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=578671479076344008' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/578671479076344008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/578671479076344008'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/08/firefox-ubiquity.html' title='Firefox Ubiquity'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5843807037463090909</id><published>2008-08-20T16:03:00.006-04:00</published><updated>2008-08-20T16:36:56.469-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='dicas'/><title type='text'>Backups</title><content type='html'>O tempo passa e até os computadores ficam velhos. Meu Ruindows nem se fala...&lt;div&gt;&lt;br /&gt;&lt;div&gt;Depois que passei a usar o Mac, o PC ficou entregue as baratas, quer dizer aos outros usuários aqui de casa. A festa começou com temas alegres do fundo do mar, peixinhos 3D e coisas bizarras do tipo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Infelizmente, computador não fica melhor com o tempo... e a coisa ficou feia até para ligar. Estou aproveitando para sacrificar minha instalação e começar outra do zero. Mas isso não é tão simples.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Meu computador é uma bomba feita pela Acer, logo não tem disco de instalação do Windows XP... só o tal disco de backup que eu mesmo tive que gravar... OK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outra coisa são softwares chatos que compramos e estragam nosso computador. Já estou imaginando aqui o aperreio para reinstalar o Delphi (original, por isso dá trabalho) e os milhares de jogos que meu filho joga (originais também, justo aqueles que pedem o CD no drive!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vou aproveitar para fazer um backup geral do sistema. Comprei um disco externo de 500Gb no supermercado, €69... um Maxtor Basic. Comecei o backup e descobri porque se chama Basic... tem que ser a velocidade do bicho... depois olhei direito e vi que tinha marcado apenas 76 GB pro backupzinho. Estou usando o NTI Backup que a Acer me deu !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como não confio no Ruindows, vou fazer também uma imagem completa do sistema. Descobri que o NTI não faz imagem de HD, isso é um outro produto e esse não vem de graça no micro.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Visitando o &lt;a href="http://www.thefreecountry.com/"&gt;thefreecountry&lt;/a&gt;, achei a &lt;a href="http://www.thefreecountry.com/utilities/backupandimage.shtml"&gt; lista dos softwares gratuitos que fazem imagem de HD &lt;/a&gt;... mas o bom mesmo é o da Maxtor, o &lt;a href="http://www.seagate.com/ww/v/index.jsp?locale=en-US&amp;amp;name=MaxBlast_5&amp;amp;vgnextoid=7add8b9c4a8ff010VgnVCM100000dd04090aRCRD"&gt;MaxBlast&lt;/a&gt;. Como o disco externo é de lá, resolvi usar o tal programa. Se você não tem um HD Maxtor, o preço do &lt;a href="http://www.acronis.com/"&gt;Acronis&lt;/a&gt; &lt;a href="http://www.acronis.com/homecomputing/products/trueimage/"&gt;True Image&lt;/a&gt;(o MaxBlast para quem não é cliente da Maxtor) é quase mais caro que o próprio drive externo... compensa comprar o drive pelo software :-D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas o que mais me chamou a atenção é um artigo sobre &lt;a href="http://www.howtohaven.com/system/createwindowssetupdisk.shtml"&gt;como criar um disco de boot do Windows XP&lt;/a&gt;, escrito para àqueles afortunados como eu que compraram computador de "marca". O artigo é bem completo, dizendo o que finalmente fazer com aquele diretório i386 do seu computador.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A aventura ainda não terminou, afinal, backup nunca é rápido e reinstalação menos ainda.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5843807037463090909?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5843807037463090909/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5843807037463090909' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5843807037463090909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5843807037463090909'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/08/backups.html' title='Backups'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-8631435574364035468</id><published>2008-05-02T11:42:00.003-04:00</published><updated>2008-05-02T12:40:27.414-04:00</updated><title type='text'>A Mac Life</title><content type='html'>Toda mudança dá trabalho, mudar de micro não é fácil. Pra não deixar barato, resolvi testar um Mac desta vez, um iMac.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Três dias depois da troca ainda estou me recuperando. Os atalhos de teclado me atrapalham, mas alguns já começam a ajudar nas tarefas do dia a dia. Antes um pouco de história:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para me vingar do meu Windows, instalei o &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; 8.04 com o &lt;a href="http://www.ubuntu.com/getubuntu/releasenotes/804"&gt;Wubi&lt;/a&gt;... que instala o Ubuntu na partição NTFS. O mais engraçado foi ler Ubuntu abaixo de Microsoft Windows no próprio utilitário de boot da Microsoft, impagável. Mas o bicho não gosta do meu PC, ou meu PC não gosta de sistema operacional algum. A impressora parou de funcionar no Windows, depois que eu instalei a câmera de vídeo... não consigo reinstalar nem com reza. O scanner foi junto, maldito &lt;span class="Apple-style-span" style="font-style: italic;"&gt;driver&lt;/span&gt; integrado. Infelizmente tenho vários programas registrados no Windows, melhor deixar como está e instalar a impressora em outro micro. O jeito é acreditar no Wubi e seguir com a instalação.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Em vingança, o Ubuntu e desde o antigo Gentoo da minha máquina resolveram combinar de não funcionar com a minha placa de vídeo. Até funciona, mas trava. Engraçado que o XP na mesma máquina não imprime mais, mas não me lembro da última vez que ele travou. Descobri que ter um AMD 64x2 com placa de vídeo da ATI é querer ter problemas com o Linux e com o X. O Ubuntu até que tenta, instala tudo. Reconheceu até a impressora que não funcionava no Windows... até o scanner funcionou depois do &lt;span class="Apple-style-span" style="font-style: italic;"&gt;drive&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;r&lt;/span&gt;!!! Mas o micro continua travando. Milhares de &lt;span class="Apple-style-span" style="font-style: italic;"&gt;forum posts&lt;/span&gt; depois meu Linux continua instável... (noapic, nolapic, irqpool e acpi=force já foram tentados em diversas combinações). Duro é explicar pra minha filha que o Linux trava e o XP não...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;De volta ao Mac, continuo brigando com o cmd e a tecla control. Esse negócio de janela &lt;span class="Apple-style-span" style="font-style: italic;"&gt;highlander&lt;/span&gt;, que não morre ao fechar está me deixando nervoso. Home e End também deixam saudades... cmd + &lt;- e cmd + -&gt; !!!! claro que continuo apertando as teclas no mesmo lugar que só atrapalham... logo depois de tentar ctrl + &lt;- e ctrl + -&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas nem tudo é ruim... ligo pro meu Guru Mac de plantão, no caso meu melhor amigo que mora em outro fuso horário... só 6 horas de diferença :-) Tempo suficiente para ser derrubado pelo Mac... raios, não consigo criar zips... &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Skype attack&lt;/span&gt; e &lt;span class="Apple-style-span" style="font-style: italic;"&gt;voilà&lt;/span&gt;! Descubro que um menu do &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Finder&lt;/span&gt; faz o serviço... mas ativa-se este menu com o botão direito do mouse. Precisa dizer que o &lt;span class="Apple-style-span" style="font-style: italic;"&gt;mouse&lt;/span&gt; não tem botão e que a bolinha também roda pros lados? Ok, batalha com o mouse... parece que nunca usei micro na vida :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recebi uma lista de softwares do meu amigo-Mac-Guru para SCP, torrent (legais, claro) e melhorias do sistema. Agora tenho painéis que dizem tudo sobre a máquina... parece até o painel de controle de uma nave espacial. Para testar o torrent, baixei o "&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Cult of Mac&lt;/span&gt;" e acreditem, o &lt;span class="Apple-style-span" style="font-style: italic;"&gt;seed&lt;/span&gt; foi feito pela própria editora &lt;a href="http://www.nostarch.com/"&gt;No Starch Press &lt;/a&gt;(&lt;a href="http://thepiratebay.org/tor/4087853"&gt;link&lt;/a&gt;). Pior que o &lt;span class="Apple-style-span" style="font-style: italic;"&gt;link&lt;/span&gt; vai pro &lt;a href="http://thepiratebay.org/"&gt;Pirate Bay&lt;/a&gt;... maldito Safari, trouxe o Pirate Bay em holandês... &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Zoek Torrents? Download deze torrent !!!&lt;/span&gt; Agora estou me sentindo realmente um velho, tendo problemas com o micro novo e vendo uma editora distribuir um livro via &lt;span class="Apple-style-span" style="font-style: italic;"&gt;torrent&lt;/span&gt; e no Pirate Bay! Tomara que dê certo, pois no fim acabo comprando a versão impressa mesmo, ler no micro ainda é muito difícil pra mim. Abro o PDF e detesto o livro, salvei alguns euros com esse &lt;span class="Apple-style-span" style="font-style: italic;"&gt;download&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;E a saga continua... o tutorial da Apple manda eu copiar minhas músicas da biblioteca iTunes do Windows para meu Mac, claro usando um iPod. O problema é que eu não tenho iPod! Google neles e acho um tutorial exportando a biblioteca e editando o xml desta... ah deve ser a parte Unix da experiência :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10 x 0 pro iMac... e eu começo a procurar o til no teclado... descubro que não tem. Para aumentar a dificuldade comprei um teclado belga, pois estou acostumado agora com esse troço AZERTY. O til é alt + n ... depois você digita espaço pro til ou "a" ou "o" para ã ou õ. Até aí tudo bem. Mas descubro logo que não tenho acesso aos agudos do português... é e ç são fáceis, mas á é o desafio supremo, não tem mesmo... lembro dos primeiros dias de Windows... copiando caracteres do mapa de caracteres... Achei um editor de teclado e fiz um mapa belgo-brasileiro... agora sim. O Safari não gostou do novo teclado, mas agora está funcionando muito bem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depois de 3 dias de cruzada... acho que foi o melhor dinheiro que já gastei com computador. Muito bom mesmo. O choque da mudança é inevitável, mas compensa. Tio Jobs trabalha muito bem e faz máquinas melhores ainda.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-8631435574364035468?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/8631435574364035468/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=8631435574364035468' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8631435574364035468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8631435574364035468'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/05/mac-life.html' title='A Mac Life'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5744796976473089359</id><published>2008-03-02T06:09:00.003-04:00</published><updated>2008-03-02T06:58:08.003-04:00</updated><title type='text'>LibFácil</title><content type='html'>Uma coisa que não podemos esquecer é a busca constante pela nova versão da LibFácil. Quando eu programava em &lt;a href="http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o"&gt;Clipper&lt;/a&gt;, um amigo apelidou nossa biblioteca de FazTudo, porque tínhamos quase tudo pronto naquela biblioteca.&lt;br /&gt;&lt;br /&gt;O tempo passou e continuo a procurar uma nova versão da LibFácil, seja em Java, C#, Python ou Ruby. É interessante o esforço que um programador realiza em busca de novas bibliotecas. Muitas vezes, eu já perdi mais tempo procurando uma nova biblioteca do que se tivesse implementado do zero. Faz parte do risco, mas normalmente a recompensa de uma biblioteca é maior estabilidade  e hoje no mundo do Open Source, podemos contar com atualizações diárias, comunidades para resolver bugs e intermináveis downloads, tutoriais e sites de como fazer.&lt;br /&gt;&lt;br /&gt;Mas achar a LibFácil não é fácil. Eu participo do grupo Python Brasil, uma lista de discussão sobre Python e são frequentes as buscas por bibliotecas gráficas: GTK, QT, Wx... o mesmo para jogos onde temos a PyGame e a Pyglet. Em Delphi é a mesma coisa, com um agravante: componentes.&lt;br /&gt;&lt;br /&gt;Não que tudo isso seja ruim, mas o excesso de opções tem lá suas desvantagens. Um exemplo, escolher a linguagem e o conjunto de bibliotecas para se escrever uma nova aplicação Web. Há tantas opções que a escolha se torna um trabalho hercúleo. J2EE, Ruby on Rails, Django, tecnologias Microsoft, Zope e os milhares de quase frameworks PHP, gerenciadores de site e Wikis mágicos que encontramos por aí.&lt;br /&gt;&lt;br /&gt;Eu mesmo estou em busca da LibFácil para sites e descobri uma forma bem interessante de escolher a biblioteca para o serviço, no caso, sites Web com banco de dados, os antigos sistemas agora chamados de aplicações web :-)  Uma vez que a Web é a nossa plataforma, uma forma de pensar neste tipo de problema é ver as opções de hospedagem. Qualquer aplicativo web hoje precisa de um servidor seguro e rápido, tanto em relação a banda de Internet quanto em processamento. Hospedagem nos EUA hoje é quase de graça, mas nem tanto. Se você escolher J2EE ou Python prepare-se para gastar mais. A maioria dos sites que encontrei só disponibilizam hospedagem em Python ou Java com hosts dedicados... aí a coisa fica muito cara. Mas a questão é a LibFácil.&lt;br /&gt;&lt;br /&gt;Antes de começar a desenvolver o sistema, temos que escolher o banco de dados, a biblioteca de mapeamento objeto-relacional, o framework,  etc, etc, etc. E cada uma destas questões é respondida por uma biblioteca diferente. O número de camadas de abstração cresce assustadoramente, tornando as aplicações mais simples lentas, mesmo em computadores com recursos absurdos como temos hoje.  Essa semana estive discutindo sobre o uso de XML ou &lt;a href="http://www.yaml.org/"&gt;YAML&lt;/a&gt; em nossos sistemas :-) Porém, a decisão é sempre tomada em relação a maturidade das bibliotecas YAML ou XML. Como eu odeio XML, fica mais fácil, mas nem sempre é assim.&lt;br /&gt;&lt;br /&gt;No final, você usa umas 15 bibliotecas para fazer qualquer besteira. E cada uma delas é um novo mundo. Talvez esta seja a explicação de programadores profissionais não trocarem tão facilmente de biblioteca. Uma vez que aprendem ou dominam um conceito, ficam nele uns 10 ou 15 anos... por isso que ainda encontro gente com saudades de Visual Basic ou Clipper. Era tão simples naquela época. Você instalava o compilador e já estava pronto para quase tudo, mas já existiam bibliotecas e componentes comerciais... mas era mais fácil. A vida com Delphi ou .Net não facilita muito as escolhas também. Eu uso o novo Delphi 2007 para Win32 e ele vem com umas 4 ou 5 formas diferentes de acesso ao banco de dados. Eu achei pouco e ainda instalei uma outra forma... e por ai vai. Felicidade deste tipo só encontrei em J2ME.&lt;br /&gt;&lt;br /&gt;A busca da LibFácil às vezes nos desvia dos problemas reais. Eu já vi muitos desenvolvedores modificarem um problema simplesmente para poder utilizar a biblioteca que mais gostam. Quem trabalha com Java acha XML a coisa mais natural do mundo, Perl é lindo, Python é perfeito. É por isso que eu defendo uma certa independência entre quem desenvolve a solução e quem determina a arquitetura de tudo isso. Quem nunca viu formulários de aplicações Delphi completamente irritantes, tudo para usar os controles DataAware e facilitar a vida do programador :-)&lt;br /&gt;&lt;br /&gt;E a busca da LibFácil do momento continua. Viva o Google e a Internet. A procura não termina jamais !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5744796976473089359?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5744796976473089359/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5744796976473089359' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5744796976473089359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5744796976473089359'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/03/libfcil.html' title='LibFácil'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-8372492689468272204</id><published>2008-01-01T09:54:00.001-04:00</published><updated>2008-02-26T17:03:36.156-04:00</updated><title type='text'>SamScript e o profissional de informática</title><content type='html'>Acordei hoje pensando no que um profissional de informática deve saber. Pensando no que já aprendi nesses anos, cheguei a conclusão que a linguagem mais importante é o SamScript ou a língua do tio Sam.&lt;br /&gt;&lt;br /&gt;Sem inglês, o que você pode aprender? Ok, há exceções, pessoas talentosas e meio mágicas que conseguem aprender tecnologia de ponta sem saber inglês, mas não lembro o nome de nenhuma dessas pessoas, por mais que eu tente. Esperar o livro em português não vale, demora pelo menos dois anos.&lt;br /&gt;&lt;br /&gt;Não precisa falar ou escrever, embora ajude bastante quando você tem problemas. Imagine aqueles erros incompreensíveis... Google neles ! Mas aposto que o número de respostas em português será pelo menos 10x menor que em inglês. Alguns arranham com espanhol, mas na verdade o número de publicações em inglês é surpreendente. Ler em inglês é fundamental.&lt;br /&gt;&lt;br /&gt;Bom, para ajudar, visite o &lt;a href="http://www.mangolanguages.com/"&gt;Mango Languages&lt;/a&gt;. O site é muito bom e o preço é melhor ainda (grátis). Esses sites grátis são um mistério para mim, mas não precisa entender disso para acessá-lo.&lt;br /&gt;&lt;br /&gt;Como a ano está começando, aproveite para considerar aprender SamScript, a linguagem realmente importante na informática, depois dela tudo fica muito mais fácil.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-8372492689468272204?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/8372492689468272204/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=8372492689468272204' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8372492689468272204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/8372492689468272204'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2008/01/samscript-o-profissional-de-informtica.html' title='SamScript e o profissional de informática'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-2680996973703367654</id><published>2007-12-30T08:02:00.000-04:00</published><updated>2007-12-30T08:18:15.865-04:00</updated><title type='text'>Que venha 2008</title><content type='html'>Bom, em Novembro não publiquei nada... dezembro não pode ficar assim também.&lt;br /&gt;&lt;br /&gt;Todo mundo faz planos para o ano novo, todo ano. Nem sempre conseguimos fazer o que planejamos, mas planejar já é parte do bom caminho.&lt;br /&gt;&lt;br /&gt;Em 2007, muitas coisas boas aconteceram por aqui. Nós finalmente terminamos toda a documentação da mudança, minha filha nasceu, terminei o mestrado... tudo num só ano. Para 2008 fica a aventura de criar uma nova empresa, continuar estudando estatística e matemática, programar muito e quem sabe terminar o livro de programação em Python, publicar pelo menos um artigo científico... Claro, isso tudo nos meus planos. Mas com certeza no final de 2008 ainda restarão algumas coisas por fazer :-) E isto faz parte do ano novo. Momento de repensar a vida e continuar tocando o barco.&lt;br /&gt;&lt;br /&gt;Eu continuo pesquisando otimização de transferências em redes de alta latência, acho que virou um vício. Daí o aprofundamento em estatística e matemática. Continuo pensando em processamento paralelo e ainda acho que redes e processamento paralelo tem muito em comum. Espero que em 2008 apareçam novas soluções para resolver este tipo de problema, embora ache que soluções melhores só em 2010...&lt;br /&gt;&lt;br /&gt;Em 2008, provavelmente vou poder testar o poder das GPUs para processamento paralelo, claro que isso é desculpa para comprar um novo monstro para os jogos :-), mas é também muito interessante. Uma das coisas que você tem de resolver quando diminuem suas horas diárias de TV é o que fazer com tanto tempo livre. Na dúvida, jogue WOW... é meu passa-tempo, destruidor de tempo livre preferido.&lt;br /&gt;&lt;br /&gt;Um feliz e próspero ano novo a todos !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-2680996973703367654?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/2680996973703367654/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=2680996973703367654' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2680996973703367654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/2680996973703367654'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/12/que-venha-2008.html' title='Que venha 2008'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-3893718475893359926</id><published>2007-10-27T14:55:00.000-04:00</published><updated>2007-12-06T03:29:32.584-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='educação'/><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='invasores'/><title type='text'>One Laptop per Child</title><content type='html'>Eu me tornei professor por acidente. No colégio, como era bom em matemática, sempre ensinava alguém... depois a coisa foi ficando mais séria. Comecei a ensinar matemática particular ainda no primeiro grau... aos 18 anos eu já era instrutor de cursos de programação. Acho que no primeiro curso eu ensinei Clipper :-)&lt;br /&gt;&lt;br /&gt;Em 1994, virei professor de lógica e técnica de programação e também de linguagens de programação I e II. Professor de algoritmos, Cobol e C. Desde então passei a me interessar seriamente por educação e a me impressionar com a velocidade que as pessoas aprendem. Confesso que ensinar a  programar não é fácil, aprender também não. Com um pouco de prática se melhora, mas nunca fiquei contente... continuo procurando novas formas de ensinar programação. Nos últimos anos, eu ensinei Python. Uma linguagem que gosto muito e uso no meu dia a dia.&lt;br /&gt;&lt;br /&gt;Esta semana também caí por acidente na página do &lt;a href="http://laptop.org/"&gt;projeto One Laptop per Child&lt;/a&gt;. Eu já escutei muito sobre este projeto e resolvi ler um pouco mais. A comunidade técnica sempre reclama que não se pode fazer quase nada com o tal notebook entre outras coisas. Eles procuram desenvolvedores para a plataforma, que é Linux, mas rodando em uma máquina muito enxuta para os padrões de hoje. Não resisti, baixei a imagem e fiquei testando. Lembrei dos dias negros do Linux ao tentar configurar o teclado belga no X. Fazia tempo que não tinha tanto trabalho para configurar uma coisa tão besta. Depois de ignorar o texto da &lt;a href="http://wiki.laptop.org/go/Home"&gt;Wiki do projeto&lt;/a&gt; e de rodar o Qemu corretamente, a imagem funcionou com rede, mas ainda sem som. Bem, o som ainda não está funcionando, mas eu não conseguia mais esperar para testar o &lt;a href="http://invasores.sourceforge.net/"&gt;Invasores&lt;/a&gt; no OLPC, ou na imagem dele. E não é que funcionou sem alterar uma só linha!&lt;br /&gt;&lt;br /&gt;Mais um ponto para o Python. Também, o OLPC é baseado no Fedora, mas usa uma interface gráfica diferente, o &lt;a href="http://wiki.laptop.org/go/Sugar"&gt;Sugar&lt;/a&gt;. Ainda estou resolvendo alguns problemas com o tamanho da tela do jogo, mas mesmo não rodando em tela cheia, o jogo funciona sem problema algum. Eu vou fazer um release só para o OLPC em breve.&lt;br /&gt;&lt;br /&gt;Voltando ao OLPC, eles precisam de kits de programação, incluindo a criação de jogos simples. Como os fontes do Invasores são em português, tomara que ajude alguém a entender como fazer um jogo extremamente simples.&lt;br /&gt;&lt;br /&gt;Algumas pessoas tem criticado o OLPC, resumindo o projeto a tecnologia do notebook. Mas lendo a wiki deles, percebe-se que a tecnologia é o foco atual, mas o objetivo do projeto é proporcionar uma melhor educação a milhões de excluídos. Muitos estão preocupados com problemas mais sérios, como a falta de professores nas escolas, energia elétrica e água potável. Isso também é real e muito importante. Minha única crítica é a busca incessante por balas de prata. O OLPC não pretende e nem vai resolver todos os problemas do mundo. Este projeto é mais uma contribuição, outras ações devem ser realizadas para melhorar a vida de todos.&lt;br /&gt;&lt;br /&gt;Eu me identifiquei com o projeto, porque uma vez, conversando com amigos, nos perguntamos quantos talentos se perdiam com a miséria. Imagine só: você um gênio da programação, mas o único equipamento a que você tem acesso é um carrinho de mão. Qual é chance de por acidente descobrir seu talento? Quantos matemáticos, químicos, físicos e biólogos não perdemos com estas faltas de oportunidade?&lt;br /&gt;&lt;br /&gt;Um computador para cada criança dará uma chance para milhares de crianças conhecerem a Internet, textos, sons e gráficos. Isto por si só já justificaria o projeto para mim. Se apenas 0,1% das crianças que receberem o notebook mudarem de vida, significa que precisaríamos de 1000 notebooks para salvar uma criança.  Calculando os custos disso, vejamos US$250,00 x 1000,00 = US$250.000,00. Um quarto de milhão para integrar ou reaproximar uma pessoa da sociedade moderna.   Uma pessoa com acesso a educação e trabalho pode reverter o ciclo de pobreza de várias gerações, eu já vi isso ocorrer várias vezes no Brasil. Eu também acredito que consigamos um sucesso bem maior que 0,1%. Para mim, muito promissor. Ainda que muitos notebooks caiam no mercado negro, sejam roubados ou simplesmente danificados em curto espaço de tempo, acredito que será uma marca na vida dessas crianças.&lt;br /&gt;&lt;br /&gt;Uma coisa que deixou preocupado é a falta de Internet no Brasil. Os últimos números que li, traziam algo como 14 ou 20 milhões de internautas no país. Embora este número venha crescendo, ainda demonstra nosso atraso e má distribuição de renda. Quantas escolas públicas temos com acesso à Internet? Na década de 90, o problema era ter telefone. Agora é conseguir Internet. Em Manaus, a situação é crítica. Ainda se vendem planos de 200 ou 300Kb/s como banda larga. Precisamos urgentemente de Internet nas escolas. O OLPC sem Internet vai ficar bem limitado, mas isso não invalidará os possíveis ganhos do projeto. Precisamos de mais educação e de mais acesso a Internet. Um grande país tem grandes problemas. Meu sonho megalomaníaco é de transformar o Amazonas em uma nova Índia :-)&lt;br /&gt;&lt;br /&gt;Como disse, não resolverá todos os problemas do mundo, mas é um esforço positivo. É muito importante criticar, visões diferentes sempre são bem-vindas. Só não esqueça que o projeto é sobre crianças e educação. O laptop é só um detalhe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-3893718475893359926?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/3893718475893359926/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=3893718475893359926' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3893718475893359926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/3893718475893359926'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/10/one-laptop-per-child.html' title='One Laptop per Child'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5509083886020367535</id><published>2007-09-09T15:30:00.001-04:00</published><updated>2007-09-09T16:25:40.471-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow'/><title type='text'>De volta à Azeroth</title><content type='html'>Tudo ia muito bem, mas depois da monografia sobrou muito tempo para outras coisas. Resolvi voltar à &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Azeroth&lt;/span&gt;. Depois de um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;mega&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;download&lt;/span&gt;&lt;/span&gt; de mais de 500 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MB&lt;/span&gt;, lá estava eu pronto para jogar novamente.&lt;br /&gt;&lt;br /&gt;De cara, descobri que havia sido expulso do minha antiga &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;guilda&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ok&lt;/span&gt;. Eles não faziam &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;raid&lt;/span&gt;&lt;/span&gt;, nos denominávamos uma &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;guilda&lt;/span&gt; para &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ganking&lt;/span&gt;&lt;/span&gt; :-) Não prestavam pra muita coisa, mas era divertido perturbar a Horda. Todo fim de semana tinha &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;raids&lt;/span&gt;&lt;/span&gt; às bases inimigas... inútil, mas divertido.&lt;br /&gt;&lt;br /&gt;Bom, como fui expulso e também como não consigo mais lembrar o nome da &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;guilda&lt;/span&gt; anterior, daí pode-se deduzir a importância que eles tinham para mim... resolvi procurar outra &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;guilda&lt;/span&gt;. Desta vez, uma &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;guilda&lt;/span&gt; que realmente funcionasse, que fizesse &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;raids&lt;/span&gt;&lt;/span&gt; mais produtivas e me ajudasse a chegar no &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;level&lt;/span&gt; &lt;/span&gt;70, sem &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;stress&lt;/span&gt;&lt;/span&gt;. Parece muito. Encontrei uma &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;guilda&lt;/span&gt; portuguesa e lá estou eu agora no "Quinto Império". Com este &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;post&lt;/span&gt;&lt;/span&gt; vai ficar mais fácil lembrar o nome da &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;guilda&lt;/span&gt;, caso eu esqueça novamente.&lt;br /&gt;&lt;br /&gt;Continuei seguindo o guia de &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;leveling&lt;/span&gt;&lt;/span&gt; que os amigos enviaram... falando nisso, enviem o guia de 60 à 70, pois o que tenho acaba ainda no 60. No primeiro dia já  achei um rogue maldito que resolveu me matar umas 3 vezes seguidas. Certas coisas são fáceis de esquecer, mas meu ódio aos &lt;span style="font-style: italic;"&gt;rogues&lt;/span&gt; voltou bem rápido. Resolvi aproveitar o &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;rested&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;bônus&lt;/span&gt;, pois não jogava há meses... passei do 45 pro 47... estou indo bem. Fiquei muito irritado com o tempo de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;vôo&lt;/span&gt; dos passarinhos, mais uma prova de que &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;WOW&lt;/span&gt; é passa-tempo mesmo! Ou melhor acaba-tempo. Deveria vir com avisos na embalagem, mas fazer o quê?&lt;br /&gt;&lt;br /&gt;Esqueci que árvore de talentos estava seguindo e as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;magias&lt;/span&gt; do felino também... mas jogando essas coisas voltam a mente. Nem das minhas teclas de acesso rápido eu lembrava... muito tempo... Meu filho começou a perguntar o nome dos lugares e eu esqueci de muita coisa! Como pude fazer isso :-) Se não fosse o guia de &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;leveling&lt;/span&gt;&lt;/span&gt;, eu realmente estaria perdido.&lt;br /&gt;&lt;br /&gt;Um aviso para Horda: se tiver alguém com pouca honra no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;Spinebreaker&lt;/span&gt;, pode procurar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Predak&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;hunter&lt;/span&gt;&lt;/span&gt;, 47, fácil de matar :-) Agora ninguém mais da Horda ficará sem honra!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5509083886020367535?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5509083886020367535/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5509083886020367535' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5509083886020367535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5509083886020367535'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/09/de-volta-azeroth.html' title='De volta à Azeroth'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-5183209626209149126</id><published>2007-08-03T14:52:00.000-04:00</published><updated>2007-09-09T16:26:48.436-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multiprocessamento'/><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>Multitarefa e Multiprocessamento</title><content type='html'>Ao começar a escrever este post, lembro que julho foi um mês realmente atarefado, sem novos posts no JungleCoders. Mas foi um mês onde voltei a ler sobre as questões de hoje sobre multiprocessamento. Alguns anos atrás, havia menos processadores que usuários :-) Era a época dos computadores de grande porte ou &lt;span style="font-style: italic;"&gt;mainframes&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Com a chegada do processador pessoal, iniciou-se a época do um para um, porém eram máquinas pequenas, com sistemas operacionais simples. Embora houvesse um processador por usuário, não havia sistema operacional, muito menos recursos no hardware, para suportar a troca de tarefas. Isso claro, para computadores pessoais, pois já existiam os super-micros e sistemas operacionais mais completos, como o Unix entre muitos outros. Com a evolução do Microsoft DOS e do próprio IBM PC, programadores começaram a se utilizar das interrupções de hardware para simular o multiprocessamento, eram os anos dos programas TSR (&lt;a href="http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident"&gt;Terminate and Stay Resident&lt;/a&gt;). Quem nunca usou programas como &lt;a href="http://en.wikipedia.org/wiki/Norton_Guides"&gt;Norton Guides&lt;/a&gt; ou &lt;a href="http://en.wikipedia.org/wiki/SideKick"&gt;Sidekick&lt;/a&gt;? Mas os mais populares eram os tais reloginhos que ficam no canto superior da tela. Todo programador DOS tinha que implementar um... Ok, o Mingo pode dizer que o Amiga já tinha multitarefa de verdade, mas poucos felizardos tiveram acesso a estes sistemas.&lt;br /&gt;&lt;br /&gt;Para salvar a linhagem do IBM PC, surgiu o  Intel &lt;a href="http://en.wikipedia.org/wiki/80286"&gt;80286&lt;/a&gt;. Mas o pobre DOS continuava monotarefa, exceto pelos TSRs... A IBM lançou o &lt;a href="http://en.wikipedia.org/wiki/OS/2"&gt;OS/2&lt;/a&gt; e renovou as esperanças de um sistema multitarefa para pobres mortais. Para empresas, o Novell Netware e variantes de Unix já existiam. Com a chegada do Intel &lt;a href="http://en.wikipedia.org/wiki/Intel_80386"&gt;80386&lt;/a&gt; a coisa ficou realmente séria e o Windows 3.0 começou a convencer que a multimídia seria o futuro. O novo sistema permitia que vários aplicativos rodassem ao mesmo tempo, mas não podiam ser mal comportados. Se uma tarefa resolvesse tomar conta do sistema operacional para si... descobríamos que se tratava de multitarefa cooperativa... era o fim. Novas versões do OS/2 surgiram com um novo termo, a tal multitarefa preemptiva. Com a preemptividade, o sistema operacional podia recobrar o controle da máquina, mesmo que uma das tarefas não contribuísse muito para isso.&lt;br /&gt;&lt;br /&gt;Bom, o OS/2 nunca pegou realmente para usuários domésticos, sendo relegado a pequenos feudos corporativos e segundo lendas urbanas sobrevivendo até hoje em bancos. O &lt;a href="http://en.wikipedia.org/wiki/Windows_95"&gt;Windows 95&lt;/a&gt; trouxe a preemptividade para os sistemas da Microsoft e para nós, pobres usuários. O grande problema é que às vezes o sistema operacional travava... deixa isso pro passado :-) O sistema foi se estabilizando e agora temos outros tipos de problema. Máquinas domésticas passaram a ter 2 ou 4 processadores e sistemas como Windows XP e Linux têm dado conta da tarefa de utilizar os recursos destas máquinas, mas com uma restrição: se a aplicação é desenvolvida com um só thread, esta não pode ser distribuída para mais de um processador :-( Pode parecer pouca coisa, mas se você não tomar cuidado por ter a aplicação rodando mais lentamente numa máquina com dois processadores.&lt;br /&gt;&lt;br /&gt;A grande questão hoje é como escrever programas para este novo mundo? Agora temos vários processadores para nossas aplicações, porem programar com threads ainda é muito difícil. Algumas pessoas acreditam que há necessidade de mudarmos a forma que programamos hoje. Outros acreditam em compiladores inteligentes, capazes de decidir que partes do código podem ou não ser executadas em paralelo. Apesar de não parecer grande problema, a Intel sinalizou que já possui &lt;a href="http://idgnow.uol.com.br/computacao_corporativa/2006/09/26/idgnoticia.2006-09-26.0353051618"&gt;processadores com 80 núcleos no laboratório&lt;/a&gt;. Imagine um dia ter uma máquina dessas e ter seu pobre programa rodando a apenas 1/80 do poder total da máquina :-) ?&lt;br /&gt;&lt;br /&gt;Como nada é aceito por todos ao mesmo tempo, já existem várias abordagens para este problema. Uma delas é utilizar outras linguagens de programação, com paradigmas diferentes como &lt;a href="http://en.wikipedia.org/wiki/Erlang_%28programming_language%29"&gt;Erlang&lt;/a&gt; ou &lt;a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29"&gt;Haskell&lt;/a&gt;. Meu pobre Python está longe disso. Segundo o &lt;a href="http://mail.python.org/pipermail/python-3000/2007-May/007414.html"&gt;Guido&lt;/a&gt;, a solução é utilizar vários processos e morar na casa mal assombrada dos IPC (&lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication"&gt;Inter-process Communication&lt;/a&gt;). Pelo pouco que sei, Ruby anda pior ainda neste quesito. Java, C/C++/C# (*.net) estão bem, mas toda a dor de múltiplos threads fica para o programador.&lt;br /&gt;&lt;br /&gt;Uma luz vem do mundo dos jogos, pois os processadores gráficos das placas de vídeo possuem mais de 30 pipelines. Rodando a mais de 500 MHz, estes processadores ficam sem uso quando não estamos jogando, um poder de processamento desperdiçado. Tanto a &lt;a href="http://developer.nvidia.com/object/cuda.html"&gt;NVidia&lt;/a&gt; quanto a ATI prometeram publicar os compiladores para suas GPUs, mas já avisaram que a forma de programar é diferente.&lt;br /&gt;&lt;br /&gt;Quem já trabalhou com IPC e threads sabe que o pode ser feito, mas não de graça. Como os softwares tem se tornado cada vez mais complexos, como resolveremos a questão de criar softwares capazes de aproveitar os recursos de multiprocessamento de nossas máquinas? Eu particularmente acredito na utilização de linguagens com novos paradigmas que propiciam a abstração dos threads, mas no fundo desejo que algo de novo surja na área de compiladores e que todos nós possamos continuar a programar como sempre programamos. Como nem só os computadores são multitarefas, eu resolvi acrescentar o estudo deste tipo de problemas a minha já enorme lista :-) Talvez eu troque meu sistema operacional...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-5183209626209149126?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/5183209626209149126/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=5183209626209149126' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5183209626209149126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/5183209626209149126'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/08/multitarefa-e-multiprocessamento.html' title='Multitarefa e Multiprocessamento'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-6249521468931863522</id><published>2007-06-15T12:49:00.000-04:00</published><updated>2007-09-09T16:27:28.858-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>Linguagens, teclados e Ruby</title><content type='html'>Hoje, pela segunda vez esta semana, eu li um texto que me chamou a atenção sobre a hipótese de &lt;a href="http://en.wikipedia.org/wiki/Sapir_Whorf"&gt;Sapir-Whorf&lt;/a&gt;, isto é, a maneira que a linguagem pode influenciar o comportamento e a forma de pensar das pessoas.  Eu fiz um paralelo entre linguagens de programação e teclados.&lt;br /&gt;&lt;br /&gt;Lendo sobre &lt;a href="http://onestepback.org/articles/10things/index.html"&gt;Ruby&lt;/a&gt;, fiquei observando os inúmeros símbolos e a freqüência que estes são utilizados na linguagem. Para um pobre coitado como eu, que usa um teclado &lt;a href="http://en.wikipedia.org/wiki/Image:Azerty_fr.svg"&gt;Belga&lt;/a&gt; no trabalho e um teclado &lt;a href="http://en.wikipedia.org/wiki/Keyboard_layout#French"&gt;Francês&lt;/a&gt; em casa... os símbolos importam muito. O criador da linguagem &lt;a href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29"&gt;Ruby&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto"&gt;Yukihiro Matsumoto&lt;/a&gt; , utilizava provavelmente um teclado &lt;a href="http://en.wikipedia.org/wiki/Keyboard_layout#Japanese"&gt;Japonês&lt;/a&gt;.  Ok, é parecido com o teclado QWERTY ocidental... mas fica aqui meu registro quanto aos símbolos e linguagens. Lembro que li anteriormente um texto sobre como a @ foi escolhida como símbolo do e-mail e como alguns símbolos foram escolhidos no FORTRAN devido ao reduzido teclado da época (1956~1957) e depois usados por outras linguagens. Uma página que encontrei e que ilustra a dureza daqueles tempos pode ser vista &lt;a href="http://www.columbia.edu/acis/history/026.html"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O "Mat" não teria utilizado tantos pipes("|") se estivesse usando um teclado francês ou belga :-). Eu estou estudando Ruby novamente devido ao &lt;a href="http://www.rubyonrails.org/"&gt;RubyOnRails&lt;/a&gt;. Ando tendo novas idéias para sites e francamente, escrever em PHP está fora de questão. Eu continuo programando em Python. Eu acho Python uma linguagem muito mais clara que o Ruby, fora meu vício com a identação e meu ódio a chaves (antes mesmo de utilizar teclados estranhos) e &lt;span style="font-style: italic;"&gt;end&lt;/span&gt; qualquer coisa. Talvez uma busca mais demorada no Google pudesse indicar outro framework para aplicativos web em Python. Mas meu problema de usar o Python para esta tarefa é que eu não quero utilizar vários frameworks, criando um monstro ainda maior, eu quero instalar um pacote único. Resolver o problema. Com Python, eu teria que utilizar vários pacotes com nomes de bichos e frutas que eu não sou doido suficiente para usar. Existem alternativas em Python amadurecendo, mas ainda longe do que eu posso obter hoje com o Rails.&lt;br /&gt;&lt;br /&gt;Com certeza existe arte na programação, mas eu preciso testar algumas idéias rapidamente. Quando estas idéias são novos sites, fica claro que o belo cede lugar para o rápido, funcional e seguro. Eu poderia fazer alguma coisa em Java, mas eu estou realmente tentando diminuir a complexidade desta tarefa, reduzindo o número de frameworks no meu futuro site.&lt;br /&gt;&lt;br /&gt;O César ainda não escreveu sobre Ruby e eu acho que não vou conseguir convencê-lo a escrever nada mesmo. Então vou aproveitar a necessidade e postar aqui um pouco do que vi diferente em Ruby.&lt;br /&gt;&lt;br /&gt;Voltando a hipótese de Sapir-Whorf, fico analisando a forma como as pessoas pensam pela linguagem de programação que elas mais se identificam. É fácil, basta lembrar de um programador C++ e de um programador Java. Programadores em Visual Basic, Python, Perl ou PHP também invocam lembranças diferentes a minha mente. Embora todos sejam profissionais, sempre tem algo no comportamento destes que marca nossa lembrança, como uma característica e até mesmo como um novo estereótipo. Alguns programadores gostam de trabalhar com coisas difíceis ou coisas que os outros consideram difíceis.&lt;br /&gt;&lt;br /&gt;Esses padrões de comportamento são também visíveis quando você aprende uma nova língua estrangeira. Quem nunca teve vontadade de dizer que o programa está correndo ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-6249521468931863522?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/6249521468931863522/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=6249521468931863522' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6249521468931863522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6249521468931863522'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/06/lnguagens-teclados-e-ruby.html' title='Linguagens, teclados e Ruby'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1787690745338301006</id><published>2007-06-01T16:25:00.000-04:00</published><updated>2007-09-09T16:34:19.991-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>The Internet Divide</title><content type='html'>Impressionante como as coisas voam...&lt;br /&gt;&lt;br /&gt;Eu lembro quando consegui fazer meu modem de 2400 bps funcionar com a Connect or Die BBS... fim dos 80, início dos anos 90. Eu quase chorei quando vi os pequenos caracteres coloridos aparecendo no meu micro. Dureza, pois 2400 bps é algo realmente lento, mas na época era normal ter 1200 bps. Mesmo uma página em modo texto demorava para chegar, mas compensava. Pior era acordar meia noite, pois a BBS do Mingo só podia funcionar nesse horário. Estamos no Brasil dos monopólios, linhas telefônicas eram patrimônio e o Mingo havia negociado o telefone da família de meia noite às 06:00.&lt;br /&gt;E só tinha uma linha. A conexão máxima era limitada a uma hora por dia e regras de upload/download ratio eram aplicadas (você tinha que enviar coisas para poder baixar...).&lt;br /&gt;Imagens em 320x200... com incríveis 256 cores. Infelizmente eu ainda não tinha VGA... e sim uma placa EGA com monitor CGA colorido. Uma combinação que eu fiz questão de esquecer como consegui fazer. Mas o monitor fazia 640x200 e a placa fazia algo como 16 cores. Na verdade, a placa fazia até 640x350... mas meu pobre monitor não aguentava tudo isso.&lt;br /&gt;&lt;br /&gt;Depois veio a BitNet e outro amigo que programava batches FTP de uma tal de Internet na Universidade Federal (a conexão lá era de alucinantes 9600 bps) para baixar alguns arquivos mais interessantes. Em 1994, já usávamos modems de 14400 bps, mas sofríamos com os inúmeros raios. Até hoje eu desligo o micro se escutar um trovão e evito usar em dia de chuva. Meu tio conseguiu comprar uma hora de Internet na Mandic BBS em São Paulo... tinha que pagar o interurbano, mais US$30,00 por hora se não me engano. Nosso objetivo era baixar um programa de engenharia naval, que ele vira num revista inglesa. O problema é que o arquivo era enorme... coisa de 250 Kb. Demoramos várias horas para baixar o programa, mas incrivelmente ele veio da Inglaterra para nossos disquetes.&lt;br /&gt;&lt;br /&gt;Hoje, fui informado que estão vendendo &lt;a href="http://www.fibreoptique.neuf.fr/"&gt;Internet a 50 Mb/s na França&lt;/a&gt;. Fico imaginando as possíveis aplicações de tanta banda e rio lembrando do que passamos para baixar os pequenos arquivos. No Japão, parece que a coisa está  ainda melhor. Mas 50 Mb/s já é muita coisa.&lt;br /&gt;&lt;br /&gt;Lembrando do &lt;a href="http://junglecoders.blogspot.com/2007/04/pirataria-para-qu.html"&gt;Pirataria pra quê&lt;/a&gt;, eu valorizo mais meu tempo. Tudo que me passa inicialmente pela cabeça seria baixar grandes quantidades de arquivos MP3, DVD, coleções com 1200 livros e coisas do gênero. Ai lembro de experiências anteriores, com bandas e volumes menores e no que resultou... e desisto da idéia.&lt;br /&gt;&lt;br /&gt;O que realmente me preocupa é o Internet Divide. Em alguns lugares do Brasil já temos Internet realmente rápida, mas a grande maioria não consegue chegar em 1 Mb/s. Lembro dos dias na selva, ano passado. Eu brigava para ter um pobre ADSL de 600 Kb/s funcionando. Quando o canal funcionava, até que era bom para navegar. Ruim para baixar arquivos. Quando tinha um problema, pode ter certeza que era algo como 1 semana tendo raiva.&lt;br /&gt;&lt;br /&gt;Esses tipos de restrições limitam nosso uso de Internet. O Internet Divide fica cada vez mais claro e a distância de países ricos também.&lt;br /&gt;&lt;br /&gt;Eu acompanho meus filhos usando a Internet hoje. Nada de páginas estáticas! Eles querem vídeos e músicas on-line. Eu lembro que isso era realmente difícil na Selva. Para ver vídeo, tinha que baixar tudo primeiro. Até os banners hoje passam vídeos. Não esqueço da minha filha, de cabeça baixa esperando a página em Flash do site da Barbie carregar. O botão de &lt;span style="font-style: italic;"&gt;reload/refresh&lt;/span&gt; era algo que ela já sabia usar.&lt;br /&gt;&lt;br /&gt;Mas o grande problema com o Internet Divide é que não seremos incluídos nas próximas ondas de tele-trabalho e de &lt;span style="font-style: italic;"&gt;outsourcing&lt;/span&gt;. Quando eu trabalhava no Brasil, lembro de reuniões onde tínhamos que explicar nossas latências de 400 ms... coisa inimaginável nos EUA ou na Alemanha. Já na época, isso impedia o uso de VoIP. O Skype melhorou isso, mas sempre estamos atrás. Quando a Internet deixará de ser encarada como artigo de luxo e sim com a mesma importância da energia elétrica?&lt;br /&gt;&lt;br /&gt;Eu vim de uma cidade de 1.5 milhões de habitantes, mas estrangulada de todas as formas em relação a Internet. Além do isolamento geográfico natural, fomos excluídos do mundo digital de primeira linha.&lt;br /&gt;&lt;br /&gt;Olhando para o presente, entendo como ficamos para trás em outras ondas de desenvolvimento. Demoramos para ter escolas para todos. Demoramos para entender que um país precisa ter políticas sérias para poder crescer. Ainda não exploramos nosso imenso potencial humano. Gente excluída pela pobreza e pela ignorância.&lt;br /&gt;&lt;br /&gt;Internet não é luxo. Internet não é tudo. Mas Internet é muito importante. A velocidade de um canal e seu preço podem decidir entre instalar um novo negócio em uma cidade ou país. Negócios geram emprego e riqueza. O acesso a informação deveria ser encarado mais seriamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1787690745338301006?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1787690745338301006/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1787690745338301006' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1787690745338301006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1787690745338301006'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/06/internet-divide.html' title='The Internet Divide'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7411954787753762637</id><published>2007-05-11T18:50:00.000-04:00</published><updated>2007-09-09T16:33:04.031-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Brasil'/><title type='text'>Um lugar chamado Brasil</title><content type='html'>Comecei a aceitar que vim de uma terra desconhecida. É interessante saber que muitas pessoas desconhecem o Brasil, não só internamente, mas principalmente no exterior.&lt;br /&gt;&lt;br /&gt;No supermercado até se acham guias de viagens ao Brasil, mas a viagem já é outra história. É intrigante, pois conseguimos esconder um país com quase 200.000.000 de habitantes, o quinto maior do mundo.&lt;br /&gt;&lt;br /&gt;Eu sempre observo a origem das coisas que compro aqui. Já consigo comprar limão do Brasil e uvas sem caroço, produzidas na Bahia.&lt;br /&gt;&lt;br /&gt;Ah, sempre tem camarão no Carrefour, vindo do Brasil é claro. Inclusive, camarão aqui é mais barato que na selva. Eu não entendo de logística, mas Manaus sempre foi cara por ser longe de tudo. Agora, como é que conseguem enviar camarão para a Bélgica, pagando-se sabe lá que taxas e fretes. Não deve ser fácil, pois o produto se estraga facilmente... mesmo convertendo para Reais, aqui é mais barato: compro o quilo por €6,00. E não é micro-camarão, mas camarões médios. Mistério :-)&lt;br /&gt;&lt;br /&gt;Mas se sair do Brasil é complicado, voltar é mais difícil ainda. Vôos só via Paris, Londres, Lisboa ou Frankfurt. Pacote turístico, difícil de achar. Eu consigo passar uma semana em hotel de luxo na República Dominicana, mas barato que ir para São Paulo e dormir no aeroporto... O produto Brasil é muito mal vendido. Indisponível, caro ou perigoso. Vou ignorar o turismo sexual.&lt;br /&gt;&lt;br /&gt;Além dos pacotes turísticos escassos, nossos produtos não são bem identificados. Eu aposto que boa parte do café daqui vem do Brasil, mas nesses casos a embalagem só identifica a marca. Quando o café é da Colômbia  ou Equador a coisa muda.&lt;br /&gt;&lt;br /&gt;Cada vez mais aceito que vim de um lugar realmente distante :-) A língua portuguesa é minha vingança por não falar francês corretamente, ainda. Como muitos não estão acostumados a ouvir e como o sotaque do brasileiro soa suave para eles, fica parecendo um dialeto de alguma língua próxima do francês. Eles tentam entender, mas demoram para perceber que é outra língua.&lt;br /&gt;&lt;br /&gt;Poucos tem noção de nossa cultura. Eu achava que isso só acontecia nos EUA. Para americano, tudo é América Latina, logo deve-se falar espanhol e assim vai. Mas na Europa se tem este tipo de problema também. Andei viajando a trabalho por aqui e vi que a situação não muda muito.&lt;br /&gt;&lt;br /&gt;Eu acredito que a resposta para isso é o tamanho real do Brasil. Nosso país é grande,  mas não consome proporcionalmente e ainda estamos engatinhando em termos de comércio mundial.  Claro, tolos  os estrangeiros que ignorarem o Brasil para investimentos, com certeza ainda somos uma mina de outro. Mas esse "desconhecimento" da população em geral é porque falhamos em vender nossa cultura.&lt;br /&gt;&lt;br /&gt;Exemplos típicos de documentários sobre o Brasil:&lt;br /&gt;a) Samba e Bossa nova: normalmente antigos ou focando a pouca roupa das meninas do Samba.&lt;br /&gt;b) Pobreza urbana e rural: de todo tipo. Eu estava lendo umas páginas sobre um jornalista inglês. Ele viajou para Manaus e claro identificou o "filé" da cidade.&lt;br /&gt;c) Destruição da Amazônia. Nessa época de &lt;span style="font-style: italic;"&gt;revival&lt;/span&gt; da ecologia, isso fica cada vez mais presente. Somos os destruidores da maior floresta que sobrou no mundo, porque os outros já destruíram as suas... até nisso ficamos por último. Mas desta vez, ficar por último ou com a última floresta é motivo de orgulho.&lt;br /&gt;&lt;br /&gt;Nada contra mostrar nossa realidade, mas esta é composta de pessoas pobres e de outras pessoas também. Existe o Brasil industrial, o Brasil da tecnologia, etc. Acho que estou exagerando, afinal, ninguém é obrigado a entender de geografia e principalmente do país dos outros.&lt;br /&gt;&lt;br /&gt;Meu desejo é que o Brasil começasse a vender mais para o exterior e que a riqueza fosse melhor distribuída. Mais negócios, maior o interesse em conhecer o Brasil. Mas para isso acontecer, teríamos que tirar 100.000.000 de brasileiros da linha de pobreza. Consumimos pouco pois muita gente é pobre. O mercado é grande em números, mas modesto em poder de compra. Muita gente ainda trabalha para tentar comer, quando trabalha.&lt;br /&gt;&lt;br /&gt;Na verdade, somos nós brasilieiros que não enxergamos o próprio país. Aceitamos a pobreza absoluta em nossa volta e muitas vezes a ignoramos. Lembro de uma favela bem atrás do Studio5. Crianças ricas, comendo a pipoca de ouro do Cinemark e ao atravessar a rua: crianças pobres, olhando. A violência só aumenta, principalmente no quesito crueldade. O que será que fizemos de errado?&lt;br /&gt;&lt;br /&gt;O problema é grave. Uma prova disso é pegar o site de uma grande empresa americana. Digamos, a Best Buy. Procure um loja da Best Buy em um raio de 50 Km. Provavelmente várias lojas aparecerão. Faça o mesmo com outras grandes lojas no Brasil. Exclua Rio e São Paulo e veja como a distribuição é diferente. Vazio de consumo.&lt;br /&gt;&lt;br /&gt;Sempre melhoramos, isso é verdade. Mas por que o México e outros países da América Latina estão melhorando mais rápido?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7411954787753762637?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7411954787753762637/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7411954787753762637' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7411954787753762637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7411954787753762637'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/05/um-lugar-chamado-brasil.html' title='Um lugar chamado Brasil'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-598573520567530564</id><published>2007-04-30T16:00:00.000-04:00</published><updated>2007-09-09T16:27:45.745-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>Do Jaca ao Java</title><content type='html'>Em &lt;a href="http://junglecoders.blogspot.com/2007/04/python-your-life.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Python&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Life&lt;/span&gt;&lt;/a&gt;, eu disse que não gostava de Java. E realmente não gostava.&lt;br /&gt;Conheci Java no Internet &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;World&lt;/span&gt; 1996, no Rio de Janeiro :-) Minha última visita a cidade maravilhosa. Solteiro, com algum dinheiro no bolso... ah... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Copacabana&lt;/span&gt; e os &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;barzinhos&lt;/span&gt; do Rio... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;putz&lt;/span&gt;, lembrei que já em 96 eu deixei o relógio em casa, com medo de assaltos. Mas o Rio é lindo.&lt;br /&gt;&lt;br /&gt;Bem, a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Sun&lt;/span&gt; apresentou o Java e principalmente as diferenças entre o Java e o JavaScript. Eu tinha um pequeno provedor em &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Manaus&lt;/span&gt; e usávamos um servidor &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Sun&lt;/span&gt;. Eu sofria para escrever os programas do provedor em C++, lembro que passei 2 semanas para achar os arquivos binários do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;GCC&lt;/span&gt; para &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;microSparc&lt;/span&gt;... viva o Google (naquela época o melhor era o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;AltaVista&lt;/span&gt;). O Java era grátis e o compilador da &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Sun&lt;/span&gt; custava uns &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;US&lt;/span&gt;$3.000,00 (sem os manuais...), me apaixonei por &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Applets&lt;/span&gt; e por um bom tempo Java era só &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Applets&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Mas para mim, a linguagem nunca fora nada mais que um C++ &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;disfarçado&lt;/span&gt;. Eu não tinha problemas com ponteiros, até achava normal trabalhar com eles e ter &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;seg&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;faults&lt;/span&gt; aqui e ali :-)&lt;br /&gt;O problema é que na época eu não via nada além disso. Por que fazer algo em Java se eu já tinha minhas bibliotecas em C e C++? Não era tão claro para mim as vantagens de ser &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;multiplaforma&lt;/span&gt;. E Java 1.0 ninguém esquece... No Windows, eu tinha o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Delphi&lt;/span&gt; e no Linux tinha também o C/C++, era só recompilar. Para mim, o Java ficou sendo uma forma legal de enriquecer &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;home&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;pages&lt;/span&gt; com &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;applets&lt;/span&gt; ou de deixar meus &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;CGIs&lt;/span&gt; mais lentos que em C/C++.&lt;br /&gt;&lt;br /&gt;O tempo passou e a linguagem Java se popularizou. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;EJB&lt;/span&gt;, Java 2, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Hibernate&lt;/span&gt; e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;Tomcat&lt;/span&gt; foram aparecendo. Mas nesta época eu já não estava mais programando e sim &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;gerenciando&lt;/span&gt;. Perdi o desenvolvimento do Java.&lt;br /&gt;&lt;br /&gt;Só considerei Java seriamente no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;Desktop&lt;/span&gt; depois de ver o Eclipse e sua biblioteca.&lt;br /&gt;Depois começamos a fazer programas para um cliente no exterior, usando Java e o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;BEA&lt;/span&gt;. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_32"&gt;Comecei&lt;/span&gt; a gostar, mas realmente fiquei preocupado quanto a produtividade dos programadores, precisava de muito &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;framework&lt;/span&gt; para fazer algo funcionar. Programador Java não ganha pouco, graças a Deus :-) Haja máquina e dinheiro com licenças... um estagiário começou a trabalhar com &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;Tomcat&lt;/span&gt; e o tigre comeu o pobre rapaz :-) Não foi um recomeço amigável. Nesta época eu comecei a chamar Java de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;Jaca&lt;/span&gt;. Era grande e ninguém conseguia comer sozinho :-)&lt;br /&gt;&lt;br /&gt;Ano passado, eu comecei a desenvolver um aplicativo novo para Web, usando &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;Ajax&lt;/span&gt; e múltiplos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;Threads&lt;/span&gt;. Adivinhem que linguagem eu escolhi para desenvolver meu pequeno monstro? Java. Fiquei impressionado com as melhorias do Java 5, principalmente com &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;templates&lt;/span&gt; e operações com lista. A biblioteca da linguagem também é excelente, fora o Eclipse com seu preço amigável. Criei o servidor e este passa muito bem. Inclusive, migrei alguns utilitários de baixo nível escritos em Visual C++ e .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;Net&lt;/span&gt; para Java. Semana passada instalei o servidor pela &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_40"&gt;primeira&lt;/span&gt; vez no Linux e ficou muito bom, não precisei alterar nada. Troquei o banco de dados de MySQL para &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Firebird&lt;/span&gt; 1.5 e depois para o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;Firebird&lt;/span&gt; 2.0. Não precisei mudar quase nada, graças ao &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;Hibernate&lt;/span&gt;.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;Ok&lt;/span&gt;, o servidor usa uns 47 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;MB&lt;/span&gt; de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;Ram&lt;/span&gt; só para ele... mas um pente de 512 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;MB&lt;/span&gt; custa uns €30,00. Eu custo bem mais caro. Entre comprar o pente e perder meus cabelos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;debugando&lt;/span&gt; código reentrante em C++... prefiro comprar o pente :-)&lt;br /&gt;&lt;br /&gt;Já estou usando o Java 6, não precisam ficar preocupados.&lt;br /&gt;&lt;br /&gt;Assim fiz as pazes com o Java. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_49"&gt;Desculpas&lt;/span&gt; aos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_50"&gt;pobres&lt;/span&gt; coitados que quiseram vender Java para mim antes, dou o braço a torcer. Vocês tinham razão. Mas que era uma &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;Jaca&lt;/span&gt;, era.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-598573520567530564?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/598573520567530564/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=598573520567530564' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/598573520567530564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/598573520567530564'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/do-jaca-ao-java.html' title='Do Jaca ao Java'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-6447819227685289727</id><published>2007-04-25T16:11:00.000-04:00</published><updated>2007-09-09T16:34:01.085-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>Bandeiras de software</title><content type='html'>Tecnologia precisa de razão ou motivo para se utilizar? Digo, tecnologias são como bandeiras? Ou como time de futebol?&lt;br /&gt;&lt;br /&gt;Eu explico. As bandeiras de software são como vejo questões sobre tecnologias sendo defendidas como o time de futebol do coração. Alias, acho que escolhemos um time de futebol por diversas maneiras: o pai torcia, gostava da cor, ganhou o campeonato quando você era criança...&lt;br /&gt;&lt;br /&gt;Eu torço pelo Grêmio, &lt;a href="http://pt.wikipedia.org/wiki/Gr%C3%AAmio_Foot-Ball_Porto_Alegrense"&gt;campeão mundial em 1983&lt;/a&gt;. Não lembro de jogos de futebol antes da final do campeonato no Japão. Mas nunca fui fã de futebol... só lembro disso em copa do mundo.&lt;br /&gt;&lt;br /&gt;Eu uso Linux há bastante tempo, de verdade desde 1996. Mas antes já tinha comprado uns disquetes do Mingo, com o tal Unix de um só disco... e oito terminais!&lt;br /&gt;&lt;br /&gt;Eu defendo o uso racional de tecnologia. Nem sempre Linux é bom.&lt;br /&gt;&lt;br /&gt;O mesmo acontece com orientação a objetos, sistemas operacionais e linguagens de programação. Se houvesse uma só resposta para todo tipo de problema que estas tecnologias podem resolver, não haveriam tantas tecnologias.&lt;br /&gt;&lt;br /&gt;Os problemas mudam, as pessoas que tem os problemas também. Cada caso exige uma análise particular que resultará em soluções também particulares.&lt;br /&gt;&lt;br /&gt;Penso em linguagens como Delphi. Na empresa que trabalho, reina o C++ e o Java. Mas existem guerreiros do Delphi. Hoje mesmo eu estava resolvendo um problema com JNI, em outro laboratório. Eles perguntaram por que eu havia escolhido fazer o novo servidor em Java?&lt;br /&gt;&lt;br /&gt;Pensei um pouco e respondi que conhecia Delphi, mas que o servidor era uma coisinha com múltiplos &lt;em&gt;threads&lt;/em&gt;, acesso a banco de dados e inúmeros candidatos a problemas de concorrência. E para este tipo de problema, o Java é excepcional.&lt;br /&gt;&lt;br /&gt;Se eu tivesse que desenvolver algo do zero novamente, eu teria que pensar no problema, antes de escolher a solução. Java não é bom para tudo.&lt;br /&gt;&lt;br /&gt;No caso do Linux, temos os guerreiros do &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;, e eu estou para entrar nesse exército. Eu realmente gostaria de ter um desktop Linux hoje. Na realidade, meu computador tem dual-boot, mas para acessar a Web e trabalhar, eu ainda uso o Windows. O Linux fica para minha pesquisa e para alimentar meu nerdismo.&lt;br /&gt;&lt;br /&gt;Por outro lado, eu quase que não hesitaria em ter outro servidor Linux. Acho que para servidor Web, SVN, email, etc não tem solução melhor que um bom &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt;. Mas eu já prescrevi Windows para empresas que tinham dinheiro para isso, mas não para contratar um administrador Linux. Não adianta ter Linux se a cultura da empresa é Windows. Mais batalhas...&lt;br /&gt;Pensando em um novo produto de software. Qualquer um. Você escreveria este para Linux ou Windows? Eu escreveria para Windows, pois acho que o dinheiro ainda está com quem usa Windows. Fica aqui meu protesto contra os piratas que abrem a boca pra esbanjar as versões mais recentes do Sistema Operacional, mas que se recusam em pagar por isso. O Linux sempre foi muito claro para mim. A maioria das empresas em que trabalhei caia para trás quando era informada dos custos reais de software. Era quando o Linux tinha uma chance. Onde o Windows custava menos de R$10,00: sem chance. Não pelo Linux ou pela Microsoft, mas pela minha responsabilidade como profissional de informática, isso sim é uma bandeira que eu defendo!&lt;br /&gt;&lt;br /&gt;Ainda assim, sou contra defender o Linux como uma bandeira. Eu também não defendo o Python para qualquer tipo de programa. Quanto mais nos especializamos, temos a tendência de encaixar as coisas dentro daquilo que já conhecemos. É nessa hora que a mente deve permanecer aberta.&lt;br /&gt;&lt;br /&gt;Como eu sou um cara esquecido, acabo tendo que rever tudo de novo, sempre. Às vezes não ter memória ajuda :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-6447819227685289727?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/6447819227685289727/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=6447819227685289727' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6447819227685289727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6447819227685289727'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/bandeiras-de-software.html' title='Bandeiras de software'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1294005294135653108</id><published>2007-04-19T15:38:00.000-04:00</published><updated>2007-09-09T16:33:26.545-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>Do mercantilismo à indústria de software</title><content type='html'>Sempre me pergunto: o que falta para tanta gente talentosa em nosso país realmente fazer dinheiro com informática. Já trabalhei com muita gente boa que sempre corre atrás de dinheiro, seja num emprego fixo ou em contratos de curta duração.&lt;br /&gt;&lt;br /&gt;Por que estamos sempre vendendo mão-de-obra e nosso tempo? E por que tão poucos investem em produtos? É estranho um país do tamanho do Brasil ter poucos produtos de uso global. Há gloriosas exceções, mas são muito raras. Li um post muito interessante no &lt;a href="http://mesquitajl.blogspot.com/2007/03/opinio-dos-outros-brasil-bananas-e.html"&gt;Blog do Mesquita&lt;/a&gt; sobre bananas e bananada. Esta estória pode nos dar algumas idéias.&lt;br /&gt;&lt;br /&gt;O que será que nos falta para sermos empreendedores de fato? Lembro que empreendedorismo foi uma das matérias que mais gostei na faculdade. Na época, era o auge da Internet e da das .COM. O curso falava boa parte do tempo em plano de negócios.&lt;br /&gt;&lt;br /&gt;Planejar a empresa é algo muito bom e o plano de negócios ajuda neste sentido. Mas em 2000, pensava-se realmente grande. Grandes sites web com novos serviços, mas que precisavam de milhares de reais para entrar no ar... E o plano de negócios abria as portas dos investidores de risco. Eles investiam dinheiro no novo negócio em troca de ações, melhor que fazer empréstimo em banco. No empréstimo de risco, se tudo for por água abaixo, a empresa fecha e pronto. Se tudo der certo, os investidores recebem o que investiram e claro parte dos lucros (a maior parte :-).  O plano de negócios podia ser mais importante que a idéia... deu no que deu. Eu espero que os problemas com a bolha não tenham enterrado de vez o sonho empreendedor de muitos. Esse modelo chegou a funcionar até no Brasil. Não sei se isso hoje ainda acontece lá. Nos EUA, está voltando a acontecer, desta vez com mais pé no chão.&lt;br /&gt;&lt;br /&gt;Voltando no tempo...&lt;br /&gt;&lt;br /&gt;Eu comecei a ganhar dinheiro com computadores quando tinha 12 anos. Brincava com eles desde 1984... mas depois comecei a vender em casa papel para impressora, etiquetas adesivas, disquetes e o incrível &lt;a href="http://www.tabajara-labs.com.br/apple/picotex/"&gt;Picotex&lt;/a&gt;. Estávamos em plena &lt;a href="http://pt.wikipedia.org/wiki/Pol%C3%ADtica_Nacional_de_Inform%C3%A1tica"&gt;reserva de mercado&lt;/a&gt;, governo militar etc. Eu achava que para ser presidente tinha que ser general, depois alguém me explicou que não era bem assim :-) Nesta época, havia computadores brasileiros como o &lt;a href="http://pt.wikipedia.org/wiki/TK_90X"&gt;TK90X&lt;/a&gt;, &lt;a href="http://pt.wikipedia.org/wiki/Tk_2000"&gt;TK2000&lt;/a&gt;, &lt;a href="http://pt.wikipedia.org/wiki/CCE_Exato"&gt;EXATO CCE&lt;/a&gt;, UNITRON e outros brinquedos raros. Imagine como era isso em Manaus... nos anos 80! Oportunidade para um menino ganhar um pouco de dinheiro e com isso comprar mais disquetes...&lt;br /&gt;&lt;br /&gt;Eu tinha um amigo, o Mingo, que sempre teve uma visão empreendedora. Eu aprendi muito com ele. O Mingo sempre estava vendendo alguma coisa, depois começou a escrever programas e a distribui-los em disquete. Na época, sem Internet, a coisa era realmente muito mais difícil. Um dos programas você pode conhecer aqui: &lt;a href="http://mahome.mingus.cjb.net/"&gt;Mingo Assembler&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Antes havia o problema da distribuição, quem aceitaria vender software? Gravar os disquetes ou CD-ROM e fazer a caixa de papelão era muito caro, especialmente em pequenas quantidades. Na época, o software ainda vinha com o manual impresso, mais um custo. Hoje com a Internet isso não existe mais. E melhor, pode-se alcançar não só todo o país, mas todos os países do mundo.&lt;br /&gt;&lt;br /&gt;Eu acredito que o problema é ainda estarmos vivendo a era comercial do software. Se pensa em um programa de controle de estoques ou um que controle uma pequena loja. Normalmente, o sonho não vai além de conseguir alguns clientes e viver da manutenção do software. Estamos comercializando nosso tempo e entregando-o de porta em porta.&lt;br /&gt;&lt;br /&gt;Por que não pensamos em produtos?&lt;br /&gt;&lt;br /&gt;A falta de pensamentos deste tipo condenaram países como Portugal e Brasil a um atraso de desenvolvimento em relação a outros países. Nós exportávamos o nosso açúcar, mas quem ganhava mais dinheiro eram os holandeses, que refinavam e vendiam por toda Europa. O risco de manter as colônias era todo nosso, o lucro deles. Se procurarmos em nossa história, sempre foi assim. Trabalhamos muito, mas não somos os que mais ganham com este trabalho.&lt;br /&gt;&lt;br /&gt;Será que o mesmo vale para o Software? Eu vejo o modelo indiano e fico assustado. Eles possuem muita gente boa em software. Mas eu ainda não conheço grandes empresas indianas! Ou melhor dizendo: grandes produtos indianos. Existem grandes empresas de consultoria e de desenvolvimento off-shore, mas e de software como produto? Eles estão nas melhores universidades do mundo,  gente com formação não falta. Trabalham em empresas como Google e Microsoft, gerando os produtos que usamos e compramos hoje, mas fazem isso nos EUA. Sucesso para eles, oportunidade de mudar de vida tem que ser aproveitada, mas o grosso do dinheiro fica nos Estados Unidos. Tio Sam sabe vender e ainda bem que os chineses ainda não aprenderam a fazer isso sozinhos, mas eles estão chegado lá.&lt;br /&gt;&lt;br /&gt;O modelo brasileiro é diferente, pois não exportamos serviços de informática. Ou melhor, não exportamos como poderíamos. Sabemos fazer, não vendemos muito e tem pouca gente de fora querendo comprar.&lt;br /&gt;&lt;br /&gt;No meu emprego anterior, nós fazíamos software para empresas nos EUA e Europa. O problema é que um dia, estas empresas deixaram de fazer negócio conosco. E advinhem, nenhum produto foi desenvolvido durante todo o tempo de parceria. Nada ficou conosco.&lt;br /&gt;&lt;br /&gt;Esse é o problema de se vender tempo e talento. No final, quase nada sobra. Ok, cria-se gente muito bem treinada e experiente, mas no final das contas isso se transforma em custos e obrigações que você não pode pagar sem um produto. Iniciasse o ciclo novamente, em busca do próximo cliente, do próximo projeto. Isso ocorre em vários lugares.&lt;br /&gt;&lt;br /&gt;Nos últimos anos, a coisa parece que piorou. Eu ouvia mais sobre produtos de software na Manaus dos anos 80, do que hoje. E fico preocupado. Será que deixou de ser interessante?&lt;br /&gt;&lt;br /&gt;Aqui na Bélgica, devido ao alto custo de mão-de-obra, as grandes consultorias são as únicas a fazer dinheiro com software customizado. As pessoas pensam em produtos, porque o custo de suporte é muito grande e o de desenvolvimento maior ainda.&lt;br /&gt;&lt;br /&gt;A indústria de software ainda não é tão comum na Selva, mas encubadoras de empresa não param de surgir. Conversando com amigos, ouço a pergunta: se eu fizer isso, será que vende?&lt;br /&gt;Navegando pela Internet, pode-se perceber que vende-se de tudo. É uma questão de quanto e se será o suficiente para mudar sua vida. Mas se vamos continuar tentando, por que não tentar na direção certa?&lt;br /&gt;&lt;br /&gt;Não é fácil, eu sei. Mas parece ser mais um daqueles problemas de falta de fé, autoconfiança. Software é algo que eliminou várias barreiras como distância e distribuição. Os brasilieiros podem competir com qualquer outro povo do mundo. Isso é raro e não estamos acostumados a acreditar que podemos bater de frente com eles. Mas tem que acreditar.&lt;br /&gt;&lt;br /&gt;Eu já tive duas empresas. Eu vou morrer tentando. Brasileiro não desiste mesmo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1294005294135653108?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1294005294135653108/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1294005294135653108' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1294005294135653108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1294005294135653108'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/do-mercantilismo-indstria-de-software.html' title='Do mercantilismo à indústria de software'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1471972930842803146</id><published>2007-04-17T16:08:00.000-04:00</published><updated>2007-09-09T16:32:24.997-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='linguagens'/><title type='text'>Python your life</title><content type='html'>Eu sou um cara esquecido. Eu realmente não lembro certas coisas, mas outras eu não esqueço.&lt;br /&gt;Uma vez, ainda no final dos anos 90, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;putz&lt;/span&gt; esqueci em que ano foi... um amigo de faculdade comentou sobre uma tal linguagem "&lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;píton&lt;/span&gt;&lt;/span&gt;". Ele disse ser super prática, muito boa, mesmo sendo script.&lt;br /&gt;&lt;br /&gt;Na época eu já trabalhava com Linux e qualquer coisa para ajudar era bem vinda. Baixei o tal do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Python&lt;/span&gt; e fiz o tradicional imprima os primos, usando listas, claro! Depois um aplicativo para procurar arquivos repetidos no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;HD&lt;/span&gt;. Foi o suficiente para me libertar de Perl, até então a melhor coisa do mundo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;script&lt;/span&gt; para mim.&lt;br /&gt;&lt;br /&gt;Passei um tempo sem usar a linguagem. Acho que até 2002, quando um grupo de amigos do trabalho iniciou uma discussão sobre jogos de computador. Como todos eram técnicos, o assunto não era o jogo em si, mas a tecnologia por trás de um jogo. Especificamente, o que mais interessava ao grupo era escolher a melhor linguagem para se codificar um jogo. Como esse tipo de coisa é tão &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;exato&lt;/span&gt; quanto religião ou política... resolvi sugerir que cada um tentasse fazer um jogo simples, com a linguagem que achasse melhor.&lt;br /&gt;&lt;br /&gt;Eu não gostava de Java, depois explico o por quê. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;Comecei&lt;/span&gt; a brincar com &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Delphi&lt;/span&gt;, que estava a mão na época. Sempre programei em C e não precisava de outro teste para saber o que eu já sabia: C é bom, mas tem coisa melhor hoje em dia. Lembrei da tal linguagem da cobra, o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Python&lt;/span&gt; (segundo o criador da linguagem, &lt;a href="http://pt.wikipedia.org/wiki/Guido_van_Rossum"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Guido&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;van&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Rossum&lt;/span&gt;&lt;/a&gt;, pronuncia-se "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Paiton&lt;/span&gt;" &lt;a href="http://www.ibiblio.org/pub/multimedia/video/obp/IntroducingPython.mpg"&gt;filme&lt;/a&gt; &lt;a href="http://www.pythonbrasil.com.br/moin.cgi/VideoIntroducingPython?action=AttachFile&amp;do=get&amp;amp;target=IntroducingPython.sub"&gt;legenda&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Usando &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Python&lt;/span&gt; e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Pygame&lt;/span&gt;, iniciei um pequeno "&lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;shoot&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;them&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;up&lt;/span&gt;&lt;/span&gt;", tipo &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Space&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Invaders&lt;/span&gt;&lt;/span&gt;, afinal era pra ser um jogo simples. E se o &lt;span style="font-style: italic;" class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Space&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;" class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Invaders&lt;/span&gt; original rodava num &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Atari&lt;/span&gt; com 1 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;MHz&lt;/span&gt;... rodaria em qualquer linguagem &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;script&lt;/span&gt; séria.&lt;br /&gt;&lt;br /&gt;Comecei desconfiado, testando a performance do pequeno monstro que estava criando. Fiquei surpreso ao constatar que a performance era mais que suficiente para o que eu queria.&lt;br /&gt;&lt;br /&gt;A linguagem é realmente interessante: fácil de aprender, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;multiplataforma&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;com acesso a todo tipo de &lt;/span&gt; bibliotecas de sistema, banco de dados e  até jogos! Continuei fazendo o pequeno jogo. Gráficos, sons, suporte a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;joystick&lt;/span&gt;, alteração dinâmica de resolução e suporte a várias línguas. Um jogo realmente simples. Você pode ver o que eu criei em &lt;a href="http://invasores.sourceforge.net/"&gt;http://invasores.sourceforge.net/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Quanto aos outros colegas, um iniciou um jogo em Java, acho que até foi em J2ME... mas não chegou a ter cores. Outras tentativas não deixaram rastros. Agora eu tinha provas que &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;Python&lt;/span&gt; era boa, não pela superioridade pura e simples de sua simplicidade, mas porque com ela eu podia fazer mais em menos tempo. Produtividade enfim.&lt;br /&gt;&lt;br /&gt;Antes eu havia usado o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Python&lt;/span&gt; para converter banco de dados e realizar operações com arquivos. Desde a experiência com o jogo, eu uso &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;Python&lt;/span&gt; para todo pequeno utilitário que eu preciso. E não me &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_31"&gt;surpreendo&lt;/span&gt; quando acho outros programas muito bons escritos na linguagem. Esses tempos mesmo, escrevi utilitários para fazer a carga de arquivos CSV para um banco &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;MySql&lt;/span&gt; e gerar tabelas em Latex.&lt;br /&gt;&lt;br /&gt;Além do poder da linguagem, sua clareza é realmente impressionante. Os tais blocos por &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;identação&lt;/span&gt; atenderam a um desejo que eu tinha há muito tempo. Misturar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;tabs&lt;/span&gt; e espaços é complicado, eu sei, mas quando se consegue fazer certo... consegue-se um programa limpo e fácil de ler. Se você consegue ler, consegue aprender.&lt;br /&gt;&lt;br /&gt;Eu ensinei lógica de programação para alunos do ensino médio e para algumas pessoas na faculdade. Era terrível ler um programa "desdentado". Mais difícil ainda convencer as criaturas da importância de um código limpo. Esse problema não existe com &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;Python&lt;/span&gt;. Será executado como lá está escrito, ou melhor, como se vê. Eu realmente gosto da linguagem.&lt;br /&gt;&lt;br /&gt;Além disso tudo, a linguagem vem com todos os acessórios, incluindo-se uma ativa comunidade lusófona em&lt;a href="http://www.pythonbrasil.com.br/moin.cgi/"&gt; PythonBrasil&lt;/a&gt;. Só não aprende quem não quer.&lt;br /&gt;&lt;br /&gt;Eu continuo programando em C++ e Java, mas a outra é Python.&lt;br /&gt;&lt;br /&gt;Cada um sabe onde seu calo aperta. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;Python&lt;/span&gt; não é bala de prata. Mas como não existe lobisomem... Python your life!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-1471972930842803146?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1471972930842803146/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1471972930842803146' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1471972930842803146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1471972930842803146'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/python-your-life.html' title='Python your life'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-6316805111734995917</id><published>2007-04-16T14:28:00.000-04:00</published><updated>2007-09-09T16:32:05.233-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>Capitães Format, Windows Wizardry</title><content type='html'>Capitão Format é uma forma gentil que eu encontrei para chamar alguém com soluções simples e práticas, ainda que nem sempre racionais.&lt;br /&gt;&lt;br /&gt;Antes de tudo, eu uso Linux e Windows. Gosto dos dois e falo bem e mal dos dois também. Então não entenda este post como uma declaração de guerra.&lt;br /&gt;&lt;br /&gt;O termo vem da facilidade que o suporte técnico de algumas empresas têm em "condenar" seu Windows.  Computador lento ou travando, não tem outra solução: format !&lt;br /&gt;Há variações conhecidas: antes de formatar, claro, todos os seus problemas são devidos a um vírus letal e desconhecido.&lt;br /&gt;&lt;br /&gt;Acho que alguns até tem um certo fetiche em instalar e reinstalar o Windows. Tudo muito bom, mas o que me intriga é fazer isso de forma quase automática. Um dos sintomas de Capitão Format é resolver tudo com um boot e depois com Format, claro. No Windows essa solução até que é bem normal, mas já vi isso acontecer com Linux.&lt;br /&gt;&lt;br /&gt;O Linux é um sistema normalmente bem comportado. Salvo alguns momentos geniais que você derruba serviços aleatórios e essenciais ao bom funcionamento do sistema, o Linux não precisa de reboot. Eu mantive e ainda mantenho alguns servidores Linux. O que acho mais engraçado são as sugestões do tipo: o servidor X não está funcionando, posso dar o boot?&lt;br /&gt;&lt;br /&gt;Às vezes funciona. Mas no Linux, você corre o risco de derrubar todos os usuários, todos os  serviços,  esperar o sistema rebootar e voltar com o mesmo problema. Ainda bem que pouquíssimas vezes ouvi alguém dizendo para formatar o Linux... mas voltando ao Windows e defendendo alguns Capitães Format que conheço...&lt;br /&gt;&lt;br /&gt;Quando o homem não dominava o plantio de alimentos, vivíamos como nômades, mudando de um lugar para outro, tão logo o alimento se tornasse escasso. Não tinha outra solução, pois realmente não se sabia como plantar. A mesma coisa acontece com o Windows. O sistema é tão complexo, pois roda ou tenta rodar em qualquer coisa que fica difícil realmente entendê-lo.&lt;br /&gt;&lt;br /&gt;O Windows sofre de excesso de integração. Tudo roda junto, tão junto quanto cartas num castelo de cartas. Instale dois browsers e eles competirão para ser seu browser padrão. Desinstale um software e padeça com seus restos no registry para sempre. Não é questão do Linux ser melhor ou pior, mas como foi desenvolvido por pessoas diferentes, acaba tendo certas barreiras corta-fogo para estes casos. E o que fazer quando se tem um problema, mas nenhuma solução racional para resolvê-lo? Format!&lt;br /&gt;&lt;br /&gt;O Format reinstala o sistema e deixa tudo pronto para que em dois ou três meses você estrague tudo de novo :-) Mas é a vida. Nada dura para sempre, muito menos a sanidade do seu Registry.&lt;br /&gt;Seja bonzinho com o pessoal da Rede, pois como os nômades de nossa pré-história, a única solução é construir outra casa. O problema do Windows é que a casa sempre é feita no mesmo lugar :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-6316805111734995917?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/6316805111734995917/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=6316805111734995917' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6316805111734995917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/6316805111734995917'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/capites-format-windows-wizardry.html' title='Capitães Format, Windows Wizardry'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-7909922065927665042</id><published>2007-04-13T02:09:00.001-04:00</published><updated>2007-09-09T16:30:40.358-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow'/><category scheme='http://www.blogger.com/atom/ns#' term='videogames'/><title type='text'>Pirataria para quê?</title><content type='html'>Fico pensando em quantos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;softwares&lt;/span&gt; alguém consegue dominar.&lt;br /&gt;&lt;br /&gt;Lembro de amigos super equipados. Na mesma máquina: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CorelDraw&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Photoshop&lt;/span&gt;, 3D Max, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Autocad&lt;/span&gt;, etc. O mesmo para outros tipos de programas, fora a centena de jogos instalados. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;HDs&lt;/span&gt; de 300 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;GB&lt;/span&gt; lotados de tudo que se possa imaginar...&lt;br /&gt;&lt;br /&gt;A resposta para isso pode ser pirataria ou pura falta do que fazer. Eu conheço pouca gente com tanto dinheiro para ter todos estes programas ao mesmo tempo. Mas pode-se consegui-los em algum &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;torrent&lt;/span&gt; da rede... ou pelo jornal com entrega a domicílio.&lt;br /&gt;&lt;br /&gt;Não vou entrar no mérito de copiar ou não copiar, é ilegal e pronto.&lt;br /&gt;&lt;br /&gt;O fato que realmente me preocupa é o tempo gasto para se tentar aprender (não por muito tempo, pois logo surge outra novidade) e o vício (compulsão) que algumas pessoas desenvolvem. Saiu versão nova? Tenho que ter! Muitas vezes a tal versão nova não trás nada de novo para o trabalho que a pessoa faz. Mas é um ritual: servos do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;setup&lt;/span&gt;, escravos do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DVD&lt;/span&gt; e do CD-R.&lt;br /&gt;&lt;br /&gt;O mesmo acontece com filmes. Certa vez eu administrava uma rede local. Um certo dia, analisando os &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;registros&lt;/span&gt; de acesso vi que a utilização de Internet no escritório tinha sido máxima durante toda madrugada. Um certo sujeito resolveu baixar um filme, lançamento claro, utilizando um software P2P qualquer. A qualidade do filme era um lixo, mas o importante era baixar a imagem e gravar em disco o mais rápido possível. Além de utilizar a rede para fazer besteira, o software estava mal configurado e transformou nossa rede num difusor de pirataria. Gente do mundo inteiro se conectava e a fonte era na nossa rede. Mas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ok&lt;/span&gt;, o susto passou e o programa foi removido. Quantas vezes o cara assistiu o tal filme? Acho que nunca, pois a versão era em inglês e ele ainda ia procurar a legenda. O importante era baixar, gravar, etiquetar e por na estante. Criar quantidade, ocupar espaço. É interessante como isso pode se tornar um passa tempo.&lt;br /&gt;&lt;br /&gt;Todos temos vícios. Eu jogava &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;World&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Warcraft&lt;/span&gt;, para variar... quando no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;chat&lt;/span&gt; da &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;guilda&lt;/span&gt; o assunto foi o filme &lt;a href="http://adorocinema.cidadeinternet.com.br/filmes/300/300.asp"&gt;300&lt;/a&gt;. Um dos "&lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;guildies&lt;/span&gt;&lt;/span&gt;" comentou o excelente filme: vale a pena pagar os £10 para ir no cinema. O servidor que jogo é na Inglaterra, só para não pensar que esse mal existe só no Brasil. A questão era baixar o filme ou o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;torrent&lt;/span&gt;. Direito &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;autoral&lt;/span&gt; ou qualquer outro assunto ficaram fora de questão. Eu fiquei tão curioso que resolvi assistir ao filme. Paguei €13,00 num pacote de 3 ingressos, gastei 2 (levei a esposa) e fiquei com um para ver outro filme. O filme é realmente muito bom, mas nem por isso resolvi chegar em casa e baixar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;torrent&lt;/span&gt;. Pelo contrário, comecei a pesquisar na &lt;a href="http://en.wikipedia.org/wiki/Battle_of_Thermopylae"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt; e terminei por achar um site que separava Realidade x Ficção (&lt;a href="http://www.imdb.com/title/tt0416449/faq"&gt;um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;FAQ&lt;/span&gt; aqui&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Eu decidi ir ao cinema a tarde e uma hora depois eu estava no cinema, assistindo ao filme com som &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;THX&lt;/span&gt;. Tudo muito rápido. O ponto é: quanto tempo eu gastaria para baixar o tal filme? Mesmo com banda larga, dificilmente o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;torrent&lt;/span&gt; chegaria a velocidade máxima... eu imagino que eu demoraria de um a dois dias no melhor do meu &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;otimismo&lt;/span&gt;... Agora, quanto vale o meu tempo? Minha esposa foi ao cinema comigo e ganhei alguns pontos com isso :-) Tenho certeza que ela não toparia assistir ao filme no micro. Mas, usando meus custos por aqui: 48 horas de micro ligado... um consumo de uns 200W... mais a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;mídia&lt;/span&gt; do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;DVD&lt;/span&gt; para gravar o filme... mas o tempo de gravação (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;ok&lt;/span&gt;, é bem rápido, mas não vou deixar de fora :-)). Se tudo desse certo, quanto isso teria me custado? Acho que no final eu fiz um bom negócio. Eu faço este tipo de avaliação antes de fazer qualquer coisa. Mas cada um é cada um. Se eu não tivesse os tais €13... se o cinema próximo de casa não tivesse som &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;THX&lt;/span&gt;, se a sessão fosse mais tarde...&lt;br /&gt;&lt;br /&gt;Outra coisa que eu penso: o que dizer aos meus filhos sobre o tal &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;DVD&lt;/span&gt;? O que se diz nestas horas? É pirata, mas não faz mal a ninguém? É ilegal, mas não conte pra ninguém? Quando se tem filhos, este tipo de questão passa a vir a tona. É difícil educar uma criança dizendo faça o que eu digo e não faça o que eu faço.&lt;br /&gt;&lt;br /&gt;Falando em filhos, meu filho pediu um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;video&lt;/span&gt;-game. Nada menos que o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;PlayStation&lt;/span&gt; 3... suei quando ouvi o pedido. A super-máquina custa €600,00. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;Ok&lt;/span&gt;, é um leitor de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Blue&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;ray&lt;/span&gt; + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;DVD&lt;/span&gt; + um micro e um vídeo game de brinde. Mas cada jogo custa entre €55 e €60! Acho que ele vai ter que escolher outro presente, é simplesmente muito caro a longo prazo. Talvez um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;Wii&lt;/span&gt; ajude nos custos...&lt;br /&gt;Vejamos o outro lado. Os cálculos pra um vídeo game, utilizando-se os dados de qualquer jornal do Brasil: vídeo game (PS2) + ou - R$1000,00 (com chip, claro), jogos entre R$10,00 e R$20,00 :-( Temos uma indústria &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;marrom&lt;/span&gt; só para sustentar esse tipo de coisa. Já imaginaram quanto dinheiro isso gera? E como esse dinheiro é usado? O pobre do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;camelô&lt;/span&gt; é mais uma vítima. Quem ganha dinheiro são as pessoas que distribuem esses produtos. Outro efeito é que uma criança que recebe uns 5 CDs ou &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;DVDs&lt;/span&gt; de jogos de uma só vez, provavelmente não terminará de jogar nenhum deles. São tantas opções que ela troca rapidamente de um jogo para outro, sem foco. Em um mês ou dois, provavelmente estará pedindo outros jogos.&lt;br /&gt;&lt;br /&gt;Acredito que seja a mesma coisa que acontece com adultos. Windows Vista? Tenho que ter! E se recomeça o ciclo.&lt;br /&gt;&lt;br /&gt;Resumindo, a meu ver, pirataria é perda de tempo. Eu gostava quando os CD's vinham com a letra das músicas e quando software tinha manual impresso. Acho que estou ficando velho. Mas dizer o quê? Sobrevivi a selva e lá isso já foi importante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-7909922065927665042?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/7909922065927665042/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=7909922065927665042' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7909922065927665042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/7909922065927665042'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/pirataria-para-qu.html' title='Pirataria para quê?'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-267478517224897144</id><published>2007-04-11T15:38:00.000-04:00</published><updated>2007-09-09T16:28:03.527-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow'/><title type='text'>E era uma vez em Azeroth...</title><content type='html'>Não lembro muito bem a ordem dos fatos, mas lembro que um dia falávamos sobre &lt;a href="http://pt.wikipedia.org/wiki/MMORPG"&gt;MMORPG&lt;/a&gt;&lt;br /&gt;e como sempre, um amigo do amigo do amigo conhecia o &lt;a href="http://pt.wikipedia.org/wiki/World_Of_Warcraft"&gt;World of Warcraft&lt;/a&gt; (WOW).&lt;br /&gt;&lt;br /&gt;Um belo dia, visito o Edson César e pra minha surpresa o tal jogo estava lá instalado. Era final de 2005 e o fim das noites sem ter o que fazer. Nem precisei de conta &lt;span style="font-style: italic;"&gt;guest&lt;/span&gt;, comprei o &lt;span style="font-style: italic;"&gt;serial key&lt;/span&gt; do jogo, pois na selva loja alguma vendia tal maravilha.&lt;br /&gt;&lt;br /&gt;O jogo é extremamente fácil de instalar, inclusive não tem proteção alguma. Inocentemente, instalei uma cópia com o CD-KEY comprado no Mercado Livre. E então lá estava eu em Azeroth.&lt;br /&gt;&lt;br /&gt;Eu nunca fui um grande jogador em absolutamente nada. Não jogo bem basquete, voley ou futebol. Nunca fui o melhor jogador de jogo algum. Não sei aonde eu estava com a cabeça ao começar a jogar WOW.&lt;br /&gt;&lt;br /&gt;Um anão caçador, claro, chamado Minguado (que outro nome dar pra um pobre anão...). E assim começou o vício. Tudo girava em torno do WOW e quanto tempo faltava para jogar novamente. Todo dia várias horas, inclusive minhas férias inteiras, tudo para "&lt;span style="font-style: italic;"&gt;uppar&lt;/span&gt;" o anão.&lt;br /&gt;&lt;br /&gt;Entrei numa Guilda (grupo de jogadores do WOW) chamada "Kings under the Mountain", lógico que só anões podiam participar. Alias, para quem joga WOW: já repararam o pé direito de Iron Forge? Acho que um dos maiores do jogo inteiro... e numa cidade de anões, grandes colunas vem para compensar algo.&lt;br /&gt;&lt;br /&gt;O jogo é extremamente viciante e você acaba fazendo uma das duas coisas: ou chama seus amigos para jogor ou joga seus amigos fora e se dedica a guilda. Eu acabei por viciar outros amigos, já que Azeroth é um lugar perigoso para uma pequeno anão andar sozinho.&lt;br /&gt;&lt;br /&gt;Minguado passou a lutar com Quidor (César) e Festrati, também anões. Nível após nível, milhões (~4.000.000) de pontos de experiência depois, chegamos ao nível 60, o limite na época.&lt;br /&gt;&lt;br /&gt;O engraçado disso foi o efeito em nossas vidas. De repente quem não jogava WOW era completamente alienado, por fora do mundo. WOW era assunto preferido em festas, almoços e jantares. Nossas esposas chegaram a fazer o clube das "&lt;span style="font-style: italic;"&gt;Viúvas do WOW&lt;/span&gt;"...&lt;br /&gt;&lt;br /&gt;Isso tudo piorou quando em algum momento encontramos os "&lt;a href="http://sc.fanfarras.com.br/guild/"&gt;Southern Cruzaders&lt;/a&gt;". Imaginem só, uma guilda só de brasileiros ou de pessoas que falam português. Não precisa dizer que agora tínhamos um exército completo em Azeroth. Uma guilda para fazer os temíveis "&lt;span style="font-style: italic;"&gt;dungeons&lt;/span&gt;" do jogo. Todas as noites eram de combates intermináveis em &lt;a href="http://www.wowwiki.com/Zul%27Gurub"&gt;Zul´Gurub&lt;/a&gt;. Boss após boss, estávamos lá. Recomendo a guilda para quem deseja não ver novela e se alienar completamente deste mundo :-)&lt;br /&gt;&lt;br /&gt;Acho importante ressaltar o momento WOW, já que jogo há quase dois anos. O tremendo esforço de jogar um MMORPG na floresta.  Manaus não tinha fibra ótica, parece que agora já tem. Eu tinha um poderoso link de 600 Kb em casa (via satélite), com nada menos que 1600 ms de latência pros servidores do WOW. Era como jogar pelo correio. Perfeito para meus reflexos de pedra, mas terrível pros pobres coitados que faziam missões comigo. PvP ? Nem pensar. Eu avistava o pessoal da Horda, em segundos eles estavam batendo muito perto, no outro slide eu já estava morto... mas parece que agora está bem melhor. Mesmo na era da Internet, continuamos sendo prejudicados por este tipo de coisa. Como poderemos alimentar nossos vícios eletrônicos sem uma rede rápida? Já falei que a net aqui na Bélgica é muito boa? Não? Claro que eu não vim para cá por causa da Internet, ou será que vim...&lt;br /&gt;&lt;br /&gt;O vício continuou até eu me mudar para Bélgica. O fuso horário me impediu de entrar em contato com o pessoal da Guilda e acabei ficando impossibilitado de jogar com os amigos no Brasil. Preciso dizer que agora jogo nos servidores europeus? Curado do complexo de inferioridade, ou não, criei outro caçador, night elf, em Spine Breaker. Mas não jogo mais que umas 4 horas por mês. Tenho tempo agora para cortar a grama e dar atenção para família.&lt;br /&gt;&lt;br /&gt;Bem, tudo que sei é que jogando menos consegui tempo para várias outras coisas. WOW é muito bom, mas como tudo tem que ter limites. No início deste ano, foi lançada uma expansão para o jogo... e agora todos foram para o nível 70 e em busca de seus dragões e &lt;span style="font-style: italic;"&gt;mounts&lt;/span&gt; voadoras...&lt;br /&gt;&lt;br /&gt;Se você ainda não sacou o quanto a coisa é viciante, visite &lt;a href="http://www.wowdetox.com/"&gt;WOWDetox&lt;/a&gt;. E lembre-se, a melhor maneira de parar é nem começar :-)&lt;br /&gt;&lt;br /&gt;LSK&lt;br /&gt;Ex-Minguado, Predak&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pt.wikipedia.org/wiki/MMORPG"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8312361233856668827-267478517224897144?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/267478517224897144/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=267478517224897144' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/267478517224897144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/267478517224897144'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/e-era-uma-vez-em-azeroth.html' title='E era uma vez em Azeroth...'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8312361233856668827.post-1808139990992187690</id><published>2007-04-11T13:33:00.000-04:00</published><updated>2007-04-11T16:36:06.924-04:00</updated><title type='text'>Welcome to the Jungle</title><content type='html'>Este blog é para os amigos de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Manaus&lt;/span&gt; e todos que se aventuram nas florestas da informática.&lt;br /&gt;&lt;br /&gt;Muitas vezes, isolados da selva &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Amazônica&lt;/span&gt; pré-Internet, descobriram suas paixões por tecnologia. Filhos da Zona Franca e netos da revolução, tiveram acesso ao &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Atari&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Coleco&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Odyssey&lt;/span&gt; e outros bichos da época. Criados com leite "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Sanden&lt;/span&gt;", importado, assim como suas pasta de dentes "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Crest&lt;/span&gt;"... buscavam de todas as formas encontrar soluções para coisas que ninguém se importava na década de 80.&lt;br /&gt;&lt;br /&gt;Se você teve um Apple II ou um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MSX&lt;/span&gt; e aprendeu a programar seu G21 com o super &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;OTR&lt;/span&gt;... bem vindo à selva.&lt;br /&gt;&lt;br /&gt;Para nossa própria alegria, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;tecnologias&lt;/span&gt; estranhas nunca pararam de aparecer. Estamos aqui para provar que existia vida inteligente antes da Internet :-) e que a selva hospedou e hospeda vários viciados em tecnologia.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;LSK&lt;br /&gt;PS: E também para provar que existe vida após o WOW :-)&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/8312361233856668827-1808139990992187690?l=junglecoders.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://junglecoders.blogspot.com/feeds/1808139990992187690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8312361233856668827&amp;postID=1808139990992187690' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1808139990992187690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8312361233856668827/posts/default/1808139990992187690'/><link rel='alternate' type='text/html' href='http://junglecoders.blogspot.com/2007/04/welcome-to-jungle.html' title='Welcome to the Jungle'/><author><name>Nilo Menezes</name><uri>http://www.blogger.com/profile/11395140461172290588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.nilo.pro.br/mininilo.jpg'/></author><thr:total>1</thr:total></entry></feed>
