<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Bluetux Blog</title>
    <link>http://www.bluetux.com.br</link>
    <description>Linux, Ruby on Rails, PHP, Shell, Redes e dicas</description>
    <language>pt-br</language>
    <item>
      <title>Otimizando Inicializa&#231;&#227;o do Ubuntu</title>
      <description>&lt;p&gt;Bom como agora estou trabalhando com recursos pr&#243;prios (tradu&#231;&#227;o meu notebook) e como antes disso eu fazia todos os testes poss&#237;veis e imagin&#225;veis nele, j&#225; viram que tudo que encontrava pela frente eu saia instalando.&lt;/p&gt;
&lt;p&gt;Por causa dessa curiosidade, quando comecei a utiliza-lo durante todo o dia, comecei a me incomodar com uma lentid&#227;o exagerada, foi quando dei uma olhada mais cuidadosa e vi que tinha muitas coisas que n&#227;o usava rodando sem necessidade.&lt;/p&gt;
&lt;p&gt;Resolvi fazer um limpa nos servi&#231;os da inicializa&#231;&#227;o com a ajuda de dois programinhas o &lt;b&gt;sysv-rc-conf&lt;/b&gt; e o &lt;b&gt;boot-up manager (vulgo bum)&lt;/b&gt;, ambos fazem o mesmo servi&#231;o, mostram os servi&#231;os inicializados junto com o sistema e nos deixam desabilita-los (&#233; bom conhecer um pouquinho do SO para saber o que pode ou n&#227;o ser desabilitado), a diferen&#231;a entre eles &#233; que o &lt;b&gt;sysv-rc-conf&lt;/b&gt; &#233; em modo texto enquanto o &lt;b&gt;boot-up manager&lt;/b&gt; &#233; gr&#225;fico&lt;/p&gt;
&lt;p&gt;Para instala-los segue os passos abaixo(muito dif&#237;cil por sinal):&lt;/p&gt;

&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;sudo apt-get install sysv-rc-conf
&lt;span class="lnr"&gt;2 &lt;/span&gt;sudo apt-get install bum
&lt;/pre&gt;

&lt;p&gt;Para executar&lt;/p&gt;

&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;sudo bum
&lt;span class="lnr"&gt;2 &lt;/span&gt;ou
&lt;span class="lnr"&gt;3 &lt;/span&gt;sudo sysv-rc-conf
&lt;/pre&gt;

&lt;p&gt; Eu particularmente prefiro o &lt;b&gt;sysv-rc-conf&lt;/b&gt;, acho mais completo, mas o &lt;b&gt;bum&lt;/b&gt; mostra uma pequena descri&#231;&#227;o dos servi&#231;os que ajuda quem n&#227;o conhece bem os macetes do SO.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Tue, 05 Aug 2008 12:45:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/54</link>
      <guid>http://www.bluetux.com.br/blog/show/54</guid>
    </item>
    <item>
      <title>Rapidinha Ruby - m&#233;todo gsub</title>
      <description>&lt;p&gt;Essa &#233; uma rapidinha sobre o m&#233;todo &lt;b&gt;gsub&lt;/b&gt; do ruby, este m&#233;todo faz substitui&#231;&#227;o de texto e pode usar express&#245;es regulares pra isso, exemplos:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;irb(main):001:0&amp;gt;  &amp;quot;Alfredo&amp;quot;.gsub(&amp;quot;Al&amp;quot;,&amp;quot;Godo&amp;quot;)
&lt;span class="lnr"&gt;2 &lt;/span&gt;=&amp;gt; &amp;quot;Godofredo&amp;quot;
&lt;span class="lnr"&gt;3 &lt;/span&gt;irb(main):002:0&amp;gt; &amp;quot;n1,n2,n3&amp;quot;.gsub(/[0-9]/,&amp;quot;_&amp;quot;)
&lt;span class="lnr"&gt;4 &lt;/span&gt;=&amp;gt; &amp;quot;n_,n_,n_&amp;quot;
&lt;span class="lnr"&gt;5 &lt;/span&gt;irb(main):003:0&amp;gt; &amp;quot;1,2,30,100,a,Aa&amp;quot;.gsub(/([0-9]+|[a-zA-Z]+)/){|c| &amp;quot;'&amp;quot;+c+&amp;quot;'&amp;quot;}
&lt;span class="lnr"&gt;6 &lt;/span&gt;=&amp;gt; &amp;quot;'1','2','30','100','a','Aa'&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Tue, 08 Jul 2008 13:17:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/53</link>
      <guid>http://www.bluetux.com.br/blog/show/53</guid>
    </item>
    <item>
      <title>De volta a S&#227;o Jos&#233; do Rio Preto</title>
      <description>&lt;p&gt;Bom, volto a postar no meu blog depois de um longo per&#237;odo para avisar que estou de volta a S&#227;o Jos&#233; do Rio Preto.&lt;/p&gt;
&lt;p&gt;Estou feliz por estar em casa novamente e tamb&#233;m por voltar a estar conectado, isso fazia muita falta.&lt;/p&gt;
&lt;p&gt;Posso dizer que vou sentir muita falta do pessoal da Wheaton e dos bons amigos que fiz em S&#227;o Bernardo do Campo os quais n&#227;o pretendo perder contato.&lt;/p&gt;
&lt;p&gt;Foi uma experi&#234;ncia muito v&#225;lida que repetiria sem pestanejar, conheci S&#227;o Paulo, me apaixonei pela loucura de l&#225; e pretendo voltar mais freq&#252;entemente a partir de agora, conheci gente de muitos lugares o que foi muito bom para avaliar a realidade do nosso mercado e poder analisar melhor o que vale ou n&#227;o a pena.&lt;/p&gt;
&lt;p&gt;Sobre o motivo da minha volta por enquanto s&#243; vou dizer que &#233; uma &#243;tima oportunidade profissional que qualquer um n&#227;o poderia deixar passar e que estou a todo o g&#225;s, como j&#225; n&#227;o ficava a MUITO tempo para come&#231;ar, as pessoas mais pr&#243;ximas de mim sabem do que estou falando, mas vou aguardar um pouco para colocar no ar.&lt;/p&gt;
&lt;p&gt;Aos amigos que deixei em S&#227;o Bernardo do Campo aquele abra&#231;o e ao pessoal daqui de Rio Preto aviso que estou na &#225;rea :-D.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Sun, 22 Jun 2008 10:06:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/52</link>
      <guid>http://www.bluetux.com.br/blog/show/52</guid>
    </item>
    <item>
      <title>Instalando vers&#245;es antigas do Rails</title>
      <description>&lt;p&gt;Estava precisando usar uma aplica&#231;&#227;o aqui no meu micro com uma vers&#227;o antiga do rails, ent&#227;o lembrei que o &lt;a href="http://www.monteiro.eti.br/2007/12/15/dica-rapida-instalando-versao-antiga-do-rails/"&gt;J&#250;lio Monteiro&lt;/a&gt; um dia tinha explicado como instalar estas vers&#245;es, abaixo transcrevo a explica&#231;&#227;o dele pra d&#225; pr&#243;xima ficar mais f&#225;cil de achar.&lt;/p&gt;
&lt;p&gt;Como foi explicado o RubyGems (comando gem), diferentemente do APT do Linux, permite que voc&#234; possua v&#225;rias vers&#245;es do mesmo &#8220;aplicativo&#8221; instalado.&lt;/p&gt;
&lt;p&gt;Ent&#227;o &#233; s&#243; usar o seguinte comando para a vers&#227;o 1.2.6 por exemplo:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;sudo gem install rails --version 1.2.6&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Agora para sua aplica&#231;&#227;o usar a vers&#227;o que deseja &#233; s&#243; definir no arquivo &lt;b&gt;config/environment.rb&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt; 7 &lt;/span&gt;&lt;span class="Comment"&gt;# Specifies gem version of Rails to use when vendor/rails is not present&lt;/span&gt;
&lt;span class="lnr"&gt; 8 &lt;/span&gt;&lt;span class="Type"&gt;RAILS_GEM_VERSION&lt;/span&gt; = &lt;span class="String"&gt;'&lt;/span&gt;&lt;span class="String"&gt;1.2.5&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt; &lt;span class="Statement"&gt;unless&lt;/span&gt; &lt;span class="Statement"&gt;defined?&lt;/span&gt; &lt;span class="Type"&gt;RAILS_GEM_VERSION&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Voce pode instalar varias vers&#245;es do rails para utilizar, bom &#233; isso ai valeu J&#250;lio.&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;

</description>
      <pubDate>Sat, 22 Mar 2008 09:23:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/51</link>
      <guid>http://www.bluetux.com.br/blog/show/51</guid>
    </item>
    <item>
      <title>Mudan&#231;a para S&#227;o Bernardo do Campo</title>
      <description>&lt;p&gt;Bom vou tentar resumir a hist&amp;oacute;ria, desde 28 de Janeiro
estou trabalhando em uma empresa de S&amp;atilde;o Bernardo do Campo,
conseq&amp;uuml;entemente estou morando l&amp;aacute;, pelo menos durante a
semana, no fim de semana eu volto pra S&amp;atilde;o Jos&amp;eacute; do Rio
Preto.&lt;/p&gt;
&lt;p&gt;Bom a primeira semana fiquei em S&amp;atilde;o Paulo no Jabaquara,
gra&amp;ccedil;as a hospitalidade de uma amiga de familia (Sra. Maria
Augusta) que me acolheu na sua casa, s&amp;oacute; tenho que agradecer
a generosidade e paci&amp;ecirc;ncia, com certeza foi uma ajuda
incalcul&amp;aacute;vel.&lt;/p&gt;
&lt;p&gt;No novo emprego, no come&amp;ccedil;o nada de especial, fiquei a
primeira semana de molho, esperando os procedimentos b&amp;aacute;sicos
de toda a mudan&amp;ccedil;a de emprego, cria&amp;ccedil;&amp;atilde;o de
usu&amp;aacute;rio, apresenta&amp;ccedil;&amp;atilde;o dos objetivos da
empresa, pol&amp;iacute;ticas de desenvolvimento, lendo os manuais dos
softwares que eles utilizavam, etc.&lt;/p&gt;
&lt;p&gt;Quando fiz a entrevista, acho que por esquecimento, n&amp;atilde;o
perguntei o Sistema Operacional que utilizavam na empresa, mas
quando cheguei fiquei muito contente por ser o Linux, pena que
&amp;eacute; o Mandriva e n&amp;atilde;o meu querido Ubuntu, mas nada
contra( nunca tinha usado o Mandriva ), mas foi um alivio
n&amp;atilde;o ter que usar Windows :-D.&lt;/p&gt;
&lt;p&gt;A IDE que utilizam &amp;eacute; o Eclipse( saudades do meu vim ) o
que de certa forma &amp;eacute; bom, afinal, pra quem quer investir em
aprender Java n&amp;atilde;o tinha como fugir dele ou do NeatBeans,
eles utilizam PHP Orientado a Objeto e tem uma metodologia de
desenvolvimento que usando conceitos do MVC ( achei bem legal isso
), al&amp;eacute;m de uma boa organiza&amp;ccedil;&amp;atilde;o para as
solicita&amp;ccedil;&amp;otilde;es de desenvolvimento, tudo passa por uma
an&amp;aacute;lise de necessidade antes de chegar na nossa
m&amp;atilde;o.&lt;/p&gt;
&lt;p&gt;S&amp;oacute; tomei um susto quando me disseram que n&amp;oacute;s
programadores( Web diga-se de passagem ) estamos &lt;b&gt;ISOLADOS&lt;/b&gt; do
mundo, sem internet ( nem na hora do almo&amp;ccedil;o ) e sem a
possibilidade de enviar e-mails para o mundo exterior, bom nem vou
comentar sobre Jabber, MSN ou Gtalk, sem falar em
proibi&amp;ccedil;&amp;atilde;o de pen-drives e qualquer tipo de
m&amp;iacute;dia, achei um pouco radical, principalmente a internet,
limitar at&amp;eacute; entendo agora bloquear totalmente para
desenvolvedores web, acho exagero, sem falar que at&amp;eacute; limita
e atrasa o desenvolvimento em certos aspectos, mas eu me adapto(
espero ).&lt;/p&gt;
&lt;p&gt;Mas o meu susto maior foi quando &lt;b&gt;trataram meu Notebook como
uma "bomba"&lt;/b&gt;, deixa eu explicar, estou vindo "todos" os fins de
semana para S&amp;atilde;o Jos&amp;eacute; do Rio Preto, e como todo bom
geek ( leia nerd ), n&amp;atilde;o vivo sem meu notebook e sem poder
usar ele a noite( nem falei que estou sem TV na pens&amp;atilde;o que
estou ficando ), ent&amp;atilde;o tenho que trazer e levado toda a vez
que viajo, como chego na rodovi&amp;aacute;ria e j&amp;aacute; vou direto
para o trabalho, eu sou obrigado a leva-lo e n&amp;atilde;o tem outro
jeito "ponto final". Quando me disseram que era proibido leva-lo,
logo que cheguei j&amp;aacute; avisei o seguran&amp;ccedil;a o que estava
trazendo ( n&amp;atilde;o quero problemas ), nisso juntaram quatro
pessoal com cara de assustados conversando entre si, e me
perguntando assustados: "Voc&amp;ecirc; tem um notebook ai???",
resumindo, tenho que ter uma autoriza&amp;ccedil;&amp;atilde;o para
adentrar o recinto ( nossa que bonito! ) com ele, mas foi bem
engra&amp;ccedil;ado.&lt;/p&gt;
&lt;p&gt;Agora, j&amp;aacute; estou fazendo algumas coisa, me adaptando com a
forma como trabalham, mas tem horas que penso que se pudesse dar
uma "googlada" resolvia algumas coisas brincando, mas a vida
continua, est&amp;aacute; faltando a internet em casa agora, estou
pensando em um plano 3G da claro, que parece muito bom, 500Mbps,
Ilimitado e m&amp;oacute;vel por 69,90/m&amp;ecirc;s, bem atrativo por
sinal.&lt;/p&gt;
&lt;p&gt;Meu objetivo de trabalhar em S&amp;atilde;o Bernardo/S&amp;atilde;o
Paulo &amp;eacute; como todo mundo, um amadurecimento profissional,
melhores oportunidades salariais, mais oportunidades de
aperfei&amp;ccedil;oamento com cursos melhores do que os do interior,
al&amp;eacute;m de estar onde acontecem os eventos que todos os eventos
que todo o geek quer participar e que eu n&amp;atilde;o podia porque
acabava ficando sempre muito caro, pena que ainda n&amp;atilde;o vai
dar pra participar da CampusParty, mas provavelmente na
pr&amp;oacute;xima eu vou.&lt;/p&gt;
&lt;p&gt;Ainda n&amp;atilde;o fiquei nenhum fim de semana por l&amp;aacute;, mas
quando ficar vou dar umas voltas pra conhecer S&amp;atilde;o Paulo e
talvez tirar algumas fotos pra colocar por aqui( bem caipira mesmo
), alias est&amp;aacute; muito engra&amp;ccedil;ado eu andando com o guia 4
rodas na m&amp;atilde;o pra n&amp;atilde;o me perder hehehe.&lt;/p&gt;
</description>
      <pubDate>Sat, 16 Feb 2008 10:22:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/50</link>
      <guid>http://www.bluetux.com.br/blog/show/50</guid>
    </item>
    <item>
      <title>Lan&#231;ado o Rails 2.0</title>
      <description>&lt;p&gt;Ok, ok, eu sei todo mundo j&#225; falou que o Rails 2.0 foi lan&#231;ado, mas como este blog &#233; feito usando Ruby on Rails, como eu estou cada vez mais apaixonado pela linguagem e como acho que quanto mais gente falando e usando melhor, eu achei que deveria colocar este post mesmo sendo repetido...&lt;/p&gt;
&lt;p&gt;Todo mundo estava esperando e existem v&#225;rias novidades, eu particularmente gostei muitos das &lt;b&gt;sexy migrations&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Para saber todas as novidades acesse o link abaixo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblog.rubyonrails.com/2007/12/7/rails-2-0-it-s-done"&gt;Rails 2.0 it's done&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Mon, 10 Dec 2007 15:56:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/49</link>
      <guid>http://www.bluetux.com.br/blog/show/49</guid>
    </item>
    <item>
      <title>Colorindo c&#243;digos no blog</title>
      <description>&lt;p&gt;J&amp;aacute; faz tempo que estava querendo colocar meus c&amp;oacute;digos coloridos no blog, mas talvez por um pouco de pregui&amp;ccedil;a de procurar, n&amp;atilde;o tinha feito ainda.&lt;/p&gt;

&lt;p&gt;Foi a uns dois dias, antes de fazer o &lt;a href="http://www.bluetux.com.br/blog/show/47" title="Upload e thumbnail de imagem com PHP"&gt;post anterior&lt;/a&gt;, que resolvi tomar vergonha e colocar isso de uma vez por todas no blog.&lt;/p&gt;

&lt;p&gt;Bom naquele momento comecei a procurar a solu&amp;ccedil;&amp;atilde;o e acabei achando v&amp;aacute;rias, dentre elas &lt;a href="http://code.google.com/p/syntaxhighlighter/wiki/Overview" title="syntaxhighlighter"&gt;SyntaxHighlighter&lt;/a&gt;, &lt;a href="http://qbnz.com/highlighter/" title="GeSHi"&gt;GeSHi&lt;/a&gt; e &lt;a href="http://shjs.sourceforge.net" tilte="SHFS"&gt;SHJS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Basicamente todas funcionam da seguinte maneira, voc&amp;ecirc; coloca o seu c&amp;oacute;digo em uma tag &lt;b&gt;pre&lt;/b&gt; ou &lt;b&gt;textarea&lt;/b&gt;, inclui o &lt;b&gt;css&lt;/b&gt; e o &lt;b&gt;javascript&lt;/b&gt; no cabe&amp;ccedil;alho da sua p&amp;aacute;gina, e eles se encarregam de converter seu c&amp;oacute;digo na apar&amp;ecirc;ncia devida.&lt;/p&gt;

&lt;p&gt;Todos funcionam, decidi usar o &lt;a href="http://code.google.com/p/syntaxhighlighter/wiki/Overview" title="syntaxhighlighter"&gt;SyntaxHighlighter&lt;/a&gt;, mas como sou um cara chato, eu estava achando demais todo aquele trabalho, um monte de javascripts carregando minha p&amp;aacute;gina, um css enorme s&amp;oacute; para aquilo e o c&amp;oacute;digo n&amp;atilde;o estava t&amp;atilde;o melhor do que antes, eu estava definitivamente &lt;i&gt;"matando formiga com bazuca"&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;Comentando isso com o &lt;a href="http://www.eustaquiorangel.com/blog/show/394"&gt;TaQ&lt;/a&gt;(Ele, sempre ele!), ele me disse que teve o mesmo problema e me mostrou a solu&amp;ccedil;&amp;atilde;o com nosso querido &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt;, nem imaginava do que o &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; era capaz nesse assunto.&lt;/p&gt;

&lt;p&gt;O &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; converte qualquer texto(Entenda, c&amp;oacute;digo de qualquer linguagem) em HTML e de quebra com CSS separado, usando o tema corrente no editor, sem plugin algum &amp;eacute; nativo do editor(pelo menos na vers&amp;atilde;o 7 pra cima).&lt;/p&gt;

&lt;p&gt;Agora me pergunte: &lt;b&gt;&lt;i&gt;"Como eu fa&amp;ccedil;o essa maravilha?"&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Simples, seus problemas acabaram!&lt;/i&gt;&lt;/b&gt; (sempre quis dizer isso!)&lt;/p&gt;

&lt;p&gt;Selecione o tema que deseja, configure para ele gerar o css com este comando &lt;b&gt;:let html_use_css=1&lt;/b&gt;, e ap&amp;oacute;s isso &amp;eacute; s&amp;oacute; usar o &lt;a href="http://vimdoc.sourceforge.net/htmldoc/syntax.html#:TOhtml"&gt;:TOhtml&lt;/a&gt;, pronto ele cria um outro arquivo j&amp;aacute; em formato &lt;b&gt;HTML&lt;/b&gt; protinho pra ser colocado onde voc&amp;ecirc; desejar.&lt;/p&gt;

&lt;p&gt;Observa&amp;ccedil;&amp;atilde;o, ele praticamente gera um printscreen do seu vim, portanto se estiver usando n&amp;uacute;meros de linhas e outras coisas no seu tema, ele vai colocar tudo isso no &lt;b&gt;HTML&lt;/b&gt;(eu achei &amp;oacute;timo).&lt;/p&gt;

&lt;p&gt;Segue um exemplo de c&amp;oacute;digo pra voc&amp;ecirc;s verem como fica:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt; 1 &lt;/span&gt;&lt;span class="PreProc"&gt;class &lt;/span&gt;&lt;span class="Type"&gt;Phone&lt;/span&gt;
&lt;span class="lnr"&gt; 2 &lt;/span&gt;
&lt;span class="lnr"&gt; 3 &lt;/span&gt;  &lt;span class="Statement"&gt;attr_reader&lt;/span&gt; &lt;span class="Identifier"&gt;:country_code&lt;/span&gt;, &lt;span class="Identifier"&gt;:area_code&lt;/span&gt;, &lt;span class="Identifier"&gt;:number&lt;/span&gt;
&lt;span class="lnr"&gt; 4 &lt;/span&gt;
&lt;span class="lnr"&gt; 5 &lt;/span&gt;  &lt;span class="PreProc"&gt;def &lt;/span&gt;&lt;span class="Identifier"&gt;initialize&lt;/span&gt;(country_code, area_code, number)
&lt;span class="lnr"&gt; 6 &lt;/span&gt;    &lt;span class="Identifier"&gt;@country_code&lt;/span&gt;, &lt;span class="Identifier"&gt;@area_code&lt;/span&gt;, &lt;span class="Identifier"&gt;@number&lt;/span&gt; =
&lt;span class="lnr"&gt; 7 &lt;/span&gt;       country_code, area_code, number
&lt;span class="lnr"&gt; 8 &lt;/span&gt;  &lt;span class="PreProc"&gt;end&lt;/span&gt;
&lt;span class="lnr"&gt; 9 &lt;/span&gt;
&lt;span class="lnr"&gt;10 &lt;/span&gt;  &lt;span class="PreProc"&gt;def &lt;/span&gt;&lt;span class="Identifier"&gt;==&lt;/span&gt;(value)
&lt;span class="lnr"&gt;11 &lt;/span&gt;    &lt;span class="Identifier"&gt;@country_code&lt;/span&gt; == value.country_code &amp;amp;&amp;amp;
&lt;span class="lnr"&gt;12 &lt;/span&gt;       &lt;span class="Identifier"&gt;@area_code&lt;/span&gt; == value.area_code &amp;amp;&amp;amp;
&lt;span class="lnr"&gt;13 &lt;/span&gt;       &lt;span class="Identifier"&gt;@number&lt;/span&gt; == value.number
&lt;span class="lnr"&gt;14 &lt;/span&gt;  &lt;span class="PreProc"&gt;end&lt;/span&gt;
&lt;span class="lnr"&gt;15 &lt;/span&gt;
&lt;span class="lnr"&gt;16 &lt;/span&gt;  &lt;span class="PreProc"&gt;def &lt;/span&gt;&lt;span class="Identifier"&gt;to_s&lt;/span&gt;
&lt;span class="lnr"&gt;17 &lt;/span&gt;    &lt;span class="Special"&gt;"&lt;/span&gt;&lt;span class="Constant"&gt;+&lt;/span&gt;&lt;span class="Special"&gt;#{@country_code}&lt;/span&gt;&lt;span class="Constant"&gt; &lt;/span&gt;&lt;span class="Special"&gt;#{@area_code}&lt;/span&gt;&lt;span class="Constant"&gt; &lt;/span&gt;&lt;span class="Special"&gt;#{@number}&lt;/span&gt;&lt;span class="Special"&gt;"&lt;/span&gt;
&lt;span class="lnr"&gt;18 &lt;/span&gt;  &lt;span class="PreProc"&gt;end&lt;/span&gt;
&lt;span class="lnr"&gt;19 &lt;/span&gt;&lt;span class="PreProc"&gt;end&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Pronto, agora al&amp;eacute;m de ver o c&amp;oacute;digo mais leg&amp;iacute;vel, voc&amp;ecirc;s ainda ve&amp;ecirc;m exatamente da maneira que eu uso meu &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; no dia a dia, alias, pra quem gostou, meu tema &amp;eacute; o &lt;a href="http://www.vim.org/scripts/script.php?script_id=111"&gt;torte&lt;/a&gt;, boa divers&amp;atilde;o.&lt;/p&gt;
&lt;p&gt;Segue o link do post do Taq: &lt;a href="http://www.eustaquiorangel.com/blog/show/394"&gt;www.eustaquiorangel.com/blog/show/394&lt;/a&gt;

&lt;p&gt;Abra&amp;ccedil;o, T+&lt;br /&gt;
Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Fri, 30 Nov 2007 11:16:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/48</link>
      <guid>http://www.bluetux.com.br/blog/show/48</guid>
    </item>
    <item>
      <title>Upload e thumbnail de imagem com PHP</title>
      <description>&lt;p&gt;Segue um script para fazer um Upload de Imagem por formul&amp;aacute;rio, redimencionamento e cria&amp;ccedil;&amp;atilde;o de thumbnail com PHP.&lt;/p&gt;
&lt;p&gt;Primeiro vamos criar o formul&amp;aacute;rio:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;&lt;span class="Identifier"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Statement"&gt;form&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;action&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Special"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="PreProc"&gt;print&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;_SERVER&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;PHP_SELF&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;; &lt;span class="Special"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;method&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;
&lt;span class="lnr"&gt;2 &lt;/span&gt;&lt;span class="Identifier"&gt;      &lt;/span&gt;&lt;span class="Type"&gt;enctype&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;multipart/form-data&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &amp;gt;&lt;/span&gt;
&lt;span class="lnr"&gt;3 &lt;/span&gt;
&lt;span class="lnr"&gt;4 &lt;/span&gt;  &lt;span class="Identifier"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Statement"&gt;label&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;for&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;FILE&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt;&amp;gt;&lt;/span&gt;ARQUIVO&lt;span class="Identifier"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="Statement"&gt;label&lt;/span&gt;&lt;span class="Identifier"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="lnr"&gt;5 &lt;/span&gt;  &lt;span class="Identifier"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Statement"&gt;input&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;type&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;file&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;name&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;FILE&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;id&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;FILE&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; /&amp;gt;&lt;/span&gt;
&lt;span class="lnr"&gt;6 &lt;/span&gt;  &lt;span class="Identifier"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Statement"&gt;br&lt;/span&gt;&lt;span class="Identifier"&gt; /&amp;gt;&lt;/span&gt;
&lt;span class="lnr"&gt;7 &lt;/span&gt;  &lt;span class="Identifier"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Statement"&gt;input&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;type&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;submit&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt; &lt;/span&gt;&lt;span class="Type"&gt;value&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;enviar&amp;quot;&lt;/span&gt;&lt;span class="Identifier"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="lnr"&gt;8 &lt;/span&gt;&lt;span class="Identifier"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="Statement"&gt;form&lt;/span&gt;&lt;span class="Identifier"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;


&lt;p&gt;A propriedade &lt;b&gt;enctype="multipart/form-data"&lt;/b&gt; na tag &lt;b&gt;form&lt;/b&gt; respons&amp;aacute;vel por falar para o formul&amp;aacute;rio que ele esta enviando um arquivo bin&amp;aacute;rio, sem isso n&amp;atilde;o &amp;eacute; poss&amp;iacute;vel enviar nenhum tipo de arquivo.&lt;/p&gt;
&lt;p&gt;E a tag &lt;b&gt;&amp;lt;input type="file" name="FILE" id="FILE" /&amp;gt;&lt;/b&gt; &#233; respons&amp;aacute;vel por voc&amp;ecirc; poder selecionar o arquivo que deseja, nada de complicado.&lt;/p&gt;
&lt;p&gt;Segundo, agora que j&amp;aacute; temos o arquivo transmitido, vamos recebe-lo com o PHP, note que o &lt;b&gt;action&lt;/b&gt; do formul&amp;aacute;rio &amp;eacute; ele mesmo(&lt;b&gt;$_SERVER["PHP_SELF"]&lt;/b&gt;), portanto continuamos trabalhando no mesmo arquivo PHP:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt; 1 &lt;/span&gt;&lt;span class="Special"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="lnr"&gt; 2 &lt;/span&gt;&lt;span class="Comment"&gt;# Jogo o arquivo em uma variavel  &lt;/span&gt;
&lt;span class="lnr"&gt; 3 &lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;_FILES&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;FILE&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;;
&lt;span class="lnr"&gt; 4 &lt;/span&gt;
&lt;span class="lnr"&gt; 5 &lt;/span&gt;&lt;span class="Comment"&gt;# verifico o tamanho do arquivo para evitar ataques  &lt;/span&gt;
&lt;span class="lnr"&gt; 6 &lt;/span&gt;&lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt; &lt;span class="Statement"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;size&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;&amp;lt;&lt;/span&gt; &lt;span class="Constant"&gt;500000&lt;/span&gt;&lt;span class="Special"&gt;){&lt;/span&gt;
&lt;span class="lnr"&gt; 7 &lt;/span&gt;  &lt;span class="Comment"&gt;# verifico se houve algum erro   &lt;/span&gt;
&lt;span class="lnr"&gt; 8 &lt;/span&gt;  &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;error&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; &lt;span class="Constant"&gt;0&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt; &lt;span class="Special"&gt;{&lt;/span&gt;
&lt;span class="lnr"&gt; 9 &lt;/span&gt;    &lt;span class="PreProc"&gt;echo&lt;/span&gt; &amp;quot;&lt;span class="Constant"&gt;Erro: &lt;/span&gt;&amp;quot; &lt;span class="Statement"&gt;.&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;error&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;.&lt;/span&gt; &amp;quot;&lt;span class="Constant"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&amp;quot;;
&lt;span class="lnr"&gt;10 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt; &lt;span class="Statement"&gt;else&lt;/span&gt; &lt;span class="Special"&gt;{&lt;/span&gt;
&lt;span class="lnr"&gt;11 &lt;/span&gt;    &lt;span class="Comment"&gt;# se n&#227;o tiver erros chamo a funcao para redimencionar  &lt;/span&gt;
&lt;span class="lnr"&gt;12 &lt;/span&gt;    &lt;span class="Comment"&gt;# e armazenar a imagem transmitida  &lt;/span&gt;
&lt;span class="lnr"&gt;13 &lt;/span&gt;
&lt;span class="lnr"&gt;14 &lt;/span&gt;    &lt;span class="Comment"&gt;# esta chamada cria um thumb de 100px de largura  &lt;/span&gt;
&lt;span class="lnr"&gt;15 &lt;/span&gt;    create_thumb&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;tmp_name&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;type&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;,
&lt;span class="lnr"&gt;16 &lt;/span&gt;                 &amp;quot;&lt;span class="Constant"&gt;thumbs/&lt;/span&gt;&amp;quot; &lt;span class="Statement"&gt;.&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;name&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;, &lt;span class="Constant"&gt;100&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;17 &lt;/span&gt;
&lt;span class="lnr"&gt;18 &lt;/span&gt;    &lt;span class="Comment"&gt;# esta chamada cria uma copia com o tamanho   &lt;/span&gt;
&lt;span class="lnr"&gt;19 &lt;/span&gt;    &lt;span class="Comment"&gt;# de 450px de largura  &lt;/span&gt;
&lt;span class="lnr"&gt;20 &lt;/span&gt;    create_thumb&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;tmp_name&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;type&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;,
&lt;span class="lnr"&gt;21 &lt;/span&gt;                 &amp;quot;&lt;span class="Constant"&gt;images/&lt;/span&gt;&amp;quot; &lt;span class="Statement"&gt;.&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;name&lt;/span&gt;&amp;quot;&lt;span class="Special"&gt;]&lt;/span&gt;, &lt;span class="Constant"&gt;450&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;22 &lt;/span&gt;
&lt;span class="lnr"&gt;23 &lt;/span&gt;  &lt;span class="Identifier"&gt;print_r&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;file&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;24 &lt;/span&gt;    &lt;span class="PreProc"&gt;print&lt;/span&gt; &amp;quot;&lt;span class="Constant"&gt;Upload success!&lt;/span&gt;&amp;quot;;
&lt;span class="lnr"&gt;25 &lt;/span&gt;    &lt;span class="Statement"&gt;exit&lt;/span&gt;;
&lt;span class="lnr"&gt;26 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt;
&lt;span class="lnr"&gt;27 &lt;/span&gt;&lt;span class="Special"&gt;}&lt;/span&gt;
&lt;span class="lnr"&gt;28 &lt;/span&gt;&lt;span class="Special"&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Note que utilizo a vari&amp;aacute;vel &lt;b&gt;$_FILES[]&lt;/b&gt; do PHP para receber o arquivo, esta vari&amp;aacute;vel &amp;eacute; um array que descreve algumas propriedades do arquivo enviado, s&amp;atilde;o elas:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt;1 &lt;/span&gt;&lt;span class="Type"&gt;Array&lt;/span&gt; &lt;span class="Special"&gt;(&lt;/span&gt; &lt;span class="Special"&gt;[&lt;/span&gt;name&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt;&lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; imagen&lt;span class="Statement"&gt;.&lt;/span&gt;png
&lt;span class="lnr"&gt;2 &lt;/span&gt;        &lt;span class="Special"&gt;[&lt;/span&gt;type&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt;&lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; image&lt;span class="Statement"&gt;/&lt;/span&gt;png
&lt;span class="lnr"&gt;3 &lt;/span&gt;        &lt;span class="Special"&gt;[&lt;/span&gt;tmp_name&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt;&lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; &lt;span class="Statement"&gt;/&lt;/span&gt;tmp&lt;span class="Statement"&gt;/&lt;/span&gt;phphQovVs
&lt;span class="lnr"&gt;4 &lt;/span&gt;        &lt;span class="Special"&gt;[&lt;/span&gt;error&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt;&lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; &lt;span class="Constant"&gt;0&lt;/span&gt;
&lt;span class="lnr"&gt;5 &lt;/span&gt;        &lt;span class="Special"&gt;[&lt;/span&gt;size&lt;span class="Special"&gt;]&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt;&lt;span class="Statement"&gt;&amp;gt;&lt;/span&gt; &lt;span class="Constant"&gt;322348&lt;/span&gt; &lt;span class="Special"&gt;)&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Usei algumas dessas propriedade para passar a minha fun&amp;ccedil;&amp;atilde;o de tratamento &lt;b&gt;create_thumb&lt;/b&gt;, que vamos ver como funciona agora:&lt;/p&gt;
&lt;pre&gt;
&lt;span class="lnr"&gt; 1 &lt;/span&gt;&lt;span class="PreProc"&gt;function&lt;/span&gt; create_thumb&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;name&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;filename&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_w&lt;/span&gt;&lt;span class="Special"&gt;){&lt;/span&gt;
&lt;span class="lnr"&gt; 2 &lt;/span&gt;
&lt;span class="lnr"&gt; 3 &lt;/span&gt;  &lt;span class="Comment"&gt;# criando imagem temporaria&lt;/span&gt;
&lt;span class="lnr"&gt; 4 &lt;/span&gt;  &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/png$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;))&lt;/span&gt; &lt;span class="Special"&gt;{&lt;/span&gt;
&lt;span class="lnr"&gt; 5 &lt;/span&gt;    &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagecreatefrompng&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;name&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt; 6 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt; &lt;span class="Statement"&gt;else&lt;/span&gt; &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/jpe?g$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;)){&lt;/span&gt;
&lt;span class="lnr"&gt; 7 &lt;/span&gt;    &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagecreatefromjpeg&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;name&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt; 8 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt;&lt;span class="Statement"&gt;else&lt;/span&gt; &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/gif$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;)){&lt;/span&gt;
&lt;span class="lnr"&gt; 9 &lt;/span&gt;    &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagecreatefromgif&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;name&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;10 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;&lt;span class="Special"&gt;{&lt;/span&gt;
&lt;span class="lnr"&gt;11 &lt;/span&gt;    &lt;span class="Statement"&gt;return&lt;/span&gt; &lt;span class="Constant"&gt;false&lt;/span&gt;;
&lt;span class="lnr"&gt;12 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt;
&lt;span class="lnr"&gt;13 &lt;/span&gt;
&lt;span class="lnr"&gt;14 &lt;/span&gt;  &lt;span class="Comment"&gt;# verificando dimensoes da imagem&lt;/span&gt;
&lt;span class="lnr"&gt;15 &lt;/span&gt;  &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_x&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagesx&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;16 &lt;/span&gt;  &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_y&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagesy&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;17 &lt;/span&gt;
&lt;span class="lnr"&gt;18 &lt;/span&gt;  &lt;span class="Comment"&gt;# ajustando dimensoes do thumbnail&lt;/span&gt;
&lt;span class="lnr"&gt;19 &lt;/span&gt;  &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_w&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_w&lt;/span&gt;;
&lt;span class="lnr"&gt;20 &lt;/span&gt;  &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_h&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;floor&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_w&lt;/span&gt; &lt;span class="Statement"&gt;*&lt;/span&gt; &lt;span class="Special"&gt;(&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_y&lt;/span&gt; &lt;span class="Statement"&gt;/&lt;/span&gt; &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_x&lt;/span&gt; &lt;span class="Special"&gt;)&lt;/span&gt; &lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;21 &lt;/span&gt;
&lt;span class="lnr"&gt;22 &lt;/span&gt;  &lt;span class="Comment"&gt;#criando nova imagem temporaria com as dimensoes novas&lt;/span&gt;
&lt;span class="lnr"&gt;23 &lt;/span&gt;  &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt; &lt;span class="Statement"&gt;=&lt;/span&gt; &lt;span class="Identifier"&gt;imagecreatetruecolor&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_w&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_h&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;24 &lt;/span&gt;
&lt;span class="lnr"&gt;25 &lt;/span&gt;  &lt;span class="Comment"&gt;#copiando e redimencionamdo a imagem para o thumbnail &lt;/span&gt;
&lt;span class="lnr"&gt;26 &lt;/span&gt;  &lt;span class="Identifier"&gt;imagecopyresampled&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt;, &lt;span class="Constant"&gt;0&lt;/span&gt;,&lt;span class="Constant"&gt;0&lt;/span&gt;,&lt;span class="Constant"&gt;0&lt;/span&gt;,&lt;span class="Constant"&gt;0&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_w&lt;/span&gt;,
&lt;span class="lnr"&gt;27 &lt;/span&gt;                     &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;thumb_h&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_x&lt;/span&gt;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;old_y&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;28 &lt;/span&gt;
&lt;span class="lnr"&gt;29 &lt;/span&gt;  &lt;span class="Comment"&gt;# salvando imagem para o arquivo&lt;/span&gt;
&lt;span class="lnr"&gt;30 &lt;/span&gt;  &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/png$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;)){&lt;/span&gt;
&lt;span class="lnr"&gt;31 &lt;/span&gt;    &lt;span class="Identifier"&gt;imagepng&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;filename&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;32 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt; &lt;span class="Statement"&gt;else&lt;/span&gt; &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/jpe?g$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;)){&lt;/span&gt;
&lt;span class="lnr"&gt;33 &lt;/span&gt;    &lt;span class="Identifier"&gt;imagejpeg&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;filename&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;34 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt; &lt;span class="Statement"&gt;else&lt;/span&gt; &lt;span class="Statement"&gt;if&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;preg_match&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="Constant"&gt;/^image\/gif$/&lt;/span&gt;&amp;quot;, &lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;mime_type&lt;/span&gt;&lt;span class="Special"&gt;)){&lt;/span&gt;
&lt;span class="lnr"&gt;35 &lt;/span&gt;    &lt;span class="Identifier"&gt;imagegif&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt;,&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;filename&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;36 &lt;/span&gt;  &lt;span class="Special"&gt;}&lt;/span&gt;
&lt;span class="lnr"&gt;37 &lt;/span&gt;
&lt;span class="lnr"&gt;38 &lt;/span&gt;  &lt;span class="Comment"&gt;# destruindo imagens temporarias para liberar memoria&lt;/span&gt;
&lt;span class="lnr"&gt;39 &lt;/span&gt;  &lt;span class="Identifier"&gt;imagedestroy&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;new_img&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;40 &lt;/span&gt;  &lt;span class="Identifier"&gt;imagedestroy&lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;$&lt;/span&gt;&lt;span class="Identifier"&gt;tmp_img&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;;
&lt;span class="lnr"&gt;41 &lt;/span&gt;&lt;span class="Special"&gt;}&lt;/span&gt;
&lt;/pre&gt;
          


