<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>{ Raciocínio Lateral }</title><link>http://raciocinio-lateral.jonhnnyweslley.net/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RaciocinioLateralBlogSpot" /><description>NÃO ENTRE EM PÂNICO</description><language>en</language><managingEditor>noreply@blogger.com (Jonhnny Weslley)</managingEditor><lastBuildDate>Thu, 16 Feb 2012 10:06:12 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">4</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="raciociniolateralblogspot" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>RaciocinioLateralBlogSpot</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FRaciocinioLateralBlogSpot" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/RaciocinioLateralBlogSpot" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FRaciocinioLateralBlogSpot" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><item><title>Gráficos de barras com intervalo de confiança em R</title><link>http://feedproxy.google.com/~r/RaciocinioLateralBlogSpot/~3/TPozKO_jlaU/graficos-de-barras-com-intervalo-de.html</link><category>dica</category><category>r</category><author>noreply@blogger.com (Jonhnny Weslley)</author><pubDate>Mon, 27 Dec 2010 11:27:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2613435179759247813.post-4688715721267666921</guid><description>&lt;p&gt;Ontem, precisei criar um gráfico de barras com intervalo de confiança decente. Resolvi usar &lt;a href="http://www.r-project.org/" title="The R Project for Statistical Computing"&gt;R&lt;/a&gt;. Problema: pouco conhecimento de R. Para evitar que você passe mesmo aperto, vou mostrar aqui como fiz.&lt;/p&gt;
&lt;h2&gt;Contextualizando&lt;/h2&gt;
&lt;p&gt;Estava comparando dois &lt;em&gt;softwares&lt;/em&gt;, chamarei-os de &lt;em&gt;A&lt;/em&gt; e &lt;em&gt;B&lt;/em&gt;. Cada uma deles, foi submetido a uma série de experimentos em quatro cenários distintos. No fim dos experimentos, produzi um arquivo com os valores das médias e dos intervalos de confiança tanto para &lt;em&gt;A&lt;/em&gt; quanto para &lt;em&gt;B&lt;/em&gt; nos quatro cenários. O arquivo tinha o seguinte formato:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="n"&gt;AICI&lt;/span&gt; &lt;span class="n"&gt;AICS&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt; &lt;span class="n"&gt;BICI&lt;/span&gt; &lt;span class="n"&gt;BICS&lt;/span&gt;
&lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;
&lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt; &lt;span class="mi"&gt;95&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt; &lt;span class="mi"&gt;82&lt;/span&gt;
&lt;span class="mi"&gt;120&lt;/span&gt; &lt;span class="mi"&gt;115&lt;/span&gt; &lt;span class="mi"&gt;125&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="mi"&gt;86&lt;/span&gt; &lt;span class="mi"&gt;94&lt;/span&gt;
&lt;span class="mi"&gt;150&lt;/span&gt; &lt;span class="mi"&gt;145&lt;/span&gt; &lt;span class="mi"&gt;155&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="mi"&gt;110&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Onde cada linha representa os valores de um determinado cenário, com exceção da primeira linha (representa o nome das colunas). Enquanto as colunas seguem a seguinte definição:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coluna A: Os valores das médias de &lt;em&gt;A&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Coluna AICI: Os intervalos de confiança inferior de &lt;em&gt;A&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Coluna AICS: Os intervalos de confiança superior de &lt;em&gt;A&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Coluna B: Os valores das médias de &lt;em&gt;B&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Coluna BICI: Os intervalos de confiança inferior de &lt;em&gt;B&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Coluna BICS: Os intervalos de confiança superior de &lt;em&gt;B&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Assim, o script R abaixo resolveu o problema:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;library&lt;span class="p"&gt;(&lt;/span&gt;gplots&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# carrega o arquivo com os dados&lt;/span&gt;
data &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; read.table&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;results.dat&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; header&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k-Variable"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; sep&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# nome do arquivo .png onde o gráfico será plotado&lt;/span&gt;
png&lt;span class="p"&gt;(&lt;/span&gt;filename&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;results-barplot.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; bg&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# auto-descritivo&lt;/span&gt;
legenda &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Cenário 1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Cenário 2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Cenário 3&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Cenário 4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
cores &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;lightblue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;mistyrose&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;lightcyan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;lavender&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# crio uma matriz com 2 colunas: médias de A e B, respectivamente.&lt;/span&gt;
medias &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; as.matrix&lt;span class="p"&gt;(&lt;/span&gt;data&lt;span class="p"&gt;[,&lt;/span&gt; c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;

&lt;span class="c1"&gt;# crio uma matriz com 2 colunas:&lt;/span&gt;
&lt;span class="c1"&gt;# intervalos de confiança inferior de A e B, respectivamente.&lt;/span&gt;
ic.inferior &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; as.matrix&lt;span class="p"&gt;(&lt;/span&gt;data&lt;span class="p"&gt;[,&lt;/span&gt; c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;

&lt;span class="c1"&gt;# crio uma matriz com 2 colunas:&lt;/span&gt;
&lt;span class="c1"&gt;# intervalos de confiança superior de A e B, respectivamente.&lt;/span&gt;
ic.superior &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; as.matrix&lt;span class="p"&gt;(&lt;/span&gt;data&lt;span class="p"&gt;[,&lt;/span&gt; c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;

&lt;span class="c1"&gt;# Importante: As matrizes criadas acima (medias, ic.inferior e ic.superior)&lt;/span&gt;
&lt;span class="c1"&gt;# precisam ter as mesmas dimensões.&lt;/span&gt;

barplot2&lt;span class="p"&gt;(&lt;/span&gt;medias&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# A matriz a ser plotada&lt;/span&gt;
  beside&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Plota as barras lado-a-lado&lt;/span&gt;
  col&lt;span class="o"&gt;=&lt;/span&gt;cores&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# As cores das barras&lt;/span&gt;
  legend&lt;span class="o"&gt;=&lt;/span&gt;legenda&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# A legenda&lt;/span&gt;
  ylim&lt;span class="o"&gt;=&lt;/span&gt;c&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;# O limite máximo do eixo y&lt;/span&gt;
  main&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;A x B&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Titulo principal&lt;/span&gt;
  ylab&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Valor&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Label do eixo y&lt;/span&gt;
  plot.ci&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# TRUE, deve-se plotar os intervalos de confiança&lt;/span&gt;
  ci.l&lt;span class="o"&gt;=&lt;/span&gt;ic.inferior&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# A matriz dos limites inferiores dos intervalos de confiança&lt;/span&gt;
  ci.u&lt;span class="o"&gt;=&lt;/span&gt;ic.superior&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# A matriz dos limites superiores dos intervalos de confiança&lt;/span&gt;
  font.main&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; cex.axis&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; cex.lab&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; cex.names&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt; &lt;span class="c1"&gt;# Firulas adicionais&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;E, o gráfico produzido foi este:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Gráficos de barras com intervalo de confiança em R" src="https://dl.dropbox.com/u/2624281/blogging/grafico_barras_ic_r.png" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2613435179759247813-4688715721267666921?l=raciocinio-lateral.jonhnnyweslley.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nCU3FzEdK5hUepvPGf4Z_x_I9OI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nCU3FzEdK5hUepvPGf4Z_x_I9OI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nCU3FzEdK5hUepvPGf4Z_x_I9OI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nCU3FzEdK5hUepvPGf4Z_x_I9OI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=TPozKO_jlaU:5YNzpIpUhAY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=TPozKO_jlaU:5YNzpIpUhAY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?i=TPozKO_jlaU:5YNzpIpUhAY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=TPozKO_jlaU:5YNzpIpUhAY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RaciocinioLateralBlogSpot/~4/TPozKO_jlaU" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-27T16:27:00.332-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://raciocinio-lateral.jonhnnyweslley.net/2009/11/graficos-de-barras-com-intervalo-de.html</feedburner:origLink></item><item><title>Brincando com números primos, usando Scala!</title><link>http://feedproxy.google.com/~r/RaciocinioLateralBlogSpot/~3/0F4csN-sQUo/brincando-com-numeros-primos-usando.html</link><category>scala</category><author>noreply@blogger.com (Jonhnny Weslley)</author><pubDate>Mon, 27 Dec 2010 11:17:34 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2613435179759247813.post-3763490358585201301</guid><description>&lt;p&gt;Nos últimos meses, tenho dedicado algum tempo para aprender &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;. Então, decidi que é chegada a hora de ajudar a divulgar esta excelente linguagem. Nada como um problema clássico para começar: calcular números primos utilizando o Crivo de Eratóstenes. Vale lembrar que o foco deste post não é mostrar como calcular números primos usando o Crivo de Eratóstenes, mas como fazê-lo em Scala. A imagem abaixo mostra como funciona o Crivo, mais informações sobre podem ser obtidas &lt;a href="http://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Crivo de Eratóstenes" src="http://upload.wikimedia.org/wikipedia/commons/c/c8/Animation_Sieve_of_Eratosth-2.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Fonte: &lt;a href="http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sem meias palavras, a solução COMPLETA é listada em seguida:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="n"&gt;primos&lt;/span&gt; &lt;span class="k"&gt;=&lt;/span&gt; &lt;span class="n"&gt;crivo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Stream&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="n"&gt;crivo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="k"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;&lt;span class="k"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="k"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cons&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;crivo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tail&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="k"&gt;_&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;}))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;Explicando&amp;#8230;&lt;/h3&gt;
&lt;p&gt;O código acima define duas funções: &lt;em&gt;primos&lt;/em&gt; e &lt;em&gt;crivo&lt;/em&gt;. A primeira, &lt;em&gt;primo&lt;/em&gt;, retorna uma lista de todos os números primos a partir de 2 &amp;#8212; mas não se preocupe, os números apenas serão calculados à medida que forem necessários, isto é possivel utilizando-se &lt;a href="http://www.scala-lang.org/docu/files/api/scala/Stream.html"&gt;Streams&lt;/a&gt;. A segunda, &lt;em&gt;crivo&lt;/em&gt;, executa a lógica do crivo. Utilizando Streams ela seleciona o primeiro elemento(que é primo) da lista de números passada como argumento e elimina/filtra todos os múltiplos do número selecionado da cauda da lista. Pelo que vc já deve ter percebido, Streams consistem de um elemento inicial, a cabeça da lista(&lt;em&gt;head&lt;/em&gt;), e uma lista representando os demais elementos, a cauda(&lt;em&gt;tail&lt;/em&gt;).&lt;/p&gt;
&lt;h3&gt;Playground!&lt;/h3&gt;
&lt;p&gt;Agora que temos uma lista de números primos, vamos usá-la para:&lt;/p&gt;
&lt;p&gt;Calcular e imprimir os &lt;code&gt;N&lt;/code&gt; primeiros números primos&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;primos&lt;/span&gt; &lt;span class="n"&gt;take&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="n"&gt;foreach&lt;/span&gt; &lt;span class="n"&gt;println&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Calcular e imprimir todos os números primos menores que 120 (como aparece na imagem acima)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;primos&lt;/span&gt; &lt;span class="n"&gt;takeWhile&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="k"&gt;_&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="n"&gt;foreach&lt;/span&gt; &lt;span class="n"&gt;println&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Calcular e imprimir o 100° número primo&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primos&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Calcular e imprimir do 100° ao 110° número primo&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;primos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;slice&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;110&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="n"&gt;foreach&lt;/span&gt; &lt;span class="n"&gt;println&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Há várias outras possibilidades. Veja documentação da classe &lt;a href="http://www.scala-lang.org/docu/files/api/scala/Stream.html"&gt;Stream&lt;/a&gt; e divirta-se!&lt;/p&gt;
&lt;p&gt;Até a próxima!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2613435179759247813-3763490358585201301?l=raciocinio-lateral.jonhnnyweslley.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RNNRA3bADPzWpiR8jwb12-HKu5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNNRA3bADPzWpiR8jwb12-HKu5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RNNRA3bADPzWpiR8jwb12-HKu5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNNRA3bADPzWpiR8jwb12-HKu5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=0F4csN-sQUo:NfRemEV8hNY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=0F4csN-sQUo:NfRemEV8hNY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?i=0F4csN-sQUo:NfRemEV8hNY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=0F4csN-sQUo:NfRemEV8hNY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RaciocinioLateralBlogSpot/~4/0F4csN-sQUo" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-27T16:17:34.086-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://raciocinio-lateral.jonhnnyweslley.net/2009/06/brincando-com-numeros-primos-usando.html</feedburner:origLink></item><item><title>Convertendo wav para mp3 em dois passos + 1</title><link>http://feedproxy.google.com/~r/RaciocinioLateralBlogSpot/~3/HbDOSnrzT08/convertendo-wav-para-mp3-em-dois-passos.html</link><category>dica</category><category>linux</category><category>wav</category><category>mp3</category><category>audio</category><author>noreply@blogger.com (Jonhnny Weslley)</author><pubDate>Mon, 27 Dec 2010 11:16:54 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2613435179759247813.post-5416876513799790813</guid><description>&lt;h3&gt;Passo 1&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;lame&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;Passo 2&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;for &lt;/span&gt;f in *.wav; &lt;span class="k"&gt;do &lt;/span&gt;lame --vbr-new -V 3  &lt;span class="s2"&gt;&amp;quot;$f&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;${f%.wav}.mp3&amp;quot;&lt;/span&gt;; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;Extra&lt;/h3&gt;
&lt;p&gt;Crie um script com a linha de comando acima. Precisarás dela novamente!:D &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2613435179759247813-5416876513799790813?l=raciocinio-lateral.jonhnnyweslley.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wmphKpz1FJhaJii2h4jDJ18LSww/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmphKpz1FJhaJii2h4jDJ18LSww/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wmphKpz1FJhaJii2h4jDJ18LSww/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmphKpz1FJhaJii2h4jDJ18LSww/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=HbDOSnrzT08:T4i4KgXs1GI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=HbDOSnrzT08:T4i4KgXs1GI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?i=HbDOSnrzT08:T4i4KgXs1GI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=HbDOSnrzT08:T4i4KgXs1GI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RaciocinioLateralBlogSpot/~4/HbDOSnrzT08" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-27T16:16:54.949-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://raciocinio-lateral.jonhnnyweslley.net/2009/05/convertendo-wav-para-mp3-em-dois-passos.html</feedburner:origLink></item><item><title>Dica Linux: Aumente sua produtividade ao usar o comando 'cd'</title><link>http://feedproxy.google.com/~r/RaciocinioLateralBlogSpot/~3/h8rv_lutqNA/dica-linux-aumente-sua-produtividade-ao.html</link><category>dica</category><category>linux</category><category>bash</category><category>cd</category><category>alias</category><author>noreply@blogger.com (Jonhnny Weslley)</author><pubDate>Mon, 27 Dec 2010 11:16:17 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2613435179759247813.post-7010195037760499484</guid><description>&lt;p&gt;Um dos comandos mais utilizados durante a utilização de um terminal Linux/Unix, sem dúvida, é o &lt;code&gt;cd&lt;/code&gt;. Para melhorar sua produtividade apresentarei alguns hacks para este comando.&lt;/p&gt;
&lt;h3&gt;1. Subindo na árvore de diretórios eficientemente com aliases&lt;/h3&gt;
&lt;p&gt;Navegar em uma estrutura de diretórios muito profunda é bastante cansativo. Imagine o trabalho de Shrek para voltar para o seu diretório &lt;code&gt;/home/shrek&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/distante $ cd ../&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="sr"&gt;/../&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="sr"&gt;/../&lt;/span&gt;&lt;span class="o"&gt;../..&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ao invés de executar &lt;code&gt;cd ../../../../../../..&lt;/code&gt; para subir na árvore de diretórios, adicione os seguintes aliases para o seu &lt;code&gt;~/.bashrc&lt;/code&gt; e reinicie o terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; ..&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..2&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..3&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../../..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..4&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../../../..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..5&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../../../../..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..6&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../../../../../..&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt; ..7&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cd ../../../../../../..&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Usando:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="err"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;2. Alternar entre os dois últimos diretórios&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;fotos&lt;/span&gt;&lt;span class="sr"&gt;/viagem/&lt;/span&gt;&lt;span class="n"&gt;reino&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;pwd&lt;/span&gt;
&lt;span class="sr"&gt;/home/s&lt;/span&gt;&lt;span class="n"&gt;hrek&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;
&lt;span class="n"&gt;shrek&lt;/span&gt;&lt;span class="nv"&gt;@pantano:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/fotos/&lt;/span&gt;&lt;span class="n"&gt;viagem&lt;/span&gt;&lt;span class="sr"&gt;/reino/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="sr"&gt;/tao/&lt;/span&gt;&lt;span class="n"&gt;tao&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;distante&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;3. Usar &lt;code&gt;shopt -s cdspell&lt;/code&gt; para corrigir automagicamente nomes de diretórios digitados errados&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;Docmentos&lt;/span&gt;
&lt;span class="n"&gt;bash:&lt;/span&gt; &lt;span class="n"&gt;cd:&lt;/span&gt; &lt;span class="n"&gt;Docmentos:&lt;/span&gt; &lt;span class="n"&gt;Arquivo&lt;/span&gt; &lt;span class="n"&gt;ou&lt;/span&gt; &lt;span class="n"&gt;diret&lt;/span&gt;&lt;span class="err"&gt;ó&lt;/span&gt;&lt;span class="n"&gt;rio&lt;/span&gt; &lt;span class="n"&gt;inexistente&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;shopt&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;cdspell&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;Docmentos&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc:&lt;/span&gt;&lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;Documentos&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;pwd&lt;/span&gt;
&lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Documentos&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Nota: &amp;#8220;Esqueci&amp;#8221; de digitar a letra &amp;#8216;u&amp;#8217; de &amp;#8216;Documentos&amp;#8217;!&lt;/p&gt;
&lt;h3&gt;4. Usando CDPATH ou como tornar o comando &lt;code&gt;cd&lt;/code&gt; promíscuo&lt;/h3&gt;
&lt;p&gt;A variável de ambiente CDPATH define o diretório base para o comando &lt;code&gt;cd&lt;/code&gt;, em outras palavras, você poderá navegar entre os diretórios sem especificar o diretório-pai.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;pwd&lt;/span&gt;
&lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;jonhnny&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;span class="n"&gt;bash:&lt;/span&gt; &lt;span class="n"&gt;cd:&lt;/span&gt; &lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x:&lt;/span&gt; &lt;span class="n"&gt;Arquivo&lt;/span&gt; &lt;span class="n"&gt;ou&lt;/span&gt; &lt;span class="n"&gt;diret&lt;/span&gt;&lt;span class="err"&gt;ó&lt;/span&gt;&lt;span class="n"&gt;rio&lt;/span&gt; &lt;span class="n"&gt;inexistente&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;export&lt;/span&gt; &lt;span class="n"&gt;CDPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sr"&gt;/local/&lt;/span&gt;&lt;span class="n"&gt;workspace&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc$&lt;/span&gt; &lt;span class="nv"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;span class="sr"&gt;/local/&lt;/span&gt;&lt;span class="n"&gt;workspace&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;span class="n"&gt;jonhnny&lt;/span&gt;&lt;span class="nv"&gt;@pc:&lt;/span&gt;&lt;span class="sr"&gt;/local/&lt;/span&gt;&lt;span class="n"&gt;workspace&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;pwd&lt;/span&gt;
&lt;span class="sr"&gt;/local/&lt;/span&gt;&lt;span class="n"&gt;workspace&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;projeto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Nota: Não foi preciso especificar o diretório-pai: &lt;code&gt;/local/workspace&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Gostou disto? Não?! Então ignore. Caso sim, exporte a variável CDPATH no seu &lt;code&gt;~/.bashrc&lt;/code&gt; e reinicie o terminal para usufruir deste hack:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CDPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;.:~:/local/workspace
&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2613435179759247813-7010195037760499484?l=raciocinio-lateral.jonhnnyweslley.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dt23hKRfUmLl6aHRHWUteMrvoQc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dt23hKRfUmLl6aHRHWUteMrvoQc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dt23hKRfUmLl6aHRHWUteMrvoQc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dt23hKRfUmLl6aHRHWUteMrvoQc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=h8rv_lutqNA:9qwdjSz1Wso:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=h8rv_lutqNA:9qwdjSz1Wso:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?i=h8rv_lutqNA:9qwdjSz1Wso:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?a=h8rv_lutqNA:9qwdjSz1Wso:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RaciocinioLateralBlogSpot?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RaciocinioLateralBlogSpot/~4/h8rv_lutqNA" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-27T16:16:17.110-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://raciocinio-lateral.jonhnnyweslley.net/2009/04/dica-linux-aumente-sua-produtividade-ao.html</feedburner:origLink></item></channel></rss>