&lt;p&gt;A fun&amp;ccedil;&amp;atilde;o acima est&amp;aacute; bem comentada, a &amp;uacute;nica observa&amp;ccedil;&amp;atilde;o fica para a verifica&amp;ccedil;&amp;atilde;o do tipo da imagem, que &amp;eacute; necess&amp;aacute;rio para criar as novas imagens da forma correta.&lt;/p&gt;
&lt;p&gt;Voc&amp;ecirc; poderia criar thumbnails para imagens de uma pasta inteira, ou criar v&amp;aacute;rias imagens de tamanhos diferentes com esta fun&amp;ccedil;&amp;atilde;o.&lt;/p&gt;
&lt;p&gt;Num pr&amp;oacute;ximo post, explicarei como fazer o upload e tratamento de v&amp;aacute;rias imagens simultaneamente, espero que este tenha sido &amp;uacute;til.&lt;/p&gt;

&lt;p&gt;Abra&amp;ccedil;o, T+&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Wed, 28 Nov 2007 15:49:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/47</link>
      <guid>http://www.bluetux.com.br/blog/show/47</guid>
    </item>
    <item>
      <title>Rapidinhas do MySQL</title>
      <description>&lt;p&gt;Essa &#233; para n&#227;o esquecer de algumas coisinhas &#250;teis sobre mysql:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Definindo a senha de root no mysql:&lt;/b&gt;
&lt;pre class="code"&gt;
mysqladmin -u root password 'novasenha'
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Fazendo backup de uma base do mysql:&lt;/b&gt;&lt;/p&gt;
&lt;pre class="code"&gt;
mysqldump -u root -p --opt base_do_mysql &gt; bkp_da_base.sql
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Restaurando backup de uma base do mysql:&lt;/b&gt;&lt;/p&gt;
&lt;pre class="code"&gt;
mysql -u root -p base_do_mysql &lt; bkp_da_base.sql
&lt;/pre&gt;
&lt;p&gt;Agora vou dormir...&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt; 

</description>
      <pubDate>Tue, 13 Nov 2007 18:15:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/45</link>
      <guid>http://www.bluetux.com.br/blog/show/45</guid>
    </item>
    <item>
      <title>Ubuntu 7.10 no Dell Vostro 1000 </title>
      <description>&lt;p&gt;E ai galera faz tempo mesmo, bom agora estou escrevendo este post do meu nov&#237;ssimo Notebook Dell Vostro 1000 com o Ubuntu 7.10 Gusty Gibbon perfeitamente instalado.&lt;/p&gt;
&lt;p&gt;Minha inten&#231;&#227;o era escrever um tutorial de como instalar o Ubuntu no notebook, mas at&#233; perdeu a gra&#231;a.&lt;/p&gt;
&lt;p&gt;Bom nem dei tempo o note chegou, j&#225; iniciei e ele entro no windows pr&#233; instalado, em seguida j&#225; reiniciei o Vostro com o CD do Ubuntu 7.10, e comecei a instala&#231;&#227;o.&lt;/p&gt;
&lt;p&gt;Ap&#243;s alguns minutos j&#225; estava pronto, tudo instalado, coloquei ele na rede e fiz as atualiza&#231;&#245;es, a &#250;nica ressalva fica com o Wireless Broadcom 1490 e com a placa de V&#237;deo a ATI 1150, que tamb&#233;m n&#227;o tem mist&#233;rios.&lt;/p&gt;
&lt;p&gt;Para a placa de V&#237;deo e o Wireless a &#250;nica coisa necess&#225;ria &#233; ir no menu &lt;b&gt;Sistema - Administra&#231;&#227;o - Gerenciador de Driver Propriet&#225;rios&lt;/b&gt;, depois &#233; s&#243; ativar os dispositivos, ele vai fazer o download dos pacotes e pronto, tudo funcionando.&lt;/p&gt;
&lt;p&gt;Bom &#233; isso n&#227;o tem mais mist&#233;rio instalar o Ubuntu em nada, e eu j&#225; estava me preparando pra ficar tentando uns dois dias, j&#225; tem at&#233; o coitado do windows virtualizado dentro dele, e com direito a Compiz e tudo, foi mais f&#225;cil que ter que ficar instalando drivers e reiniciando o windows.&lt;/p&gt;
&lt;p&gt;E depois ainda dizem que Linux &#233; que &#233; dif&#237;cil ...&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+ &lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Mon, 05 Nov 2007 15:50:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/44</link>
      <guid>http://www.bluetux.com.br/blog/show/44</guid>
    </item>
    <item>
      <title>Spans em coment&#225;rios, a solu&#231;&#227;o definitiva!</title>
      <description>&lt;p&gt;J&#225; faz um tempo que n&#227;o posto nada aqui, a Dreamhost venceu, vou voltar assim que trocar de hospedagem...&lt;/p&gt;
&lt;p&gt;Mas hoje estava de bobeira lendo os posts do &lt;a href="http://aurelio.wordpress.com"&gt;Blog do Aur&#233;lio&lt;/a&gt; e achei um j&#225; mais antigo sobre &lt;a href="http://aurelio.wordpress.com/2007/05/11/captcha-de-pobre/"&gt;captcha de pobre&lt;/a&gt; bem legal por sinal.&lt;/p&gt;
&lt;p&gt;Mas o que me chamou a aten&#231;&#227;o mesmo, como sou Engenheiro, foi a solu&#231;&#227;o mostrada a baixo, num dos &#250;ltimos coment&#225;rios, acho que agora sim vou colocar coment&#225;rios no meu blog, olhem essa imagem:&lt;/p&gt;
&lt;img src="/images/captcha1.png" /&gt;
&lt;p&gt;Por essas pessoinhas chatas sem ter o que fazer que n&#227;o colocava coment&#225;rios aqui, mas com esta solu&#231;&#227;o "FANT&#193;STICA", agora sim, poderei dormir tranq&#252;ilo...&lt;/p&gt;
&lt;p&gt;A prop&#243;sito a solu&#231;&#227;o &#233; &lt;b&gt;-1&lt;/b&gt;, se n&#227;o der tenta &lt;b&gt;1&lt;/b&gt;, era assim que a gente fazia na faculdade!!! Brincadeirinha !!!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;PS:&lt;/b&gt; Dia estressante, com essa imagem estou rindo at&#233; agora!!!&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br /&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Thu, 25 Oct 2007 21:32:38 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/43</link>
      <guid>http://www.bluetux.com.br/blog/show/43</guid>
    </item>
    <item>
      <title>Flash's e valida&#231;&#227;o no W3C</title>
      <description>  &lt;p&gt;Como prometi no &amp;uacute;limo post, agora vou explicar como
  resolver a briga do Flash e dos validadores de XHTML.&lt;/p&gt;

  &lt;p&gt;Bom pra come&amp;ccedil;ar o jeito que todo mundo faz e que
  est&amp;aacute; errado:&lt;/p&gt;
  &lt;pre&gt;
&amp;lt;object width="425" height="350"&amp;gt;
  &amp;lt;param name="movie" value="&lt;b&gt;http://www.youtube.com/v/PQbuyKUaKFo&lt;/b&gt;" /&amp;gt;
  &amp;lt;param name="wmode" value="transparent" /&amp;gt;
  &amp;lt;embed src="&lt;b&gt;http://www.youtube.com/v/PQbuyKUaKFo&lt;/b&gt;" 
  type="application/x-shockwave-flash" wmode="transparent" 
  width="425" height="350" /&amp;gt; 
&amp;lt;/object&amp;gt;
&lt;/pre&gt;

  &lt;p&gt;Vamos resolver de forma elegante, observa&amp;ccedil;&amp;atilde;o,
  testei no Firefox, Opera, IE 6 e no Konqueror, n&amp;atilde;o deu pra
  testar no Safari, se algu&amp;eacute;m quiser fazer uma
  doa&amp;ccedil;&amp;atilde;o de um MacBook eu aceito de bom grado:&lt;/p&gt;
  &lt;pre&gt;
&amp;lt;object type="application/x-shockwave-flash" 
  data="&lt;b&gt;http://www.youtube.com/v/PQbuyKUaKFo&lt;/b&gt;" 
  width="425" height="350" &amp;gt;
  &amp;lt;param name="movie" value="&lt;b&gt;http://www.youtube.com/v/PQbuyKUaKFo&lt;/b&gt;" /&amp;gt;
  &amp;lt;img src="banner.gif" width="425" height="350" alt="banner" /&amp;gt;
&amp;lt;/object&amp;gt;
&lt;/pre&gt;

  &lt;p&gt;Bom &amp;eacute; isso ai, agora pode testar a
  valida&amp;ccedil;&amp;atilde;o e veja como funciona certinho, com um
  minimo de trabalho e convenhamos se o Youtube e/ou o Flash
  j&amp;aacute; passassem as tags do jeito certo nem isso
  precisar&amp;iacute;amos, voc&amp;ecirc; tem um site 100% aprovado.&lt;/p&gt;

	&lt;p&gt;Maiores informa&amp;ccedil;&amp;otilde;es nestes sites: 
	&lt;a href="http://www.ambience.sk/flash-valid.htm" title="Valid Fash on XHTML"&gt;Valid Flash for XHTML&lt;/a&gt; e 
	&lt;a href="http://www.alistapart.com/articles/flashsatay/" title="Flash Satay method"&gt;Flash Satay method&lt;/a&gt;.&lt;/p&gt;

  &lt;p&gt;Abra&amp;ccedil;o, T+&lt;br /&gt;
  Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Wed, 26 Sep 2007 09:41:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/42</link>
      <guid>http://www.bluetux.com.br/blog/show/42</guid>
    </item>
    <item>
      <title>O tidy &amp;eacute; o cara da valida&amp;ccedil;&amp;atilde;o </title>
      <description>  &lt;p&gt;Faz um tempo que queria validar o c&amp;oacute;digo do blog e
  estava apanhando um pouco por dois motivos:&lt;/p&gt;

  &lt;p&gt;Primeiro, como as vezes pego um link aqui e outro ali e eles
  nem sempre v&amp;ecirc;em normalizados para o &lt;b&gt;XHTML&lt;/b&gt;, acaba
  ficando sempre um rabicho.&lt;/p&gt;

  &lt;p&gt;Segundo, os MALDITOS Flash's e seus OBJECT's e EMBED's, que
  insistem em fazer qualquer documento, por mais bonito que esteja
  dar erro ao tentar validar.&lt;/p&gt;

  &lt;p&gt;Bom vamos deixar o Flash pra l&amp;aacute;, no pr&amp;oacute;ximo post
  conto um segredo para resolver o problema com ele, agora quero
  falar do &lt;b&gt;tidy&lt;/b&gt;.&lt;/p&gt;

  &lt;p&gt;O &lt;b&gt;tidy&lt;/b&gt; &amp;eacute; um carinha que valida seu
  c&amp;oacute;digo, edenta, corrige, converte o que for preciso para
  CSS e faz mais algumas coisinhas conforme os par&amp;acirc;metros que
  forem passados.&lt;/p&gt;

  &lt;p&gt;Depois de uma m&amp;atilde;ozinha dele, finalmente validei 100% do
  blog, oque n&amp;atilde;o acontecia, por causa dos Flash e alguns
  links com espa&amp;ccedil;os e caracteres "proibidos".&lt;/p&gt;

  &lt;p&gt;Como somos humanos e n&amp;atilde;o conseguimos lembrar de todas
  as conven&amp;ccedil;&amp;otilde;es, c&amp;oacute;digos ASCII, e outros
  detalhes, o &lt;b&gt;tidy&lt;/b&gt; cumpre o papel de resolver isso para
  n&amp;oacute;s.&lt;/p&gt;

  &lt;p&gt;Primeiro instale o &lt;b&gt;tidy&lt;/b&gt;, o site &amp;eacute; &lt;a href=
  "http://tidy.sourceforge.net/"&gt;tidy.sourceforge.net&lt;/a&gt;, mas
  &amp;eacute; l&amp;oacute;gico, para quem tem Ubuntu &amp;eacute; s&amp;oacute;
  fazer assim:&lt;/p&gt;
  &lt;pre&gt;
sudo apt-get install tidy
&lt;/pre&gt;

  &lt;p&gt;Pronto, agora que voc&amp;ecirc; j&amp;aacute; tem o &lt;b&gt;tidy&lt;/b&gt;
  instalado, pode us&amp;aacute;-lo com essa combina&amp;ccedil;&amp;atilde;o,
  que vai produzir um efeito muito bom:&lt;/p&gt;
  &lt;pre&gt;
tidy -asxhtml -ascii -icm arquivo.html
&lt;/pre&gt;

  &lt;p&gt;Isso faz o seguinte, converte o documento para XHTML usando
  encoding ISO-8859-1, aplica edenta&amp;ccedil;&amp;atilde;o, limpa
  atributos de FONT, NOBR e CENTER, converte para CSS e salva as
  altera&amp;ccedil;&amp;otilde;es no pr&amp;oacute;prio arquivo.&lt;/p&gt;

  &lt;p&gt;As vezes pode ser que voc&amp;ecirc; ainda queira fazer algum
  ajuste, mas provavelmente o seu arquivo j&amp;aacute; estar&amp;aacute;
  pronto para validar, eu costumo ainda dar uma olhada pra ver oque
  ele fez, aprender um pouco mais e deixar o arquivo do meu jeito
  tamb&amp;eacute;m.&lt;/p&gt;

  &lt;p&gt;Para ver as op&amp;ccedil;&amp;otilde;es do &lt;b&gt;tidy&lt;/b&gt; use:&lt;/p&gt;
  &lt;pre&gt;
tidy -h | more
&lt;/pre&gt;

  &lt;p&gt;Amanh&amp;atilde; explico como resolver o problema do Flash o
  vil&amp;atilde;o dos Web Developers.&lt;/p&gt;

  &lt;p&gt;Abra&amp;ccedil;o, T+&lt;br /&gt;
  Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Tue, 25 Sep 2007 15:50:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/41</link>
      <guid>http://www.bluetux.com.br/blog/show/41</guid>
    </item>
    <item>
      <title>DBA ou Bombeiro?</title>
      <description>&lt;p&gt;Essa foi uma p&#233;rola que saiu na hora do caf&#233;, para entenderem primeiro preciso explicar um pouco:&lt;/p&gt;
&lt;p&gt;Est&#225; foi uma semana meio cheia pro meu amigo DBA, ele andou recuperando um monte de arquivos para alguns usu&#225;rios desesperados, ai segue a hist&#243;ria:&lt;/p&gt;
&lt;p&gt;Logo cedo na hora do nosso caf&#233; matinal, eu e o DBA, est&#225;vamos l&#225; pegando o caf&#233; e trocando as primeiras impress&#245;es do dia, quando de repente chega junto de n&#243;s um colega de outro setor e faz a infame pergunta pro meu amigo DBA:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Colega: &lt;b&gt;Porque voc&#234; n&#227;o presta concurso pra bombeiro?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;E &#233; l&#243;gico que sem entender a gente cai na besteira:&lt;/p&gt;
&lt;p&gt;N&#243;s: &lt;b&gt;Por que?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Colega: &lt;b&gt;U&#233; bombeiro faz RESGATE !!!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;N&#243;s: &lt;b&gt;Heim???&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Colega: &lt;b&gt;Voc&#234; &#233; bom de RESGATE, fica RESGATANDO todos os ARQUIVOS!!!&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sem coment&#225;rios, muito tonto isso, mas na hora, rachamos de dar risada !!!&lt;/p&gt;
&lt;p&gt;Agora o DBA j&#225; est&#225; se informando sobre os concursos de Bombeiro, acabou ficando interessado heehehehe !!!!&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
 
</description>
      <pubDate>Fri, 14 Sep 2007 12:18:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/40</link>
      <guid>http://www.bluetux.com.br/blog/show/40</guid>
    </item>
    <item>
      <title>Visualizando DBF's no Linux</title>
      <description>&lt;p&gt;Calma, n&#227;o estou maluco!!!&lt;/p&gt;
&lt;p&gt;Num &#250;ltimo projeto aqui da empresa, preciso acesar alguns arquivos DBF para depois port&#225;-los para Oracle e acessar via PHP.&lt;/p&gt;
&lt;p&gt;Bom para isso preciso conhecer a estrutura do arquivo, conseq&#252;entemente preciso acessa-lo, sei que com o &lt;a href="http://www.broffice.org"&gt;Open Office&lt;/a&gt; consigo faze-lo, mas ele traz as coisas um pouco bagun&#231;adas, ent&#227;o procurando um pouco encontrei o &lt;b&gt;DBView&lt;/b&gt; e ent&#227;o no meu Ubuntu:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install dbview
&lt;/pre&gt;
&lt;p&gt;E agora tenho um vizualizador de arquivos DBF, do jeito que gosto, leve, r&#225;pido e me retornando exatamente o que preciso e nada mais, para visualizar o arquivo use:&lt;/p&gt;
&lt;pre&gt;
dbview -rbie MEUDBF.dbf | more
&lt;/pre&gt;
&lt;p&gt;O &lt;b&gt;more&lt;/b&gt; aqui &#233; s&#243; pra facilitar a navega&#231;&#227;o, voc&#234; pode direcionar para um arquivo por exemplo.&lt;/p&gt;
&lt;p&gt;A observas&#227;o, o &lt;a href="http://www.php.net/manual/pt_BR/ref.dbase.php"&gt;PHP consegue manipular arquivos DBF&lt;/a&gt; sem problema, s&#243; estou usando o &lt;b&gt;dbview&lt;/b&gt; para uma primeira visualiza&#231;&#227;o, o grosso vai no PHP.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Fri, 14 Sep 2007 07:01:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/39</link>
      <guid>http://www.bluetux.com.br/blog/show/39</guid>
    </item>
    <item>
      <title>Ruby On Rails vs PHP</title>
      <description>&lt;p&gt;Esse eu ri muito, at&#233; me identifiquei ai, o PHP &#233; f&#227; do Ruby On Rails, muito bom, ultimamente ando assim:&lt;/p&gt;
       &lt;p&gt;
          &lt;object type="application/x-shockwave-flash" data="http://www.youtube.com/v/GQXqWkWqnSw" width="425" height="350"&gt;
            &lt;param name="movie" value="http://www.youtube.com/v/GQXqWkWqnSw" /&gt;
            &lt;img src="banner.gif" width="288" height="128" alt="banner" /&gt;
          &lt;/object&gt;
        &lt;/p&gt;
&lt;p&gt;Deixando bem claro, adoro programar em PHP, gosto muito da linguagem e n&#227;o tenho nada contra, mas que eu gargalhei bastante isso eu fiz.&lt;/p&gt;
&lt;p&gt;Esse caras da &lt;a href="http://www.railsenvy.com/"&gt;Rails Envy&lt;/a&gt; s&#227;o demais ...&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 12 Sep 2007 19:26:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/38</link>
      <guid>http://www.bluetux.com.br/blog/show/38</guid>
    </item>
    <item>
      <title>Ruby On Rails vs .NET</title>
      <description>&lt;p&gt;Bom sem querer botar mais lenha na fogueira, quero dizer que isso n&#227;o tem nada haver com as ultimas discuss&#245;es ocorridas, abaixo um video muito engra&#231;ado:&lt;/p&gt;
&lt;p&gt;
	&lt;object type="application/x-shockwave-flash" data="http://www.youtube.com/v/528BCJiRkks" width="425" height="350"&gt;
		&lt;param name="movie" value="http://www.youtube.com/v/528BCJiRkks" /&gt;
		&lt;img src="banner.gif" width="288" height="128" alt="banner" /&gt;
	&lt;/object&gt;
&lt;/p&gt;


&lt;p&gt;Pra quem n&#227;o entendeu nada, os links da discuss&#227;o:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://samirmamude.com/2007/8/12/porque-rails-e-melhor-que-asp-net-"&gt;Porque Rails &#233; melhor que ASP.NET?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.nomedojogo.com/2007/09/11/ruby-on-rails-no-tem-futuro-corra-atrs-da-sua-certificao-enquanto-tempo/"&gt; Ruby on Rails n&#227;o tem futuro - corra atr&#225;s da sua certifica&#231;&#227;o enquanto &#233; tempo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://samirmamude.com/2007/9/11/o-que-ha-de-errado-com-o-net-nada-o-problema-sou-eu"&gt;O que h&#225; de errado com o .NET? Nada, o problema sou eu ;-)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse v&#237;deo e alguns outros foram feitos pelo pessoal da &lt;a href="http://www.railsenvy.com/"&gt;Rails Envy&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 12 Sep 2007 19:05:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/37</link>
      <guid>http://www.bluetux.com.br/blog/show/37</guid>
    </item>
    <item>
      <title>Como um dalt&#244;nico v&#234; seu site</title>
      <description>&lt;p&gt;Quer saber se seu site poder ser visto por um dalt&#244;nico, acesse esse link e tire a prova:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vischeck.com/vischeck/vischeckURL.php"&gt;http://www.vischeck.com/vischeck/vischeckURL.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Assim voc&#234; pode ter certeza de que seu site pode ser visto por qualquer um, isso que &#233; acessibilidade e inclus&#227;o digital, olha como ficou o meu:&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/daltonicos.png" alt="imagem do site como um daltonico encherga"/&gt;&lt;/p&gt;
&lt;p&gt;J&#225; faz um tempinho que adicionei este site ao meu del.icio.us, mas n&#227;o fiz coment&#225;rio nenhum sobre ele, bastante gente fez refer&#234;ncia a este site, tem v&#225;rios links na net.&lt;/p&gt;
&lt;p&gt;Hoje, muita gente est&#225; come&#231;ando a se preocupar realmente com acessibilidade, fico feliz de ver iniciativas assim.&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 12 Sep 2007 12:34:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/34</link>
      <guid>http://www.bluetux.com.br/blog/show/34</guid>
    </item>
    <item>
      <title>Curso de Ruby On Rails</title>
      <description>&lt;p&gt;Oi galera,&lt;br/&gt;
Estou aqui s&#243; para justificar a parada do blog, que foi devido a problemas novamente com a Dreamhost, nem vou entrar em detalhes, e tamb&#233;m devido a minha falta de tempo mesmo.&lt;/p&gt;

&lt;p&gt;Segunda-feira, comecei o &lt;a href="http://www.egenial.com.br/cursorails"&gt;Curso de Ruby On Rails On-line da E-Genial&lt;/a&gt;, e ontem tivemos nossa primeira aula usando o &lt;a href="www.treinatom.com.br"&gt;Treina Tom&lt;/a&gt;, minha primeira impress&#227;o foi boa, o ambiente parece bem legal e d&#225; pra acompanhar as aulas e palestras muito bem, questionar,comentar, etc.&lt;/p&gt;
&lt;p&gt;O Ronaldo Ferraz parece muito bom professor, o &#250;nico defeito &#233; que ele E-macs, hehe brincadeira.&lt;/p&gt;
&lt;p&gt;Ainda estamos come&#231;ando e estou ansioso para chegar na parte mais "&lt;i&gt;paulera"&lt;/i&gt; do curso e finalmente tentar sanar algumas das d&#250;vidas que ainda tenho de Ruby On Rails, este foi o objetivo principal de me inscrever neste curso.&lt;/p&gt;

&lt;p&gt;Enfim, entrei neste curso por n&#227;o poder ir pra S&#227;o Paulo todo fim de semana pra fazer curso presencial e parece que o curso vai atingir meus objetivos, por tanto, recomendo o curso a todos que estiverem querendo iniciar com Ruby On Rails, tendo ou n&#227;o a possibilidade de fazer um curso presencial, al&#233;m do curso tamb&#233;m ter um &#243;timo pre&#231;o.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
 
</description>
      <pubDate>Wed, 12 Sep 2007 04:00:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/33</link>
      <guid>http://www.bluetux.com.br/blog/show/33</guid>
    </item>
    <item>
      <title>Montando pastas remotas com SSHFS</title>
      <description>&lt;p&gt;Usando o &lt;b&gt;sshfs&lt;/b&gt; voc&#234; pode montar pastas remotas de servidores ou outras esta&#231;&#245;es no seu micro.&lt;/p&gt;
&lt;p&gt;Vamos assumir que voc&#234; j&#225; tem o &lt;b&gt;ssh&lt;/b&gt; devidamente instalado e configurado, ent&#227;o vamos come&#231;ar instalando o &lt;b&gt;sshfs&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install sshfs
&lt;/pre&gt;
&lt;p&gt;Agora voc&#234; precisa carregar o modulo do &lt;b&gt;fuse&lt;/b&gt; para poder utilizar o sshfs:&lt;/p&gt;
&lt;pre&gt;
sudo modprobe fuse
&lt;/pre&gt;
&lt;p&gt;Para sempre que iniciar a maquina o m&#243;dulo do &lt;b&gt;fuse&lt;/b&gt; esteja ativado, insira-o no &lt;b&gt;/etc/modules&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
su -c "echo fuse &amp;gt;&amp;gt; /etc/modules"
&lt;/pre&gt;
&lt;p&gt;Depois, adicione seu usu&#225;rio ao grupo do &lt;b&gt;fuse&lt;/b&gt; do arquivo &lt;b&gt;/etc/group&lt;/b&gt; assim:&lt;/p&gt;
&lt;pre&gt;
...
fuse:x:117:usuario
...
&lt;/pre&gt;
&lt;p&gt;Agora, crie um ponto de montagem no local de sua prefer&#234;ncia ex: &lt;b&gt;/media/remoto&lt;/b&gt; e pronto agora &#233; s&#243; montar:&lt;/p&gt;
&lt;pre&gt;
sshfs usuario@maquinaremota.com.br:/var/www/pasta /media/remoto
ou
sshfs usuario@200.123.23.22:/var/www/pasta /media/remoto
Password: *****
&lt;/pre&gt;
&lt;p&gt;Muito &#250;til, espero que usem bastante, eu criei um script com os pontos de montagem que uso para facilitar.&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 29 Aug 2007 15:54:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/32</link>
      <guid>http://www.bluetux.com.br/blog/show/32</guid>
    </item>
    <item>
      <title>Utilizando o apt-get</title>
      <description>&lt;p&gt;O &lt;b&gt;apt-get&lt;/b&gt; &#233; um instalador de pacotes on-line, padr&#227;o nas distribui&#231;&#245;es linux baseadas no &lt;a href="http://www.debian.org"&gt;Debian&lt;/a&gt;, como por exemplo o &lt;a href="http://www.ubuntu.org"&gt;Ubuntu&lt;/a&gt; que &#233; minha distro atual.&lt;/p&gt;
&lt;p&gt;Basta saber o nome do pacote para instalar com todas as suas depend&#234;ncias, ele utiliza um arquivo de reposit&#243;rios on-line:&lt;/p&gt;
&lt;pre&gt;
/etc/apt/sources.list
&lt;/pre&gt;
&lt;p&gt;Para instalar um pacote voc&#234; primeiro precisa atualizar a base de pacotes dos reposit&#243;rios, assim voc&#234; tem uma lista com os pacotes mais atuais dispon&#237;veis:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get update
&lt;/pre&gt;
&lt;p&gt;Agora voc&#234; pode procurar o pacote que lhe conv&#233;m na sua base(pode usar express&#245;es regulares):&lt;/p&gt;
&lt;pre&gt;
sudo apt-cache search apache2
apache2 - Next generation, scalable, extendable web server
...
&lt;/pre&gt;
&lt;p&gt;Ap&#243;s localizar &#233; s&#243; instalar o pacote, se n&#227;o souber o nome, voc&#234; tamb&#233;m pode usar &lt;b&gt;TAB&lt;/b&gt; para ver as alternativas poss&#237;veis:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install apache2
&lt;/pre&gt;
&lt;p&gt;Depois disso &#233; s&#243; confirmar se deseja realmente instalar o pacote e suas depend&#234;ncia e pronto, seu pacote ser&#225; instalado atrav&#233;s dos reposit&#243;rios na internet.&lt;/p&gt;

&lt;p&gt;Para remover um pacote pode usar:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get remove apache2
#ou
sudo apt-get autoremove apache2
&lt;/pre&gt;

&lt;p&gt;No &lt;a href="http://www.ubuntu.org"&gt;Ubuntu&lt;/a&gt; existe uma ferramenta gr&#225;fica para o &lt;b&gt;apt-get&lt;/b&gt; chamada &lt;b&gt;Adept&lt;/b&gt; que torna a vida do usu&#225;rio muito mais simples e &#233; uma das raz&#245;es de sucesso desta distro.&lt;/p&gt; 

&lt;p&gt;Bom o &lt;b&gt;apt-get&lt;/b&gt; &#233; sem duvida uma &lt;i&gt;"m&#227;o na roda"&lt;/i&gt; e &#233; uma das ferramentas que mais gosto no Linux.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Mon, 27 Aug 2007 21:26:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/31</link>
      <guid>http://www.bluetux.com.br/blog/show/31</guid>
    </item>
    <item>
      <title>MS SQL no Linux com FreeTDS</title>
      <description>&lt;p&gt;Bom hoje vou explicar como configurar o FreeTDS para acessar uma base MS SQL no Linux, ent&#227;o m&#227;o na massa.&lt;/p&gt;

&lt;p&gt;Primeiro vamos baixar o pacote do FreeTDS:&lt;/p&gt;
&lt;pre&gt;
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/\
stable/freetds-stable.tgz
&lt;/pre&gt;
&lt;p&gt;Agora vamos descompactar e compilar o bicho:&lt;/p&gt;
&lt;pre&gt;
$ tar -zxvf freetds-stable.tgz
$ cd freetds-0.64/
&lt;/pre&gt;
&lt;p&gt;Para compilar o FreeTDS, vou definir como diretorio de instala&#231;&#227;o o &lt;b&gt;/usr/local/freetds&lt;/b&gt;, como diretorio dos arquivos de configura&#231;&#227;o o &lt;b&gt;/etc/freetds&lt;/b&gt; e como vers&#227;o padr&#227;o o MS SQL 2000(8.0):&lt;/p&gt;
&lt;pre&gt;
$ ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 \ 
  --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared \
  --enable-static --sysconfdir=/etc/freetds/

$ make
$ sudo make install
&lt;/pre&gt;
&lt;p&gt;Depois disso voce precisa configurar o FreeTDS, ent&#227;o vamos come&#231;ar pelo &lt;b&gt;/etc/freetds/freetds.conf&lt;/b&gt;, coloque no final dele:&lt;/p&gt;
&lt;pre&gt;
[producao]
  host = 192.168.0.100
  port = 1433
  tds version = 8.0

[desenvolvimento]
  host = 192.168.0.101
  port = 1433
	tds version = 8.0
&lt;/pre&gt;

&lt;p&gt;E agora &lt;b&gt;/usr/local/freetds/interfaces&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
producao
  query tcp ether 192.168.0.100 1433
  master tcp ether 192.168.0.100 1433

desenvolvimento
  query tcp ether 192.168.0.101 1433
  master tcp ether 192.168.0.101 1433
&lt;/pre&gt;
&lt;p&gt;Agora voc&#234; precisa exportar duas vari&#225;veis, coloque-as no &lt;b&gt;/etc/profile&lt;/b&gt; para carregar junto com o sistema:&lt;/p&gt;
&lt;pre&gt;
$ export SYBASE=/usr/local/freetds
$ export TDSVER=4.2
&lt;/pre&gt;

&lt;p&gt;Finalmente vamos testar, fa&#231;a o seguinte:&lt;/p&gt;
&lt;pre&gt;
$ tsql -S producao -U sa
locale is "pt_BR.ISO-8859-1"
locale charset is "ISO-8859-1"
Password:
1&amp;gt; use pubs
2&amp;gt; go
1&amp;gt; select top 10 * from jobs
2&amp;gt; go
&lt;/pre&gt;
&lt;p&gt;Se aparecer o &lt;b&gt;1&amp;gt;&lt;/b&gt; voc&#234; j&#225; conseguiu conectar no banco, ai &#233; s&#243; fazer uma instru&#231;&#227;o de teste, aproveitem...&lt;/p&gt;
&lt;p&gt;Para maiores informa&#231;&#245;es acessem  &lt;a href="http://www.freetds.org"&gt;www.freetds.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Thu, 23 Aug 2007 18:25:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/30</link>
      <guid>http://www.bluetux.com.br/blog/show/30</guid>
    </item>
    <item>
      <title>Auto-inicializar aplicativos no KDE</title>
      <description>&lt;p&gt;Estava come&#231;ando o dia, quando percebi que todos os dias ligo minha m&#225;quina e fa&#231;o o ritual de abrir todos os programas que utilizo mais freq&#252;entemente.&lt;/p&gt;
&lt;p&gt;Acredito que todo mundo, ou quase todo mundo, fa&#231;a o mesmo que eu, como hoje me bateu aquela pregui&#231;a de ficar clicando em cada um deles, resolvi coloca-los na inicializa&#231;&#227;o do meu KDE.&lt;/p&gt;
&lt;p&gt;Para colocar um aplicativo para inicializar autom&#225;tico junto com o ambiente gr&#225;fico(KDE), voc&#234; deve acessar a pasta &lt;b&gt;/home/seu_usuario/.kde/Autostart&lt;/b&gt; e criar um arquivo(pode ser com o nome do programa), por exemplo para o firefox, &lt;b&gt;vim /home/seu_usuario/.kde/Autostart/firefox.sh&lt;/b&gt;, com o conte&#250;do:&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/bash
/usr/bin/firefox http://www.bluetux.com.br
&lt;/pre&gt;
&lt;p&gt;Agora &#233; s&#243; dar permiss&#227;o de execu&#231;&#227;o pro seu usu&#225;rio e pronto, ao iniciar o modo gr&#225;fico seu programa vai abrir junto com o ambiente:&lt;/p&gt;
&lt;pre&gt;
chmod u+x /home/seu_usuario/.kde/Autostart/firefox.sh
&lt;/pre&gt;
&lt;p&gt;Se voc&#234; quiser que mais programas inicializem junto com o KDE, fa&#231;a outros arquivos com o comando correspondente de cada programa.&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 22 Aug 2007 16:59:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/29</link>
      <guid>http://www.bluetux.com.br/blog/show/29</guid>
    </item>
    <item>
      <title>MS SQL Client no Linux</title>
      <description>&lt;p&gt;Bom antes que algu&#233;m queira me esquartejar, de uns tempos pra c&#225; venho trabalhando com um sistema de terceiros que usa uma base &lt;b&gt;MS SQL Server&lt;/b&gt; da qual tenho que tirar alguns relat&#243;rios e disponibiliza-los na nossa Intranet em PHP.&lt;/p&gt;

&lt;p&gt;Realmente n&#227;o sou f&#227; do &lt;b&gt;MS SQL Server&lt;/b&gt;, mas n&#227;o teve jeito, tive que encarar o monstrengo... Desde ent&#227;o venho enfrentando algumas dificuldades para utiliza-lo, visto que meu Desktop &#233; Linux, os Clients pro bicho s&#227;o muito escassos e quase ningu&#233;m fala da integra&#231;&#227;o dele com Linux ou PHP.&lt;/p&gt;

&lt;p&gt;At&#233; ent&#227;o tinha usado o &lt;b&gt;Oracle SQL Developer&lt;/b&gt;, mas ele n&#227;o me mostrava a estrutura de tabelas da base &lt;b&gt;MS SQL Server&lt;/b&gt;, e isso dificultava um pouco conhecer melhor as tabelas da base.&lt;/p&gt;

&lt;p&gt;Foi ai que na &#250;ltima atualiza&#231;&#227;o do &lt;b&gt;Oracle SQL Developer&lt;/b&gt; ele parou de vez de acessar a base &lt;b&gt;MS SQL Server&lt;/b&gt;, ai tive que resolver o problema, sen&#227;o s&#243; me restaria o &lt;b&gt;tsql&lt;/b&gt; via terminal o que n&#227;o &#233; nem um pouco agrad&#225;vel(n&#227;o parece nada com o &lt;b&gt;sqlplus&lt;/b&gt;) e dificultaria ainda mais o entendimento da base.&lt;/p&gt;

&lt;p&gt;Ent&#227;o voltei a tentar usar o &lt;b&gt;Squirrel SQL&lt;/b&gt; apesar de n&#227;o ter conseguido sucesso anteriormente, mas minha surpresa foi muito boa, ele funcionou muito bem e ainda me resolveu alguns problemas que vinha tendo com o &lt;b&gt;Oracle SQL Developer&lt;/b&gt;.&lt;/p&gt;

&lt;img src="/images/squirrelsql.png" alt="Squirrell SQL" /&gt;

&lt;p&gt;D&#225; primeira vez faltou a biblioteca &lt;b&gt;Java&lt;/b&gt; para acessar a base &lt;b&gt;MS SQL Server&lt;/b&gt;, mas desta vez consegui configurar tudo certo e a base funcionou perfeitamente. Pela primeira vez consegui visualizar a estrutura completa da base de dados e descobri uma ferramenta cheia de recursos, recomendo e vou passar a usa-la tamb&#233;m para acessar as outras bases que utilizo.&lt;/p&gt;

&lt;p&gt;Pra instalar o &lt;b&gt;Squirrel SQL&lt;/b&gt; baixe aqui &lt;a href="http://squirrel-sql.sourceforge.net"&gt;squirrel-sql.sourceforge.net&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;E para acessar uma base &lt;b&gt;MS SQL Server&lt;/b&gt; voc&#234; precisa do Driver Java &lt;b&gt;JTDS&lt;/b&gt;, baixe o pacote &lt;b&gt;jtds-xxx-dist.zip&lt;/b&gt; aqui: &lt;a href="http://jtds.sourceforge.net/"&gt;jtds.sourceforge.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para configurar a base procure nos Drivers o &lt;b&gt;JTDS Microsoft SQL&lt;/b&gt;, fa&#231;a uma copia, e na aba &lt;b&gt;Class Path Extra&lt;/b&gt; adicione o caminho do pacote &lt;b&gt;jdts-x-x-x.jar&lt;/b&gt; que voc&#234; descompactou, pronto agora &#233; s&#243; criar um apelido pra base, selecionar o driver &lt;b&gt;JTDS Microsoft SQL&lt;/b&gt; e seguir o exemplo pra configurar o acesso a sua base.&lt;/p&gt;

&lt;p&gt;Espero que gostem da ferramenta, pra mim foi muito &#250;til, voc&#234; pode usa-la pra acessar v&#225;rias bases de dados como &lt;b&gt;Oracle&lt;/b&gt;, &lt;b&gt;MS SQL Server&lt;/b&gt;, &lt;b&gt;PostgreSQL&lt;/b&gt;, &lt;b&gt;MySQL&lt;/b&gt;, &lt;b&gt;Firebird&lt;/b&gt;, &lt;b&gt;DB2&lt;/b&gt; dentre outras...&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Tue, 21 Aug 2007 13:11:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/28</link>
      <guid>http://www.bluetux.com.br/blog/show/28</guid>
    </item>
    <item>
      <title>Route no Windows</title>
      <description>&lt;p&gt;Hoje precisei criar uma rota padr&#227;o(gateway) em um micro com windows e n&#227;o lembrava de jeito nenhum a sintaxe do comando no windows, tentei com o help mas ele n&#227;o foi muito esclarecedor, ent&#227;o corri atr&#225;s e achei no site da MS a explica&#231;&#227;o.&lt;/p&gt;
&lt;p&gt;Come&#231;ando pela sintaxe:&lt;/p&gt;
&lt;pre&gt;
route [-f ] [-p ] [Comando [Destino] [mask M&#225;scaraRede] [Gateway] 
[metric M&#233;trica]] [if Interface]]
&lt;/pre&gt;
&lt;p&gt;A op&#231;&#227;o &lt;b&gt;-f&lt;/b&gt; limpa a tabela de roteamento antes de aplicar a nova rota.&lt;/p&gt;
&lt;p&gt;A op&#231;&#227;o &lt;b&gt;-p&lt;/b&gt; cria uma rota persistente(tradu&#231;&#227;o quando reiniciar ela continua l&#225;), ela grava essa rota nessa chave do registro do Windows:&lt;/p&gt;
&lt;pre&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Tcpip\Parameters\PersistentRoutes
&lt;/pre&gt;

&lt;p&gt;O &lt;b&gt;route&lt;/b&gt; pode assumir uma destas a&#231;&#245;es:&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;b&gt;add&lt;/b&gt;: adiciona uma rota&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;change&lt;/b&gt;: modifica uma rota existente&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;delete&lt;/b&gt;: apaga uma ou mais rotas&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;print&lt;/b&gt;: mostra a tabela de rotas&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Exemplos de uso do comando no windows:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Mostrar tabela de roteamento:&lt;/p&gt;
&lt;pre&gt;
route print
&lt;/pre&gt;

&lt;p&gt;Mostrar as rotas que come&#231;am por 10.:&lt;/p&gt;
&lt;pre&gt;
route print 10.*
&lt;/pre&gt;

&lt;p&gt;Adicionar uma rota com o endere&#231;o de gateway 192.168.12.1(rota padr&#227;o)&lt;/p&gt;
&lt;pre&gt;
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
&lt;/pre&gt;

&lt;p&gt;Adicionar uma rota para o destino 10.41.0.0 com a m&#225;scara de sub-rede 255.255.0.0 e gateway 10.27.0.1:&lt;/p&gt;
&lt;pre&gt;
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
&lt;/pre&gt;
&lt;p&gt;A mesma rota s&#243; que de modo persistente:&lt;/p&gt;
&lt;pre&gt;
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
&lt;/pre&gt;

&lt;p&gt;Agora a mesma rota com m&#233;trica de custo de 7:&lt;/p&gt;
&lt;pre&gt;
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
&lt;/pre&gt;

&lt;p&gt;Adicionar uma rota definindo &#237;ndice de interface 0x3:&lt;/p&gt;
&lt;pre&gt;
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
&lt;/pre&gt;

&lt;p&gt;Para excluir uma rota:&lt;/p&gt;
&lt;pre&gt;
route delete 10.41.0.0 mask 255.255.0.0
&lt;/pre&gt;

&lt;p&gt;Excluir todas as rotas que come&#231;am por 10.:
&lt;pre&gt;
route delete 10.*
&lt;/pre&gt;

&lt;p&gt;Alterar a rota 10.41.0.0:&lt;/p&gt; 
&lt;pre&gt;
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25
&lt;/pre&gt;

&lt;p&gt;Para maiores informa&#231;&#245;es acesse o &lt;a href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/pt-pt/library/ServerHelp/dfc5383f-5ec0-4a0f-96da-acee2da3ac2f.mspx?mfr=true"&gt;manual on-line do windows(&#233;ca)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pra compen&#231;ar depois coloco um post de como usar o &lt;b&gt;route&lt;/b&gt; no Linux.&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Thu, 16 Aug 2007 13:56:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/27</link>
      <guid>http://www.bluetux.com.br/blog/show/27</guid>
    </item>
    <item>
      <title>Acessibilidade na Web</title>
      <description>&lt;p&gt;Ultimamente um amigo me vez uma proposta de desenvolver alguns sites e tirar uma graninha extra, l&#243;gico que apesar do tempo curto aceitei conversar sobre o assunto afinal dimdim &#233; sempre bem vindo.&lt;/p&gt;
&lt;p&gt;Estou ajudando este amigo a aprender programa&#231;&#227;o e desenvolvimento web tamb&#233;m, e como todo novato ele logo me veio com aquela coisa: &lt;i&gt;"Mas e Flash, a gente tem que fazer algumas coisas em Flash porque o cliente gosta..."&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Eu sinceramente sou contra uso de Flash a n&#227;o ser em um banner ou algo assim, n&#227;o imagino um site de grande acesso todo em Flash, ent&#227;o logo comecei a explicar pra ele sobre XHTML, CSS, sobre como montar um site limpo bem estruturado e sem "firulas".&lt;/p&gt;
&lt;p&gt;O cliente l&#243;gico que quer a abertura de um filme no seu site, ele n&#227;o entende o quanto aquilo prejudica a visibilidade do mesmo, ent&#227;o pra n&#227;o ficar discursando um v&#237;deo pra demonstrar o que eu estou falando:&lt;/p&gt;
&lt;p&gt;
&lt;object width='400' height='326' type='application/x-shockwave-flash' data='http://video.google.com/googleplayer.swf?docId=-2864638973122712263'&gt;&lt;param name='allowScriptAccess' value='never' /&gt;&lt;param name='movie' value='http://video.google.com/googleplayer.swf?docId=-2864638973122712263'/&gt;&lt;param name='quality' value='best'/&gt;&lt;param name='bgcolor' value='#ffffff' /&gt;&lt;param name='scale' value='noScale' /&gt;&lt;param name='wmode' value='window'/&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;Al&#233;m da Acessibilidade prover o acesso de portadores de defici&#234;ncia ao seu site, ela tamb&#233;m economiza recursos de Banda, compatibilidade com diversos navegadores e sistemas, facilita as altera&#231;&#245;es no site, acaba com a guerra entre programadores e designers e mais algumas vantagens que estou esquecendo.&lt;/p&gt;

&lt;p&gt;Para saber mais sobre Acessibilidade acesse &lt;a href="http://acessodigital.net"&gt;Acesso Digital&lt;/a&gt; ,&lt;a href="http://www.serpro.gov.br/acessibilidade"&gt;SERPRO&lt;/a&gt; e &lt;a href="http://www.bengalalegal.com"&gt;Bengala Legal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 15 Aug 2007 18:16:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/26</link>
      <guid>http://www.bluetux.com.br/blog/show/26</guid>
    </item>
    <item>
      <title>Conhecendo Ruby On Rails</title>
      <description>&lt;p&gt;Nas minhas andan&#231;as pela web achei essa apresenta&#231;&#227;o do &lt;a href="http://diego-souza.blogspot.com/"&gt;Diego Souza&lt;/a&gt; sobre Ruby On Rails e achei muito legal, ent&#227;o resolvi postar aqui:&lt;/p&gt;
&lt;p&gt;
&lt;object type="application/x-shockwave-flash" data="http://s3.amazonaws.com/slideshare/ssplayer.swf?id=91204&amp;doc=conhecendo-ruby-on-rails4672" width="425" height="348"&gt;&lt;param name="movie" value="http://s3.amazonaws.com/slideshare/ssplayer.swf?id=91204&amp;doc=conhecendo-ruby-on-rails4672" /&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;Parab&#233;ns Diego, muito legal pro pessoal come&#231;ar a conhecer o Ruby On Rails.&lt;/p&gt;
&lt;p&gt;Link para o &lt;a href="http://diego-souza.blogspot.com/2007/08/conhecendo-ruby-on-rails.html"&gt;Post do Diego&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Tue, 14 Aug 2007 10:09:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/25</link>
      <guid>http://www.bluetux.com.br/blog/show/25</guid>
    </item>
    <item>
      <title>Mostrar data de acesso com stat</title>
      <description>&lt;p&gt;O comando &lt;b&gt;stat&lt;/b&gt; serve para mostrar caracter&#237;sticas de um arquivo ou Sistema de Arquivos, ele pode mostrar uma s&#233;rie delas como a data do &#250;ltimo acesso, da &#250;ltima modifica&#231;&#227;o, o id ou nome do usu&#225;rio, grupo, inodes e algumas outras op&#231;&#245;es &#250;teis.&lt;/p&gt;
&lt;p&gt;Abaixo dois exemplos, o primeiro s&#227;o algumas propriedades do Sistema de arquivos do ponto de montagem /:&lt;/p&gt;
&lt;pre&gt;
$ stat -f /
  File: "/"
    ID: 93a5a61986bde964 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 5161087    Free: 3953659    Available: 3691515
Inodes: Total: 2606080    Free: 2384864
&lt;/pre&gt;

&lt;p&gt;Agora algumas op&#231;&#245;es para um arquivo:&lt;/p&gt;
&lt;pre&gt;
$ stat arquivo.odt
  File: `arquivo.odt`
  Size: 105984      Blocks: 208     IO Block: 4096   regular file
Device: 806h/2054d  Inode: 86069    Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alfredo) Gid: ( 1000/ alfredo)
Access: 2007-08-06 11:31:25.000000000 -0300
Modify: 2007-08-06 08:37:31.000000000 -0300
Change: 2007-08-06 11:29:50.000000000 -0300

## data do &#250;ltimo acesso
$ stat -c %x arquivo.odt
2007-08-06 11:31:25.000000000 -0300

## data da ultima modifica&#231;&#227;o
$ stat -c %y arquivo.odt
2007-08-06 08:37:31.000000000 -0300
&lt;/pre&gt;

&lt;p&gt;Para saber mais sobre as op&#231;&#245;es do stat:&lt;/p&gt;
&lt;pre&gt;
$ stat --help

# ou
$ man stat
&lt;/pre&gt;

&lt;p&gt;Esse comando pode ser muito &#250;til em um shell script, mais uma cartinha na manga ... :-D&lt;/p&gt;

&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Mon, 13 Aug 2007 13:59:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/24</link>
      <guid>http://www.bluetux.com.br/blog/show/24</guid>
    </item>
    <item>
      <title>Novo iMac, eu quero !!!</title>
      <description>&lt;p&gt;&#201; incr&#237;vel, a Apple sabe como vender um produto, sou f&#227; e sonho com o dia de ter um Mac desde quando era moleque e estava dando os primeiros passos em inform&#225;tica.&lt;/p&gt;
&lt;p&gt;Tive uma ou duas oportunidades de ver um Mac em a&#231;&#227;o pessoalmente, e al&#233;m de lindo o bichinho &#233; poderoso, pena que nunca tive a oportunidade colocar meus dedos no seu teclado, um dia ainda realizo esse desejo, pena que os pre&#231;os n&#227;o ajudam, ainda &#233; muito pro meu pequeno bolsinho ....&lt;/p&gt;
&lt;p&gt;Pra voc&#234;s terem a oportunidade de babar um pouco comigo ai v&#227;o umas fotos do novo iMac feito de vidro e alum&#237;nio, parab&#233;ns pra Apple mais uma vez ...&lt;/p&gt;

&lt;img src="/images/imac01.jpg"/&gt; 
&lt;p&gt;Olha onde ficam as entradas de perif&#233;ricos:&lt;/p&gt;
&lt;img src="/images/imac02.jpg"/&gt; 

&lt;p&gt;E esse teclado, cara t&#244; apaixonado !!!!&lt;/p&gt;
&lt;img src="/images/imac03.jpg"/&gt; 

&lt;p&gt;Mais do teclado, eu compraria s&#243; por causa dele:&lt;/p&gt;
&lt;img src="/images/imac04.jpg"/&gt; 

&lt;p&gt;E por &#250;ltimo uma compara&#231;&#227;o injusta, desculpa ai Dell:&lt;/p&gt;
&lt;img src="/images/imac05.jpg"/&gt;

&lt;p&gt;Babaram n&#233; agora olhem as configura&#231;&#245;es do bichinho:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Core 2 Duo de 2.4GHz a 2.8 GHz&lt;/li&gt; 
	&lt;li&gt;Mem&#243;ria RAM at&#233; 4GB&lt;/li&gt; 
	&lt;li&gt;ATI Radeon HD 2400XT ou ATI Radeon HD 2600 PRO&lt;/li&gt; 
	&lt;li&gt;Disco de 250GB at&#233; 1 Terabyte.&lt;/li&gt; 
	&lt;li&gt;Wireless 802.11n&lt;/li&gt; 
	&lt;li&gt;I/O de &#225;udio, 3 USB 2.0, FireWire 400 e 800, Ethernet e v&#237;deo&lt;/li&gt;
	&lt;li&gt;Gravador de DVD SuperDrive&lt;/li&gt; 
	&lt;li&gt;Webcam e microfone embutidos&lt;/li&gt; 
&lt;/ul&gt;
&lt;p&gt;O pre&#231;o sugerido para a configura&#231;&#227;o b&#225;sica &#233; de US$ 1.199,00 nos USA, pena que vai chegar aqui umas 3 vezes mais caro.&lt;/p&gt;
&lt;p&gt;Para saber mais acesse o &lt;a href="http://www.apple.com"&gt;site da Apple&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Fri, 10 Aug 2007 13:28:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/23</link>
      <guid>http://www.bluetux.com.br/blog/show/23</guid>
    </item>
    <item>
      <title>Curso Online de Ruby On Rails - e-Genial</title>
      <description>&lt;p&gt;Quero participar porque eu era um Vag&#227;o descarrilado, sem esperan&#231;a de voltar aos Trilhos, quando descobri o &lt;a href="http://www.rubyonrails.org"&gt;Ruby On Rails&lt;/a&gt; e v&#237; a luz no fim do t&#250;nel.&lt;/p&gt;
&lt;p&gt;Mas mesmo assim o caminho continuava dif&#237;cil, foi quando a &lt;a href="http://www.egenial.com.br"&gt;e-Genial&lt;/a&gt; chegou e me deu o empurr&#227;o que eu precisava.&lt;/p&gt;
&lt;p&gt;Agora espero terminar o &lt;a href="http://www.egenial.com.br/cursorails"&gt;Curso de Ruby On Rails da e-Genial&lt;/a&gt; e deixar de ser um Vag&#227;o descarrilado e me transformar numa Locomotiva &#225; Todo Vapor!!!&lt;/p&gt;

&lt;blockquote&gt;
	&lt;h3&gt;Fa&#231;a o Curso e vire uma Locomotiva &#225; Todo Vapor!!!&lt;/h3&gt;
	&lt;p&gt;&lt;b&gt;Aulas Did&#225;ticas:&lt;/b&gt; Segundas e Quartas&lt;br/&gt;
	&lt;b&gt;Aulas Interativas:&lt;/b&gt;  Ter&#231;as:18:00 &#224;s 19:00 e Quintas: 19:30 as 20:30&lt;br/&gt;
	&lt;b&gt;Instrutor:&lt;/b&gt; Ronaldo Ferraz&lt;br/&gt;
	&lt;b&gt;In&#237;cio:&lt;/b&gt; 10/09/2007&lt;br/&gt;
	&lt;b&gt;Investimento:&lt;/b&gt;3 x R$ 133,39 ou 1 x R$ 380,00&lt;br/&gt;
	&lt;b&gt;O participante ter&#225; a sua disposi&#231;&#227;o:&lt;/b&gt;&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;Material Did&#225;tico passo a passo &lt;/li&gt;
		&lt;li&gt;Exerc&#237;cios propostos            &lt;/li&gt;
		&lt;li&gt;Grupo de Estudos                &lt;/li&gt;
		&lt;li&gt;Aulas Interativas ao vivo       &lt;/li&gt;
		&lt;li&gt;Contato direto com instrutor    &lt;/li&gt;
		&lt;li&gt;Contato direto com outros alunos&lt;/li&gt;
		&lt;li&gt;Certificado de participa&#231;&#227;o     &lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;&lt;b&gt;Acesse:&lt;/b&gt; &lt;a href="http://www.egenial.com.br/cursorails"&gt;www.egenial.com.br/cursorails&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;Abra&#231;o,T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Thu, 09 Aug 2007 09:42:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/22</link>
      <guid>http://www.bluetux.com.br/blog/show/22</guid>
    </item>
    <item>
      <title>Arte no Chip de Sil&#237;cio</title>
      <description>&lt;p&gt;E ai galera,&lt;br/&gt;
Aqui vai uma daquelas coisas que ningu&#233;m imagina, sabia que provavelmente no processador do seu micro ou
at&#233; mesmo naquela sua calculadora, pode tamb&#233;m existir arte?&lt;/p&gt;
&lt;p&gt;N&#227;o estou falando que estes chips s&#227;o a arte em si, mas neles podem existir escondias obras de arte,
ou para os mais c&#233;ticos apenas desenhos microsc&#243;picos.&lt;/p&gt;
&lt;p&gt;E para acha-los tem um pessoal que faz um trabalho e garimpagem desses desenhos, lembra aquele livro 
"Onde esta o Holly?", que a gente ficava procurando o personagem no meio de um cen&#225;rio repleto de conte&#250;do.&lt;/p&gt;

&lt;img src="/images/holly.jpg"/&gt;

&lt;p&gt;Muito bom aqui tem uma galeria de figuras encontradas nos chips, essa atividade era clandestina antigamente,
os projetistas colocavam os desenhos sem suas empresas saberem, como quando voc&#234; deixava a sua marca no cimento fresco
quando era crian&#231;a, agora &#233; uma brincadeira da Industria de chips.&lt;/p&gt;
&lt;p&gt;O mais comum s&#227;o personagens de quadrinhos, mas existe todo o tipo de imagens, placas de carro, um aut&#243;dromo,
animais de todos os tipos, alien&#237;genas, etc.&lt;/p&gt;

&lt;p&gt;Essa &#233; uma das artes mais Geek(leia nerd) que j&#225; vi, deu at&#233; vontade de projetar um circuitinho s&#243; pra fazer a minha ;-D.&lt;/p&gt;

&lt;p&gt;Aqui v&#227;o dois links para ver mais destes desenhos:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Chip_art"&gt;http://en.wikipedia.org/wiki/Chip_art&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.chipworks.com/silicon_art_gallery.aspx"&gt;http://www.chipworks.com/silicon_art_gallery.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Wed, 08 Aug 2007 14:06:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/21</link>
      <guid>http://www.bluetux.com.br/blog/show/21</guid>
    </item>
    <item>
      <title>RSS Feeds com RubyonRails</title>
      <description>&lt;p&gt;Aproveitando meu pequeno problema com a hospedagem do blog, estou reconstruindo ele totalmente e vou aproveitar para relatar as experi&#234;ncias nesse processo.&lt;/p&gt;
&lt;p&gt;Ent&#227;o vou colocar aqui de maneira bem simples como fiz para meu RSS Feed funcionar, primeiro, no meu controller Blog inclu&#237; um m&#233;todo para o RSS:&lt;/p&gt;
&lt;pre&gt;
class BlogController &amp;lt; ApplicationController
  ...
  def rss
    headers["Content-Type"] = "application/xml" 
    @posts = Post.find(:all, :order =&gt; "data desc")
    render :layout =&amp;gt; false
  end
  ...
end
&lt;/pre&gt;
&lt;p&gt;Agora precisamos criar a view do nosso RSS ent&#227;o em &lt;b&gt;app/views/blog/&lt;/b&gt; criei o arquivo &lt;b&gt;rss.rxml&lt;/b&gt; com o seguinte conte&#250;do:&lt;/p&gt;
&lt;pre&gt;
xml.instruct! :xml, :version=&amp;gt;"1.0" 
xml.rss(:version=&amp;gt;"2.0"){
  xml.channel{
    xml.title("T&#237;tulo do seu Blog aqui")
    xml.link("http://enderecodoblog.com")
    xml.description("Aqui vai a descri&#231;&#227;o do seu Feed")
    xml.language("pt-BR")
    for post in @posts
      xml.item do
        xml.title(post.titulo)
        xml.description(post.descricao) 
        #aqui tamb&#233;m poderia ser o conte&#250;do do post
        # rfc822
        xml.pubDate(post.data.rfc2822)
      xml.link("http://enderecodoblog.com/post")
      xml.guid("http://enderecodoblog.com/post")
      end
    end
  }
}
&lt;/pre&gt;
&lt;p&gt;Pronto agora &#233; s&#243; colocar nos seus headers html para aparecer o &#237;cone do RSS na barra de endere&#231;os do navegador:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;link href="http://www.seublog.com/blog/rss" rel="alternate" 
title="RSS" type="application/rss+xml" /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Agora voc&#234; j&#225; pode acessar seu RSS Feed e ver o resultado, f&#225;cil e r&#225;pido como tudo em RubyonRails :-D.&lt;/p&gt;
&lt;p&gt;Esse post foi feito com base neste &lt;a href="http://wiki.rubyonrails.com/rails/pages/HowtoGenerateARSSFeed"&gt;aqui&lt;/a&gt;.
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Mon, 06 Aug 2007 13:59:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/20</link>
      <guid>http://www.bluetux.com.br/blog/show/20</guid>
    </item>
    <item>
      <title>Os bastidores do Gmail</title>
      <description>&lt;p&gt;Voc&#234; j&#225; imaginou por onde seus e-mails passam desde quando saem da sua caixa de envio at&#233; chegarem ao seu destino?&lt;/p&gt;
&lt;p&gt;Pois &#233; o pessoal do google quer a sua ajuda para montar esse trajeto, veja o v&#237;deo abaixo:&lt;/p&gt;

&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VfDW7qAdFGk"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/VfDW7qAdFGk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;Fa&#231;a seu v&#237;deo e envie para eles at&#233; o dia 13 de agosto, j&#225; estou pensando no meu ...&lt;/p&gt;
&lt;p&gt;Veja mais v&#237;deos &lt;a href="https://mail.google.com/mail/help/intl/pt-BR/gmail_video.html"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Sun, 05 Aug 2007 11:24:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/19</link>
      <guid>http://www.bluetux.com.br/blog/show/19</guid>
    </item>
    <item>
      <title>Acertando a hora via web com ntpdate</title>
      <description>&lt;p&gt;Se voc&#234; tem problemas com a data do seu micro ou Servidores, pode resolve-lo atualizando a data via web com o &lt;b&gt;ntpdate&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;O &lt;b&gt;ntpdate&lt;/b&gt; atualiza a data pelo servidor NTP que voc&#234; definir na linha de comando.&lt;/p&gt;
&lt;p&gt;Para utilizar o &lt;b&gt;ntpdate&lt;/b&gt; no Ubuntu, primeiro, se ainda n&#227;o estiver, &#233; preciso instalar o &lt;b&gt;ntpdate&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
$ sudo apt-get install ntpdate
&lt;/pre&gt;
&lt;p&gt;Agora, para utiliza-lo &#233; s&#243; usar o comando abaixo:&lt;/p&gt;
&lt;pre&gt;
$ sudo ntpdate br.pool.ntp.org
 Aug 12:23:17 ntpdate[6172]: adjust time server 200.144.121.33 
 offset -0.267961 sec
&lt;/pre&gt;
&lt;p&gt;Se retornar uma mensagem como a acima, pronto a data esta atualizada, sen&#227;o voc&#234; pode tentar outros servidores NTP, &lt;a href="http://www.rnp.br/ntp/ntp-stratum2.html"&gt;aqui existe uma lista com v&#225;rios&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para manter tamb&#233;m os rel&#243;gios da BIOS e do sistema sempre atualizados, voc&#234; pode colocar esta linha no &lt;b&gt;crontab&lt;/b&gt; do &lt;b&gt;root&lt;/b&gt;:&lt;/p&gt;
&lt;pre&gt;
*/30 * * * * /usr/sbin/ntpdate -s br.pool.ntp.org &amp;&amp; /sbin/hwclock -w
&lt;/pre&gt;
&lt;p&gt;Pronto os seus rel&#243;gios ser&#227;o atualizados a cada 30 minutos.&lt;/p&gt;
&lt;p&gt;Voc&#234; tamb&#233;m pode definir mais de um servidor na mesma linha de comando, assim se um estiver fora ele busca nos outros;&lt;/p&gt;
&lt;pre&gt;
$ sudo ntpdate -s br.pool.ntp.org ntp.cais.rnp.br ntp1.pucpr.br
&lt;/pre&gt;
&lt;p&gt;A op&#231;&#227;o &lt;b&gt;-s&lt;/b&gt; serve para n&#227;o retornar mensagens na tela.&lt;/p&gt;
&lt;p&gt;Em um pr&#243;ximo post explicarei como montar um Servidor NTP para sua rede, bem &#250;til para suas m&#225;quinas que n&#227;o tem sa&#237;da para Internet.&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Sat, 04 Aug 2007 09:00:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/18</link>
      <guid>http://www.bluetux.com.br/blog/show/18</guid>
    </item>
    <item>
      <title>Dica de Ingl&#234;s</title>
      <description>&lt;p&gt;E ai galera, agora vou tentar manter sempre os posts atualizados, espero que consiga um por dia.&lt;/p&gt;
&lt;p&gt;Pra manter o ritmo, ai vai uma dica pra quem quer manter o Ingl&#234;s atualizado.&lt;/p&gt;
&lt;p&gt;Nesse blog, &lt;a href="http://www.linguagum.com"&gt;linguagum.com&lt;/a&gt;, seu autor disponibiliza tr&#234;s listas de e-mail
de n&#237;veis diferentes de aprendizado de Ingl&#234;s, voc&#234; recebe diariamente(at&#233; nos fim de semana) um e-mail com
uma frase com &#225;udio e uma explica&#231;&#227;o da mesma, tudo em Ingl&#234;s, muito legal e com bom humor, as listas s&#227;o:&lt;/p&gt;

&lt;blockquote&gt;
	&lt;h4&gt;English Essentials 1&lt;/h4&gt;
	&lt;p&gt;Essa vem com temas mais f&#225;ceis, mais voltada para iniciantes, com algumas express&#245;es idiom&#225;ticas bem 
	usuais, muito boa tamb&#233;m pra quem j&#225; sabe recordar e aprender novas express&#245;es.&lt;/p&gt;
	&lt;h4&gt;English Essentials 2&lt;/h4&gt;
	&lt;p&gt;Essa tem um n&#237;vel intermedi&#225;rio, aborda regras gramaticais, tempos verbais, etc, mais dif&#237;cil pra quem est&#225; come&#231;ando
	entender as explica&#231;&#245;es, mas &#233; bom acompanhar, mesmo sem entender no come&#231;o isso ajuda a pegar vocabul&#225;rio.&lt;/p&gt;
	&lt;h4&gt;English Situations&lt;/h4&gt;
	&lt;p&gt;Esse na minha opini&#227;o &#233; o mais legal, s&#227;o s&#233;rie de situa&#231;&#245;es cotidianas, por exemplo voc&#234; no Aeroporto ou num restaurante, 
	durante uma ou duas semanas eles explicam os di&#225;logos poss&#237;veis nestas situa&#231;&#245;es, bem legal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Eu j&#225; uso o &lt;a href="http://www.linguagum.com"&gt;linguagum.com&lt;/a&gt; a quase um ano, e volta e meia eles retornam nos assuntos,
fazendo uma revis&#227;o &#233; realmente muito bom, se quiser pode comentar e tirar duvidas no blog, l&#225; voc&#234; encontra v&#225;rias outras 
coisas sobre o aprendizado da l&#237;ngua Inglesa.&lt;/p&gt;

&lt;p&gt;Vale ressaltar tamb&#233;m que o ingl&#234;s que eles abordam &#233; o Brit&#226;nico e n&#227;o o Americano, todos os &#225;udios tem esse sotaque.&lt;/p&gt;

&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Fri, 03 Aug 2007 09:26:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/17</link>
      <guid>http://www.bluetux.com.br/blog/show/17</guid>
    </item>
    <item>
      <title>Fibonacci sabor Oracle</title>
      <description>&lt;p&gt;Agora que o blog finalmente voltou ao ar (espero que o pessoal da Dreamhost mantenha assim), vou colocar aqui uma dica do meu amigo Rog&#233;rio, ele &#233; o DBA aqui da empresa onde trabalho.&lt;/p&gt;
&lt;p&gt;Ele viu no blog o post anterior sobre a s&#233;rie de Fibonacci, e me passou um link com uma feita no Oracle 10g, achei legal e vou colocar aqui sem maiores explica&#231;&#245;es:&lt;/p&gt;
&lt;pre&gt;
SQL&gt; select s seq
   2  from dual
   3  model return all rows
   4  dimension by ( 0 d ) measures ( 0 s )
   5  rules iterate (12) (
   6  s[iteration_number ] = decode(
   7  iteration_number, 0, 0, 1, 1, s[iteration_number-2]
   8  ) + nvl(s[iteration_number-1],0)
   9  )
  10  /

           SEQ
-------------
             0
             1
             1
             2
             3
             5
             8
            13
            21
            34
            55
            89
&lt;/pre&gt;
&lt;p&gt;Para quem quiser saber mais, acesse o blog do autor do  experimento o Marcio Portes &lt;a href="http://mportes.blogspot.com/2006/05/sequencia-de-fibonacci.html"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Thu, 02 Aug 2007 13:07:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/16</link>
      <guid>http://www.bluetux.com.br/blog/show/16</guid>
    </item>
    <item>
      <title>S&#233;rie de Fibonacci em diversos sabores</title>
      <description>&lt;p&gt;E ai galera, j&#225; faz um tempo !!!&lt;/p&gt;
&lt;p&gt;Bom voltei finalmente com algumas novidades, como j&#225; sabem trabalho com PHP e tamb&#233;m estou aprendendo e fazendo 
alguns trabalhos em RubyonRails no momento.&lt;/p&gt;
&lt;p&gt;Agora com o incentivo de um amigo que est&#225; louco para aprender Java e precisava de uma companhia, resolvi
finalmente aprender pra valer essa linguagem que muita gente fala, alguns bem outros mal, mas que na minha opini&#227;o 
o importante &#233; usar a tecnologia que melhor se adapta as sua necessidades e conhecimento, n&#227;o se essa &#233; melhor que 
aquela ou vice versa, mesmo porque n&#227;o adianta nada usar a melhor linguagem do mundo se n&#227;o souber usar os recursos que ela oferece.&lt;/p&gt;
&lt;p&gt;S&#243; a t&#237;tulo de curiosidade, fazendo um exerc&#237;cio sugerido no material, fiz a S&#233;rie de Fibonacci em Java e depois
me lembrei que o Taq uma vez demonstrou a mesma em Ruby usando hashes e ai fui mais fundo e resolvi ver como ela ficaria em Java, Ruby, Python e
sem contar o PHP, que foi por onde comecei pra resolver o problema hehehe ...&lt;/p&gt;
&lt;p&gt;Ent&#227;o segue a resposta nos variados sabores:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;PHP:&lt;/b&gt;
&lt;pre class="code"&gt;
1  &amp;lt;?php
2    function fib($n){
3      return ($n &lt; 2)? $n : fib($n-1) + fib($n-2);
4    }
5    $n = 6;
6    for($i = 0;$i &lt;= $n;$i++)
7      print $i." : ".fib($i)."\n";
8  ?&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Java:&lt;/b&gt;
&lt;pre class="code"&gt;
1  class Fibonacci{
2    public static int fib(int i){
3      return (i &lt; 2)? i : fib(i-1) + fib(i-2);
4    }
5    public static void main(String[] args){
6      int n = 6;
7      for(int i = 0; i &lt;= n; i++)
8        System.out.println(i + ": " + fib(i));
9    }
10 }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python:&lt;/b&gt;
&lt;pre class="code"&gt;
1  def fib(n):
2    if n &lt; 2:
3      return n
4    else:
5      return fib(n-1) + fib(n-2)
6  n = 6
7  for i in range(n):
8    print "%d : %d" %(i,fib(i))
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ruby:&lt;/b&gt;
&lt;pre class="code"&gt;
1  Fib = Hash.new{|h, n| n &lt; 2 ? h[n] = n : h[n] = h[n-1] + h[n-2]}
2  n = 6
3  for i in 0..n
4    puts i.to_s + ": " + Fib[i].to_s 
5  end
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;O resultado destes quatro programinhas &#233; o mesmo pra todos, exatamente como mostrado abaixo:
&lt;pre class="code"&gt;
0: 0
1: 1
2: 1
3: 2
4: 3
5: 5
6: 8
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Neste exemplo de Ruby n&#227;o estou usando o irb, criei um arquivo.rb, poderia ter feito o mesmo da forma como o Taq 
&lt;a href="http://www.eustaquiorangel.com/blog/show/319"&gt;explicou aqui&lt;/a&gt; e que mostro logo abaixo, usando o irb:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ruby:&lt;/b&gt;
&lt;pre class="code"&gt;
Fib = Hash.new{|h, n| n &lt; 2 ? h[n] = n : h[n] = h[n-1] + h[n-2]}
puts Fib[10]
=&gt; 55

# ou 
Fib.inspect
=&gt; "{5=&gt;5, 0=&gt;0, 6=&gt;8, 1=&gt;1, 7=&gt;13, 2=&gt;1, 8=&gt;21, 3=&gt;2, 9=&gt;34,
 4=&gt;3, 10=&gt;55}"

# ou
Fib.sort
=&gt; [[0, 0], [1, 1], [2, 1], [3, 2], [4, 3], [5, 5], [6, 8], 
[7, 13], [8, 21], [9, 34], [10, 55]]
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Tentei resolver o problema usando o mesmo conceito nas quatro linguagens, lembrando que n&#227;o 
sou especialista em nenhuma delas, deixo pra cada um tirar suas pr&#243;prias conclus&#245;es e escolher
a que achar melhor pra sua necessidade, espero n&#227;o ter feito nenhuma barbaridade em nenhuma delas :-D.&lt;br/&gt;
Se algu&#233;m notar alguma coisa muito absurda e quiser me alertar por favor mande um e-mail para &lt;b&gt;&lt;i&gt;alfredo at bluetux.com.br&lt;/i&gt;&lt;/b&gt;, 
que eu corrijo.&lt;/p&gt;

&lt;p&gt;Bom &#233; isso ai, espero trazer algumas coisas interessantes desta nova experi&#234;ncia...&lt;/p&gt;

&lt;p&gt;Abra&#231;o, T+&lt;br/&gt;
Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Thu, 19 Jul 2007 15:27:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/15</link>
      <guid>http://www.bluetux.com.br/blog/show/15</guid>
    </item>
    <item>
      <title>Atualiza&#231;&#227;o do (K)Ubuntu Edgy para o Feisty</title>
      <description>&lt;p&gt;Oi galera uso o Kubuntu em casa e no trabalho e &#233; sem d&#250;vida a Distro que mais gosto no momento, n&#227;o uso o Ubuntu porque n&#227;o simpatizo muito com o Gnome, mas isso &#233; quest&#227;o de gosto, ainda tenho curiosidade em testar o Xubuntu, que me agrada pela poss&#237;vel leveza.&lt;/p&gt;
&lt;p&gt;Acabo de fazer o Upgrade de Vers&#227;o do Edgy para o Feisty e vou relatar passo a passo aqui. Este processo deve ser feito pela linha de comando(shell), ent&#227;o vamos colocar a m&#227;o na massa:&lt;/p&gt;
&lt;p&gt;Primeiro um aviso, come&#231;ando este processo, n&#227;o tem mais volta, se ocorrer algum problema voc&#234; ter&#225; que resolver manualmente, ent&#227;o se voc&#234; n&#227;o tem uma parti&#231;&#227;o com seus dados importantes, &#233; bom fazer um backup para garantir, mas para ficarem mais tranq&#252;ilos, comigo que geralmente encontro alguns empecilho(meu computador j&#225; n&#227;o &#233; mais top de linha) correu tudo perfeitamente bem.&lt;/p&gt;
&lt;p&gt;Vamos l&#225;, primeiro vamos verificar se seu sistema esta devidamente atualizado com os pacotes ess&#234;ncias para o upgrade do sistema que s&#227;o o "ubuntu-minimal" e o "ubuntu-standard":&lt;/p&gt;
&lt;pre class="code"&gt;
sudo apt-get install ubuntu-minimal ubuntu-standard
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Se voc&#234; n&#227;o possu&#237;a os pacotes eles v&#227;o ser instalados, certifique-se que eles est&#227;o l&#225;, ap&#243;s isso voc&#234; tem que verificar se possui instalados os pacotes apropriados a sua vers&#227;o de desktop, no meu caso o "kubuntu-desktop", podem ser tamb&#233;m "ubuntu-desktop", "xubuntu-desktop" e "edubuntu-desktop":&lt;/p&gt;
&lt;pre class="code"&gt;
sudo apt-get install kubuntu-desktop^

# ou para ubuntu 
sudo apt-get install ubuntu-desktop^
# xubuntu
sudo apt-get install xubuntu-desktop^
# edubuntu 
sudo apt-get install eubuntu-desktop^
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Ap&#243;s terminada a verifica&#231;&#227;o e atualiza&#231;&#227;o se for necess&#225;ria, voc&#234; ter&#225; que modificar o seu arquivo &lt;b&gt;/etc/apt/sources.list&lt;/b&gt; para a nova vers&#227;o do sistema, para isso primeiro certifique-se que voc&#234; s&#243; esteja com os reposit&#243;rios padr&#245;es do Ubuntu habilitados, que s&#227;o estes:&lt;/p&gt;
&lt;pre class="code"&gt;
deb http://archive.ubuntu.com/ubuntu edgy main restricted 
deb http://archive.ubuntu.com/ubuntu edgy-updates main restricted 
deb http://security.ubuntu.com/ubuntu edgy-security main restricted 
deb-src http://archive.ubuntu.com/ubuntu edgy main restricted 
deb-src http://archive.ubuntu.com/ubuntu edgy-updates main restricted 
deb-src http://security.ubuntu.com/ubuntu edgy-security main restricted 
deb http://archive.ubuntu.com/ubuntu edgy universe multiverse 
deb http://archive.ubuntu.com/ubuntu edgy-updates universe multiverse 
deb http://security.ubuntu.com/ubuntu edgy-security universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu edgy universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu edgy-updates universe multiverse 
deb-src http://security.ubuntu.com/ubuntu edgy-security universe multiverse 
deb http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse 
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Ok, certos disto vamos finalmente modificar o arquivo, esta mudan&#231;a consiste em substituir todas as ocorr&#234;ncias no arquivo de &lt;b&gt;edgy&lt;/b&gt; para &lt;b&gt;feisty&lt;/b&gt; o caminho mais f&#225;cil e r&#225;pido &#233; o seguinte, no shell:&lt;/p&gt;
&lt;pre class="code"&gt;
sudo sed -e 's/\sedgy/ feisty/g' -i /etc/apt/sources.list 
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Se voc&#234; j&#225; possui o CD do (K)Ubuntu, parab&#233;ns, voc&#234; terminar&#225; o processo bem mais cedo, fa&#231;a o seguinte, e depois siga o restante dos passos:&lt;/p&gt;
&lt;pre class="code"&gt;
sudo apt-cdrom add 
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Se voc&#234; n&#227;o possui o CD espero que voc&#234; tenha bastante paci&#234;ncia porque o pr&#243;ximo passo, a atualiza&#231;&#227;o do sistema propriamente dita, vai demorar &lt;b&gt;MUITO&lt;/b&gt;, eu tinha quase 1Gb de atualiza&#231;&#245;es a serem feitas e demorou no meu ADSL de 500 Kbps mais de 24 horas, ent&#227;o fa&#231;a e esque&#231;a, volte no dia seguinte, ou continue utilizando o computador como se n&#227;o estivesse fazendo nada, bom chega de papo e vamos l&#225;:&lt;/p&gt;
&lt;pre class="code"&gt;
sudo apt-get update &amp;&amp; sudo apt-get dist-upgrade -y 
&amp;&amp; sudo apt-get dist-upgrade -y
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Note que fa&#231;o o Updade depois o Upgrade duas vezes, isso porque com quase certeza algum pacote n&#227;o vai conseguir ser baixado de primeira e voce vai te que repetir o processo, eu como todo macaco velho al&#233;m das duas vezes, fiz o upgrade mais umas tr&#234;s vezes s&#243; pra garantir, e realmente faltaram alguns pacotes. A op&#231;&#227;o &lt;b&gt;-y&lt;/b&gt; acrescentei para n&#227;o ter que ficar confirmando o upgrade, realmente para poder esquecer o processo enquanto ele trabalhava.&lt;/p&gt;
&lt;p&gt;No dia seguinte, fa&#231;a o upgrade novamente s&#243; para garantir, ou se o upgrade j&#225; consegui come&#231;ar a instalar os pacotes, confirme as perguntas para a instala&#231;&#227;o dos diversos programas, e em seguida fa&#231;a o seguinte:&lt;/p&gt;
&lt;pre class="code"&gt;
sudo apt-get update &amp;&amp; sudo apt-get dist-upgrade
sudo apt-get -f install
sudo dpkg --configure -a
&lt;/pre&gt;&lt;br/&gt;
&lt;p&gt;Finalmente rode o &lt;b&gt;dist-upgrade&lt;/b&gt; novamente para se certificar de que tudo esta instalado e finalmente reinicie seu micro e se divirta com o (K)Ubuntu Feisty.&lt;/p&gt;
&lt;p&gt;N&#227;o notei grandes mudan&#231;as inicialmente, somente as telas de Inicializa&#231;&#227;o e Finaliza&#231;&#227;o, o Kernel 2.6.20, o visual novo do KDE, o KNetworkManager, a atualiza&#231;&#227;o do Amarok e que o Beryl est&#225; funcionando um pouco melhor, de resto &#233; o bom e velho Kununtu, pelo menos por fora.&lt;/p&gt;
&lt;p&gt;Espero que se divirtam...&lt;p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;

&lt;p&gt;Os processos descritos neste post foram tirados deste &lt;a href="https://help.ubuntu.com/community/FeistyUpgradesManual"&gt;site&lt;/a&gt;, mas n&#227;o &#233; uma tradu&#231;&#227;o literal do mesmo.&lt;/p&gt;
</description>
      <pubDate>Sat, 21 Apr 2007 13:11:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/14</link>
      <guid>http://www.bluetux.com.br/blog/show/14</guid>
    </item>
    <item>
      <title>Mudan&#231;a !!!</title>
      <description>&lt;p&gt;Na sexta-feira passada a empresa onde trabalho (&lt;a href="http://www.expressoitamarati.com.br"&gt;Expresso Itamarati&lt;/a&gt;) mudou de endere&#231;o e como toda mudan&#231;a, existem coisas que deixamos para tr&#225;s das quais vamos sentir muitas saudades.&lt;/p&gt;
Aqui, t&#234;m algumas fotos do nosso &#250;ltimo dia no antigo escrit&#243;rio:&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/8"&gt;Que saudades do meu cantinho...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/9"&gt;O DBA do dedo luminoso !!!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/10"&gt;Nosso chefe no seu aqu&#225;rio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/11"&gt;Resist&#234;ncia a mudan&#231;a ...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/12"&gt;Resist&#234;ncia a mudan&#231;a 2...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bluetux.com.br/photo/show/13"&gt;A Equipe Nico, equipinico, equipinico!!!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Espero que gostem ...&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;

</description>
      <pubDate>Tue, 17 Apr 2007 21:17:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/13</link>
      <guid>http://www.bluetux.com.br/blog/show/13</guid>
    </item>
    <item>
      <title>Ruby on Rails X Java</title>
      <description>&lt;p&gt;&lt;img src="/images/blog/javaxrubyonrails.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Uma imagem divertida comparando a dificuldade de aprendizagem entre essas duas linguagens.&lt;/p&gt;
&lt;p&gt;Essa n&#227;o &#233; uma compara&#231;&#227;o t&#233;cnica e n&#227;o pode ser levada t&#227;o a s&#233;rio.&lt;/p&gt;
&lt;p&gt;Espero que os amigos que defendem o Java n&#227;o fiquem bravos comigo, essa &#233; apenas uma imagem engra&#231;ada que j&#225; rola a um tempo na Internet e coloquei aqui para preencher o espa&#231;o enquanto n&#227;o arranjo tempo para novos posts mais &#250;teis.&lt;/p&gt;
&lt;p&gt;Abra&#231;o T+,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt; </description>
      <pubDate>Thu, 12 Apr 2007 14:52:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/12</link>
      <guid>http://www.bluetux.com.br/blog/show/12</guid>
    </item>
    <item>
      <title>Configurando Fonte no Gvim</title>
      <description>&lt;p&gt;Galerinha, me desculpem a aus&#234;ncia, estou meio sem tempo, logo vou postar um artigo bem completo sobre o &lt;b&gt;bc&lt;/b&gt;, pelo menos at&#233; o fim de semana.&lt;/p&gt;
&lt;p&gt;Agora s&#243; um post r&#225;pido sobre o &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; o meu framework, opa quer dizer editor preferido.&lt;/p&gt;
&lt;p&gt;Para setar uma determinada fonte por exemplo &lt;b&gt;Courier de tamanho 9&lt;/b&gt; (&#233; eu sei &#233; bem pequeno, mas gosto assim), use o seguinte comando:&lt;/p&gt;
&lt;pre class="code"&gt;
:set gfn=Courier\ 10\ Pitch\ 9
&lt;/pre&gt;
&lt;p&gt;Onde &lt;b&gt;Courier 10&lt;/b&gt; &#233; o nome correto da fonte e &lt;b&gt;Pitch 9&lt;/b&gt; &#233; o tamanho que quero, voc&#234; pode pesquisar sobre &lt;b&gt;guifont&lt;/b&gt;, vai achar muitas coisas.&lt;/p&gt;
&lt;p&gt;Voc&#234; pode colocar este comando direto do &lt;b&gt;.vimrc&lt;/b&gt;, Assim sempre que chamar o vim ele j&#225; vai estar com a fonte de sua prefer&#234;ncia.&lt;/p&gt;
&lt;p&gt;Prometo que sobrando um tempo fa&#231;o um Post detalhado sobre meu &lt;b&gt;.vimrc&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Abra&#231;o,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Tue, 20 Mar 2007 10:35:00 -0700</pubDate>
      <link>http://www.bluetux.com.br/blog/show/11</link>
      <guid>http://www.bluetux.com.br/blog/show/11</guid>
    </item>
    <item>
      <title>Plugin do Java no Firefox</title>
      <description>&lt;p&gt;Essa &#233; uma dica bem simple que j&#225; estou cansado de fazer mas que sempre esque&#231;o como fiz,
ent&#227;o resolvi postar aqui pra ficar mais f&#225;cil de achar da pr&#243;xima vez.&lt;p&gt;
&lt;p&gt;Instalar o plugin do java no firefox &#233; bem simples e sem traumas.&lt;/p&gt;
&lt;p&gt;Primeiro, se voc&#234; n&#227;o tem o Java Intalado baixe &lt;a href="http://www.java.com/en/download/manual.jsp"&gt;aqui&lt;/a&gt;.&lt;br/&gt;
Segundo, entre como root, copie o arquivo &lt;b&gt;jre-X_X_X-linux-i586.bin&lt;/b&gt; para o diret&#243;rio que deseja instalar,
exemplo "&lt;b&gt;/usr/java&lt;/b&gt;", d&#234; permiss&#227;o de execu&#231;&#227;o e logo ap&#243;s execute o arquivo:
&lt;pre class="code"&gt;
su -l
mkdir /usr/java
cp jre-X_X_X-linux-i586.bin /usr/java
cd /usr/java
chmod a+x jre-X_X_X-linux-i586.bin
./jre-X_X_X-linux-i586.bin
&lt;/pre&gt;
&lt;p&gt;Aceite a licen&#231;a e pronto o Java ser&#225; instalado sem traumas.&lt;/p&gt;
&lt;p&gt;Agora que j&#225; temos o Java instalado, vamos configurar o plugin do Firefox.&lt;br/&gt;
Vamos supor que o diret&#243;rio de instala&#231;&#227;o do Firefox seja "&lt;b&gt;/usr/lib/firefox&lt;/b&gt;", entre no diret&#243;rio de plugins 
e crie um link simb&#243;lico para "&lt;b&gt;libjavaplugin_oji.so&lt;/b&gt;" assim:
&lt;pre class="code"&gt;
cd /usr/lib/firefox/plugin/i386/ns7
ln -s /usr/java/jreX.X.X/plugin/i386/ns7/libjavaplugin_oji.so .
&lt;/pre&gt;
&lt;p&gt;N&#227;o esque&#231;a do ponto final ele faz parte do comando.&lt;/p&gt;
&lt;p&gt;Pronto agora &#233; s&#243; reiniciar o Firefox e testar o plugin do Java, voc&#234; pode fazer isso 
&lt;a href="http://www.java.com/pt_BR/download/installed.jsp?detect=jre&amp;try=1"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Agora n&#227;o tem mais como esquecer ...&lt;/p&gt;
&lt;p&gt;Abra&#231;o,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Wed, 28 Feb 2007 12:02:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/10</link>
      <guid>http://www.bluetux.com.br/blog/show/10</guid>
    </item>
    <item>
      <title>Dell com Linux Pr&#233;-instalado</title>
      <description>&lt;p&gt;Com a volta do seu criador, a Dell pediu sugest&#245;es em como melhorar seus produtos e servi&#231;os para os consumidores.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Id&#233;ia n&#250;mero 1, at&#233; o momento?&lt;/b&gt; Computadores com a op&#231;&#227;o de Ubuntu, OpenSuse ou Fedora pr&#233;-instalados e configurados, prontos para uso. Ou seja, no momento de se comprar o computador, o consumidor teria essas op&#231;&#245;es de sistema operacional, al&#233;m do Windows XP e Windows Vista. E outra id&#233;ia bastante popular &#233; fornecer o equipamento sem sistema operacional algum.&lt;/p&gt;
&lt;p&gt;A segunda op&#231;&#227;o mais popular foi ter o Open-Office pr&#233;-instalado ou uma vers&#227;o trial do Microsoft Office ao inv&#233;s do Microsoft Works.&lt;/p&gt;
&lt;p&gt;Se um dos maiores fabricantes de computadores do mundo come&#231;ar a fornecer distros pr&#233;-instaladas e configuradas, com drivers, codecs e suporte, h&#225; uma boa chance do mercado se diversificar. Computadores prontos para usar como Macs, com tudo "escondido", mas dispon&#237;vel para os power users, beneficiaria muita gente.&lt;/p&gt;
&lt;p&gt;Mas antes que algum fanboy pense: "oba, m&#225;quinas Dell com SO de gra&#231;a", pense novamente, bob&#227;o. O servi&#231;o para pr&#233;-configurar e instalar a m&#225;quina, muito provavelmente, ser&#225; cobrado e isso &#233; totalmente justo. &lt;/p&gt;
&lt;p&gt;Mais justo ainda &#233; a m&#225;quina vir sem SO algum e deixar os fu&#231;adores de bits se divertirem alterando o kernel e drivers de alguma distro obscura. Ou instalar uma c&#243;pia de um SO que ele(a) j&#225; possua.&lt;/p&gt;
&lt;p&gt;Para o mercado corporativo, significa algo ainda mais importante: suporte e integra&#231;&#227;o. Um pouco de concorr&#234;ncia nunca fez mal na ind&#250;stria de software, vide o Firefox.&lt;/p&gt;
&lt;p&gt;A conclus&#227;o que se pode tirar dessas dicas &#233; que o consumidor quer liberdade para escolher seu equipamento e seu sistema operacional ou a falta dele.&lt;/p&gt;
&lt;p&gt;Fonte: &lt;a href="http://www.softwarelivre.org/news/8576"&gt; http://www.softwarelivre.org/news/8576&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Acho que finalmente vou poder comprar meu notebook da Dell sem pagar por um sistema que n&#227;o tenho interesse algum em usar.&lt;/p&gt;
&lt;p&gt;Independente de ser cobrada ou n&#227;o uma taxa pela configura&#231;&#227;o do Linux no notebook, essa mudan&#231;a, junto com programas como o PC para Todos(j&#225; nem lembro mais o nome atual do programa), iniciativas de governos e prefeituras na ado&#231;&#227;o de software livre e at&#233; mesmo o acordo entre a Microsoft e a Suse(apesar das desconfian&#231;as), sem d&#250;vida s&#227;o vit&#243;rias e uma demonstra&#231;&#227;o da abrang&#234;ncia que o Linux esta conseguindo no mercado e de que em breve as pessoas ter&#227;o uma op&#231;&#227;o realmente viav&#233;l e com todo o suporte necess&#225;rio para seus desktops.&lt;/p&gt;
&lt;p&gt;Abra&#231;o,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Mon, 26 Feb 2007 08:21:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/9</link>
      <guid>http://www.bluetux.com.br/blog/show/9</guid>
    </item>
    <item>
      <title>Banco de dados com todas as cidades do Brasil</title>
      <description>&lt;p&gt;Estava precisando de uma lista das cidades brasileiras para colocar no banco de dados
de um cliente, ent&#227;o comecei a pesquisar na internet sobre o assunto para tentar encontrar 
a lista mais completa poss&#237;vel.&lt;/p&gt;
&lt;p&gt;Foi ent&#227;o que encontrei no &lt;a href="http://www.ibge.gov.br"&gt;site do IBGE&lt;/a&gt; v&#225;rias informa&#231;&#245;es 
interessantes, dentre elas o &lt;a href="http://www.ibge.gov.br/cidadesat/default.php"&gt;IBGE Cidades@&lt;/a&gt;, 
que &#233; uma lista "completa" das cidades brasileiras, s&#227;o &lt;b&gt;5564&lt;/b&gt; cidades cadastradas ao todo, n&#227;o sei se s&#227;o todas
mas pelo menos quase todas, existe tamb&#233;m dados sobre a popula&#231;&#227;o, economia, educa&#231;&#227;o de todas elas, dentre 
outras informa&#231;&#245;es.&lt;/p&gt;
&lt;p&gt;&#201; sem d&#250;vida a melhor lista para acesso livre, &#243;tima para estudantes ou profissionais que necessitem 
de informa&#231;&#245;es sobre uma determinada regi&#227;o do nosso Pa&#237;s.&lt;/p&gt;
&lt;p&gt;Agora voltando ao assunto do Banco de dados, apesar de toda essa informa&#231;&#227;o dispon&#237;vel, ela n&#227;o estava de uma forma
mastigada para o meu prop&#243;sito, ent&#227;o tive que botar a m&#227;o na massa para conseguir meu objetivo, e agora disponibilizo
pra quem mais precisar, abaixo segue o link para download do &lt;b&gt;script SQL das tabelas de Estados e Cidades brasileiras&lt;/b&gt;
j&#225; nos padr&#245;es do Rails:&lt;/p&gt;
&lt;p&gt;Fa&#231;a o download: &lt;b&gt;&lt;a href="/files/bd_cidades.zip"&gt;bd_cidades.zip&lt;/a&gt; - 52Kb&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Est&#225; em formato &lt;b&gt;ZIP&lt;/b&gt; pra ningu&#233;m falar que estou discriminando quem usa aquele 
&lt;a href="http://desciclo.pedia.ws/wiki/Microsoft_Windows_Vista"&gt;sistema que n&#227;o posso dizer o nome&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bom este banco de dados junto com os posts anteriores  &lt;a href="http://www.bluetux.com.br/blog/show/4"&gt;"Populando combo com RubyonRails e Ajax"&lt;/a&gt;
e &lt;a href="http://www.bluetux.com.br/blog/show/6"&gt;"Populando combo com PHP e Ajax"&lt;/a&gt; formam uma combina&#231;&#227;o perfeita.&lt;/p&gt;
&lt;p&gt;Abra&#231;o,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;</description>
      <pubDate>Fri, 23 Feb 2007 09:20:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/8</link>
      <guid>http://www.bluetux.com.br/blog/show/8</guid>
    </item>
    <item>
      <title>C&#225;lculos e convers&#245;es de mo&#233;das no Google</title>
      <description>&lt;p&gt;Minhas irm&#227;s moram na &lt;a href="http://pt.wikipedia.org/wiki/%C3%81frica_do_Sul"&gt;&#193;frica do Sul&lt;/a&gt; e vivem me perguntando
a cota&#231;&#227;o do Dollar aqui para poderem converter para &lt;b&gt;Rands (mo&#233;da local)&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Ent&#227;o nas minhas andan&#231;as pela internet descobri a seguinte fun&#231;&#227;o do
&lt;a href="http://www.google.com"&gt;Google&lt;/a&gt;, j&#225; sabia que existia o &lt;b&gt;Google Calc&lt;/b&gt;, mas nunca 
tinha testado.&lt;/p&gt;

&lt;p&gt;Al&#233;m da calculadora normal que todos j&#225; podemos imaginar como funciona, o Google Calc 
converte mo&#233;das, dentre outras coisas.&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/blog/ggcalc.png" border="0"/&gt;&lt;/p&gt;

&lt;p&gt;Realmente fiquei surpreso, espero ajudar as minhas irm&#227;s e quem mais precisar, talvez
assim elas n&#227;o precisem mais ficar me perguntando o cota&#231;&#227;o do Dollar &lt;b&gt;:-D&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Outras opera&#231;&#245;es que podem ser feitas:&lt;/p&gt;

&lt;pre class="code"&gt;
Real in Rands
&gt;&gt; 1 Brazil real = 3.41040545 South African rands

Real in Dollar
&gt;&gt; 1 Brazil real = 0.47644004 U.S. dollar

50 Real in Yen
&gt;&gt; 50 Brazil real = 2 893.65858 Japanese yen

currency of Brazil in Malaysian money
&gt;&gt; 1 Brazil real = 1.66453857 Malaysian ringgits
&lt;/pre&gt;&lt;br/&gt;

&lt;p&gt;Hehe achei muito legal!!!&lt;br/&gt;T&#225; bom, t&#225; bom, ai v&#227;o alguns exemplos da Calculadora tamb&#233;m:&lt;/p&gt;

&lt;pre class="code"&gt;
7+(4*5)
&gt;&gt; 7 + (4 * 5) = 27

sqrt(-4)
&gt;&gt; sqrt(-4) = 2 i

# Esse achei legal muito &#250;til pra donas de casa :-D
half a cup in teaspoons
&gt;&gt; half (1 US cup) = 24 US teaspoons

G*(6e24 kg)/(4000 miles)^2
&gt;&gt; (G * (6e24 kg)) / ((4 000 miles)^2) = 9.66172389 m / s2
&lt;/pre&gt;&lt;br/&gt;

&lt;p&gt;Pra quem tiver curiosidade do poder do Google Calc, mais informa&#231;&#245;es 
&lt;a href="http://www.google.com/intl/pt-BR/help/features.html#calculator"&gt;aqui&lt;/a&gt; e 
&lt;a href="http://www.google.com/help/calculator.html"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Abra&#231;o,&lt;br/&gt;Alfredo Ribeiro&lt;/p&gt;
</description>
      <pubDate>Mon, 19 Feb 2007 10:22:00 -0800</pubDate>
      <link>http://www.bluetux.com.br/blog/show/7</link>
      <guid>http://www.bluetux.com.br/blog/show/7</guid>
    </item>
    <item>
      <title>Ajude a