<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do PacMan &#187; Dicas</title>
	<atom:link href="http://pacman.blog.br/blog/category/dicas/feed/" rel="self" type="application/rss+xml" />
	<link>http://pacman.blog.br/blog</link>
	<description>Varias Coisas, por Tiago Peczenyj</description>
	<lastBuildDate>Thu, 15 Jul 2010 02:04:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Como saber se uma musica parou de tocar em html 5</title>
		<link>http://pacman.blog.br/blog/dicas/como-saber-se-uma-musica-parou-de-tocar-em-html-5/</link>
		<comments>http://pacman.blog.br/blog/dicas/como-saber-se-uma-musica-parou-de-tocar-em-html-5/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 23:58:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/como-saber-se-uma-musica-parou-de-tocar-em-html-5/</guid>
		<description><![CDATA[Anteriormente vimos como descobrir que uma musica parou de tocar em ActionScript 3. Hoje em dia temos uma quantidade interessante de browsers que suportam alguma coisa de html 5 (safari, chrome, firefox&#8230;), portanto nada mais justo que analisar também esta &#8230; <a href="http://pacman.blog.br/blog/dicas/como-saber-se-uma-musica-parou-de-tocar-em-html-5/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Anteriormente vimos como descobrir que uma musica parou de tocar em ActionScript 3. Hoje em dia temos uma quantidade interessante de browsers que suportam alguma coisa de html 5 (safari, chrome, firefox&#8230;), portanto nada mais justo que analisar também esta solução.</p>
<p>Vejamos como tocar o nosso jazz.mp3</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;audio id=&quot;mp3&quot; src=&quot;jazz.mp3&quot; type=&quot;audio/mpeg&quot; controls/&gt;</pre></div></div>

<p>Apenas esta tag vai gerar um pequeno player com controles customizados pelo browser. E como saber que a musica parou? Basta escutar pelo evento <strong>ended</strong></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> mp3 <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mp3'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
mp3.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ended'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;fim&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Para customizar os controles basta omitir o atributo <em>controls</em> na tag audio e usar os métodos play e pause, por exemplo.</p>
<p>Um bom exemplo pode ser encontrado aqui:<br />
<a href="http://ajaxian.com/archives/html5-media-support-video-and-audio-tags-and-scriptability">http://ajaxian.com/archives/html5-media-support-video-and-audio-tags-and-scriptability</a></p>
<p>E documentação sobre html 5 vc encontra aqui:<br />
<a href="http://www.w3schools.com/html5/html5_reference.asp">http://www.w3schools.com/html5/html5_reference.asp</a></p>
<p>A tag <em>video</em> segue a mesma idéia, mas será assunto para um próximo post.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/como-saber-se-uma-musica-parou-de-tocar-em-html-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como saber que uma musica acabou em actionscript</title>
		<link>http://pacman.blog.br/blog/dicas/como-saber-que-uma-musica-acabou-em-actionscript/</link>
		<comments>http://pacman.blog.br/blog/dicas/como-saber-que-uma-musica-acabou-em-actionscript/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 15:03:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/como-saber-que-uma-musica-acabou-em-actionscript/</guid>
		<description><![CDATA[Para fazer um tocador de mp3, por exemplo, em actionscript 3, basta vc criar uma instância da classe Sound e invocar os métodos load e play para carregar o arquivo e toca-lo, respectivamente. Porém como saber que a musica acabou? &#8230; <a href="http://pacman.blog.br/blog/dicas/como-saber-que-uma-musica-acabou-em-actionscript/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para fazer um tocador de mp3, por exemplo, em actionscript 3, basta vc criar uma instância da classe Sound e invocar os métodos load e play para carregar o arquivo e toca-lo, respectivamente.</p>
<p>Porém como saber que a musica acabou? A classe sound possui um listener para o evento COMPLETE porém isto é para completar o donwload da musica, não o final da mesma. E ai, comofas/</p>
<p>Simples: o método play retorna uma instância SoundChannel que, por sua vez, possui um listener para o evento SOUND_COMPLETE, logo bastaria fazer</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> snd<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sound</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sound</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
snd.<span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLRequest</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;jazz.mp3&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #6699cc; font-weight: bold;">var</span> channel<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">SoundChannel</span> = snd.<span style="color: #004993;">play</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
channel.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">SOUND_COMPLETE</span>, 
      soundCompleteHandler<span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> soundCompleteHandler<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span><span style="color: #000000;">&#123;</span>
  <span style="color: #3f5fbf;">/* insira aqui o que deve fazer quando a musica acabar */</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/como-saber-que-uma-musica-acabou-em-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brincando com a libavcodec e libavformat</title>
		<link>http://pacman.blog.br/blog/dicas/brincando-com-a-libavcodec-e-libavformat/</link>
		<comments>http://pacman.blog.br/blog/dicas/brincando-com-a-libavcodec-e-libavformat/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 19:19:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/?p=103</guid>
		<description><![CDATA[Um pequeno exemplo que detecta os codecs de dado arquivo de audio/vídeo. <a href="http://pacman.blog.br/blog/dicas/brincando-com-a-libavcodec-e-libavformat/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vou contar uma histórinha. Pesquisando sobre http streamming para iPhone eu cheguei ate <a href="http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/">esta</a> solução open source que utiliza, entre outras coisas, o ffmpeg. Eis que chego até este interessante trecho:</p>
<blockquote><p>If you are interested in how the segmenter works you can find out more on how to use libavformat at the following resources: <a href="http://www.inb.uni-luebeck.de/%7Eboehme/using_libavcodec.html">an older libavformat tutorial</a>, <a  href="http://www.cryptosystem.org/archives/2006/03/libavcodec-libavformat-sample-code/">some sample libavformat code</a>, <a  href="http://www.dranger.com/ffmpeg/">How to Write a Video Player in Less Than 1000 Lines</a>, and <a  href="http://web.me.com/dhoerl/Home/Tech_Blog/Entries/2009/1/22_Revised_avcodec_sample.c.html">more sample libavformat code</a>.</p></blockquote>
<p>Ora&#8230; não pensei duas vezes e cliquei no link sobre escrever um video player, curioso que sou. É um tutorial bem proveitoso,<br />
que ja dá frutos na primeira lição. Deixo aqui um pequeno exemplo que analisa arquivos de video e informa dados do codec de cada stream (audio, video e o que mais tiver la dentro).</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;libavcodec/avcodec.h&gt;</span>
<span style="color: #339933;">#include &lt;libavformat/avformat.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
   <span style="color: #993333;">char</span> buf<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">256</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
   AVFormatContext <span style="color: #339933;">*</span>pFormatCtx<span style="color: #339933;">;</span>
&nbsp;
   av_register_all<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>argv<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;analisando arquivo '%s'<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,*</span>argv<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>av_open_input_file<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pFormatCtx<span style="color: #339933;">,</span> <span style="color: #339933;">*</span>argv<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span> <span style="color: #339933;">||</span> 
	av_find_stream_info<span style="color: #009900;">&#40;</span>pFormatCtx<span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
		puts<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;nao foi possivel analisar este arquivo!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
     <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>pFormatCtx<span style="color: #339933;">-&gt;</span>nb_streams<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	avcodec_string<span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> pFormatCtx<span style="color: #339933;">-&gt;</span>streams<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span>codec<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>stream[%d]=%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>i<span style="color: #339933;">,</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Para compilar basta adicionar a libavcodec e a libavformat (apt-get nelas).</p>
<pre>gcc -lavformat -lavcodec -Wall a.c</pre>
<p>A execução é simples:</p>
<pre>
$ ./a.out *
analisando arquivo 'teste.bin'
	stream[0]=Video: wmv2, yuv420p, 320x240
	stream[1]=Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
</pre>
<p>Não apenas voltei a programar em C (que é uma delícia) como produzi um executavel bem enxuto (12 k) e util para determinar os codecs presentes em dado arquivo. Divertido. Vamos ver o que é possivel fazer agora.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/brincando-com-a-libavcodec-e-libavformat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quando o FakeWeb deu um grande susto pt 2: o changelog</title>
		<link>http://pacman.blog.br/blog/dicas/quando-o-fakeweb-deu-um-grande-susto-pt-2-o-changelog/</link>
		<comments>http://pacman.blog.br/blog/dicas/quando-o-fakeweb-deu-um-grande-susto-pt-2-o-changelog/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 21:35:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[FakeWeb]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/quando-o-fakeweb-deu-um-grande-susto-pt-2-o-changelog/</guid>
		<description><![CDATA[Como falei anteriormente, o FakeWeb nos deu susto. Olhando no CHANGELOG na versão que estavamos acostumados a usar o correto era fazer :string => &#8220;mensagem que veio no &#8216;body&#8217;&#8221; ,entretanto nas versões mais atuais isso foi substituido por :body => &#8230; <a href="http://pacman.blog.br/blog/dicas/quando-o-fakeweb-deu-um-grande-susto-pt-2-o-changelog/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Como falei <a href="/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/">anteriormente</a>, o FakeWeb nos deu susto. </p>
<p>Olhando no CHANGELOG na versão que estavamos acostumados a usar o correto era fazer :string => &#8220;mensagem que veio no &#8216;body&#8217;&#8221; ,entretanto nas versões mais atuais isso foi substituido por :body => &#8216;tcharam&#8217; &#8230; e é este exemplo que esta no site. Como isso quebra o backward compatibility, foi documentado no changelog mas passou despercebido. É claro que a versão mais antiga não vai funcionar que nem a nova.</p>
<p>Se tentassem executar os testes antigos no fakeweb 1.2.4 receberia<br />
esta exception:</p>
<blockquote><p>
Deprecation warning: FakeWeb&#8217;s :string option has been renamed to :body.<br />
Just replace :string with :body in your FakeWeb.register_uri calls.</p></blockquote>
<p>Este é um exemplo onde mudar a forma como utilizamos uma biblioteca ou qualquer software causam todo o tipo de problemas quando não prestamos atenção a todos os detalhes.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/quando-o-fakeweb-deu-um-grande-susto-pt-2-o-changelog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comportamento estranho do FakeWeb versões antigas</title>
		<link>http://pacman.blog.br/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/</link>
		<comments>http://pacman.blog.br/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 15:21:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[FakeWeb]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/</guid>
		<description><![CDATA[Ontem fomos surpreendidos por este comportamento estranho do FakeWeb (versões 1.2.2 e 1.2.3), de uma hora para a outra o corpo das requisições vinham como &#8220;&#8221; (vazio). irb&#40;main&#41;:001:0&#62; require 'rubygems' =&#62; true irb&#40;main&#41;:002:0&#62; require 'fakeweb' =&#62; true irb&#40;main&#41;:003:0&#62; FakeWeb.register_uri&#40;:get, 'http://google.com', &#8230; <a href="http://pacman.blog.br/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ontem fomos surpreendidos por este comportamento estranho do <a href="http://fakeweb.rubyforge.org/">FakeWeb</a> (versões 1.2.2 e 1.2.3), de uma hora para a outra o corpo das requisições vinham como &#8220;&#8221; (vazio).</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:001:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:002:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'fakeweb'</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:003:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> FakeWeb.<span style="color:#9900CC;">register_uri</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#996600;">'http://google.com'</span>, <span style="color:#ff3333; font-weight:bold;">:body</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'google'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#008000; font-style:italic;">#&lt;FakeWeb::Responder:0xb78290a8 @uri=&quot;http://google.com&quot;,</span>
<span style="color:#0066ff; font-weight:bold;">@options</span>=<span style="color:#006600; font-weight:bold;">&#123;</span>:body<span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;google&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#0066ff; font-weight:bold;">@method</span>=:get, <span style="color:#0066ff; font-weight:bold;">@times</span>=<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&gt;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:004:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> HTTParty.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://google.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:005:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> x = HTTParty.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://google.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:006:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> x.<span style="color:#9900CC;">code</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">200</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:007:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> x.<span style="color:#9900CC;">body</span>  <span style="color:#008000; font-style:italic;"># deveria vir 'google'</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;&quot;</span>
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:008:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">URI</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;http://google.com&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;&quot;</span>  <span style="color:#008000; font-style:italic;"># mesma coisa... :/</span></pre></div></div>

<p>Atualizando para versões mais recentes (como a 1.2.4) o problema acaba. Alguem mais passou por isso?</p>
<p>O FakeWeb é uma excelente ferramenta para testes reais onde dependemos da resposta de outros servidores. Ao inves de estabelecer uma comunicação real, que pode trazer outros tipos de problema de dificil detecção, simulamos a resposta para ver se o sistema se comporta de acordo com o esperado. </p>
<p>Sabe quando vc tem que testar se de 1, N, 0 elementos ou 404, essas coisas, e nem sempre vc pode forçar estas situações por ser complicado demais? Nesse ponto o FakeWeb é A ferramenta certa.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/comportamento-estranho-do-fakeweb-versoes-antigas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Não entendo o motivo pelo qual ainda ensinam pascal</title>
		<link>http://pacman.blog.br/blog/dicas/nao-entendo-o-motivo-pelo-qual-ainda-ensinam-pascal/</link>
		<comments>http://pacman.blog.br/blog/dicas/nao-entendo-o-motivo-pelo-qual-ainda-ensinam-pascal/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 00:17:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Awk]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/?p=95</guid>
		<description><![CDATA[Encontrei este exercicio em um forum de programação e informatica. Um tanto engenhoso, devo admitir, e é otimo para praticar diferentes linguagens de programação, que podem exercitar muitos paradigmas. Infelizmente o professor pediu para fazer em Pascal. o número 3025 &#8230; <a href="http://pacman.blog.br/blog/dicas/nao-entendo-o-motivo-pelo-qual-ainda-ensinam-pascal/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Encontrei este exercicio em um forum de programação e informatica. Um tanto engenhoso, devo admitir, e é otimo para praticar diferentes linguagens de programação, que podem exercitar muitos paradigmas. Infelizmente o professor pediu para fazer em Pascal.</p>
<blockquote><p>o número 3025 possui a seguinte caracteristica: 30+25=55 e 55*55=3025. Escreva um programa que escreva todas os números com quatro algarismos que possuem a citada características.</p></blockquote>
<p>Veja que solução elegante temos com ruby:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&gt;&gt;</span> <span style="color:#006600; font-weight:bold;">&#40;</span>1000..9999<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">find_all</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>x<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#40;</span>x<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">100</span><span style="color:#006600; font-weight:bold;">+</span>x<span style="color:#006600; font-weight:bold;">%</span>100<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">**</span><span style="color:#006666;">2</span> == x<span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2025</span>, <span style="color:#006666;">3025</span>, <span style="color:#006666;">9801</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>

<p>Entretanto tive a apelar para uma sujeira (alguem percebe?) na versão em haskell:</p>

<div class="wp_syntax"><div class="code"><pre class="haskell" style="font-family:monospace;">Prelude<span style="color: #339933; font-weight: bold;">&gt;</span> <span style="color: #06c; font-weight: bold;">import</span> List
<span style="color: #06c; font-weight: bold;">Prelude</span> List<span style="color: #339933; font-weight: bold;">&gt;</span> findIndices<span style="color: green;">&#40;</span>\x <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#40;</span><span style="color: green;">&#40;</span>x `<span style="font-weight: bold;">div</span>` <span style="color: red;">100</span><span style="color: green;">&#41;</span><span style="color: #339933; font-weight: bold;">+</span><span style="color: green;">&#40;</span>x `<span style="font-weight: bold;">mod</span>` <span style="color: red;">100</span><span style="color: green;">&#41;</span><span style="color: green;">&#41;</span><span style="color: #339933; font-weight: bold;">^</span><span style="color: red;">2</span> <span style="color: #339933; font-weight: bold;">==</span> x <span style="color: #339933; font-weight: bold;">&amp;&amp;</span> x <span style="color: #339933; font-weight: bold;">&gt;</span> <span style="color: red;">1000</span><span style="color: green;">&#41;</span><span style="color: green;">&#91;</span>0<span style="color: #339933; font-weight: bold;">..</span>9999<span style="color: green;">&#93;</span>
<span style="color: green;">&#91;</span><span style="color: red;">2025</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">3025</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">9801</span><span style="color: green;">&#93;</span></pre></div></div>

<p>Por fim, um simples &#8216;one liner&#8217; usando gawk</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1000</span> <span style="color: #000000;">9900</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gawk</span> <span style="color: #ff0000;">'(int($1/100) + $1%100) == sqrt($1){print}'</span>
<span style="color: #000000;">2025</span>
<span style="color: #000000;">3025</span>
<span style="color: #000000;">9801</span></pre></div></div>

<p>É claro que a solução esperada é algo como</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;math.h&gt;</span>
<span style="color: #339933;">#include  &lt;stdio.h&gt;</span>
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;=</span><span style="color: #0000dd;">9999</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">/</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span><span style="color:#800080;">100</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span>sqrt<span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Até ANSI C é mais elegante &#8211; sem flamewars por favor, afinal todos sabem o que são <a >programadores de verdade</a> <img src='http://pacman.blog.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/nao-entendo-o-motivo-pelo-qual-ainda-ensinam-pascal/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Sempre defina a forma de abertura de arquivos</title>
		<link>http://pacman.blog.br/blog/dicas/sempre-defina-a-forma-de-abertura-de-arquivos/</link>
		<comments>http://pacman.blog.br/blog/dicas/sempre-defina-a-forma-de-abertura-de-arquivos/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 21:26:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/sempre-defina-a-forma-de-abertura-de-arquivos/</guid>
		<description><![CDATA[Linguagens script tornam tudo muito facil. Codificar uma informação para base64, por exemplo, pode ser feito assim: require 'base64' data = &#34;Now is the time for all good coders\nto learn Ruby&#34; Base64.b64encode&#40;data&#41; Entretanto se vc quer processar o conteudo de &#8230; <a href="http://pacman.blog.br/blog/dicas/sempre-defina-a-forma-de-abertura-de-arquivos/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Linguagens script tornam tudo muito facil. Codificar uma informação para base64, por exemplo, pode ser feito assim:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">   <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'base64'</span>
   data = <span style="color:#996600;">&quot;Now is the time for all good coders<span style="color:#000099;">\n</span>to learn Ruby&quot;</span>
   <span style="color:#CC00FF; font-weight:bold;">Base64</span>.<span style="color:#9900CC;">b64encode</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Entretanto se vc quer processar o conteudo de um arquivo, vale um cuidado extra: definir a forma de abertura dos arquivos.</p>
<p>Por exemplo, eu posso fazer isso</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">   <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'base64'</span>
   data = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'imagem.jpg'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span>
   <span style="color:#CC00FF; font-weight:bold;">Base64</span>.<span style="color:#9900CC;">b64encode</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Se eu estou desenvolvendo no linux, para mim o resultado é coerente. Eu ficaria feliz (sem sacanagem) se fosse o caso de desenvolver um software que rodasse exclusivamente nesse sistema operacional. As vezes não é bem assim&#8230;</p>
<p>Ruby é um bom exemplo de uma linguagem que permite desenvolver software multi-plataforma, entretanto é muito facil atrapalhar o interpretador (afinal, quem nunca teve problema com uma referência a um arquivo &#8220;C:\xxx&#8221;?). No exemplo real que eu passei, bastaria informar o modo &#8216;rb&#8217; (r de read, b de binary) para o comando open que eu teria o mesmo comportamento em todas as plataformas.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">   <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'base64'</span>
   data = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'imagem.jpg'</span>,<span style="color:#996600;">'rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span>
   <span style="color:#CC00FF; font-weight:bold;">Base64</span>.<span style="color:#9900CC;">b64encode</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>É claro que este tipo de comportamento pode ser verificado através de uma suite de testes em todas as plataformas-alvo, entretanto vale de alerta para estudarmos um pouco as caracteristicas das apis e bibliotecas nas diferentes plataformas (não adianta, desenvolver software signfica estudar constantemente).</p>
<p>Para terminar, vejamos esta <a href="http://mail.python.org/pipermail/python-bugs-list/2006-April/032911.html">thread</a>:</p>
<blockquote><p>Summary: open should default to binary mode on windows</p>
<p>Initial Comment:<br />
On windows the open() function defaults to reading<br />
files in text mode.  To get a binary mode file I need<br />
to append a &#8220;b&#8221; to the mode string.  I think this is an<br />
unnessary platform inconsistency.  Twice now I&#8217;ve had<br />
hard to track down bugs because I was reading a file in<br />
text mode and should have been using binary.  This is a<br />
wart, IMO.</p></blockquote>
<p>Ou seja, muita gente, em diferentes linguagens, vai enfrentar o mesmo problema de achar que o open, pode padrão, vai abrir o arquivo em modo binario. A origem disso é <a href="http://www.felgall.com/cplus4.htm">antiga</a> e não vai desaparecer de uma hora para outra.</p>
<p>Por fim, vale lembrar que o conceito de &#8216;nova linha&#8217; é diferente de acordo com o sistema operacional, no unix é \n enquanto no windows é \r\n. Também é antigo e remonta a epoca de impressoras matriciais, DOS e por ai vai. É o tipo da coisa que, pela lei de murphy, vai sacanear a gente quando menos esperamos.</p>
<p>Obrigado ao <a href="http://rafaelspereira.wordpress.com">Rafael</a> por ter visto este detalhe comigo tarde da noite.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/sempre-defina-a-forma-de-abertura-de-arquivos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python é orientado à objetos. E bem orientado!</title>
		<link>http://pacman.blog.br/blog/dicas/python-e-orientado-a-objetos-e-bem-orientado/</link>
		<comments>http://pacman.blog.br/blog/dicas/python-e-orientado-a-objetos-e-bem-orientado/#comments</comments>
		<pubDate>Thu, 21 May 2009 15:46:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/python-e-orientado-a-objetos-e-bem-orientado/</guid>
		<description><![CDATA[Quem sabe alguma coisa de Ruby ja se deparou com algumas caracteristicas da linguagens, como a não existencia de tipos primitovos: tudo é objeto, incluindo o numero 1. Quando eu faço, em Ruby, algo como i = 1 + 2 &#8230; <a href="http://pacman.blog.br/blog/dicas/python-e-orientado-a-objetos-e-bem-orientado/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Quem sabe alguma coisa de Ruby ja se deparou com algumas caracteristicas da linguagens, como a não existencia de tipos primitovos: tudo é objeto, incluindo o numero 1.</p>
<p>Quando eu faço, em Ruby, algo como</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">i = <span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006666;">2</span></pre></div></div>

<p>estou fazendo, na verdade,</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">i = 1.<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#006666;">2</span> <span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Pois o 1 é um objeto da classe FixNum, que responde ao método + (simbolo de adição).</p>
<p>E no Python, sera que isso funciona? Na verdade a coisa é ligeiramente diferente!</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">i = <span style="color: #ff4500;">1</span> + <span style="color: #ff4500;">2</span></pre></div></div>

<p>é equivalente à</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">i = <span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__add__</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span></pre></div></div>

<p>É claro que vão falar:  puxa, eu tenho que colocar os parentesis ao redor do 1 para invocar um método (que não tem o mesmo nome do operador + e sim algo bizarro como __XPTO__). Isso se deve à como o interpretador funciona, que vê o primeiro &#8216;.&#8217; apos um numero como o delimitador da parte inteira da parte não-inteira.</p>
<p>É possivel, então, fazer a mesma coisa que eu faço com Ruby de duas formas:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">i = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__add__</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># ou </span>
i = 1.0.<span style="color: #0000cd;">__add__</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Percebam o 1.0.metodo tinhoso ali: eu estou invocando um método do objeto 1.0 &#8211; da mesma forma que o Ruby ou outras linguagens totalmente OO &#8211; apenas a sintaxe difere um pouco.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/python-e-orientado-a-objetos-e-bem-orientado/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scrum na globo.com &#8211; derrubando mitos</title>
		<link>http://pacman.blog.br/blog/dicas/scrum-na-globocom-derrubando-mitos/</link>
		<comments>http://pacman.blog.br/blog/dicas/scrum-na-globocom-derrubando-mitos/#comments</comments>
		<pubDate>Sat, 09 May 2009 22:49:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[globo.com]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/?p=84</guid>
		<description><![CDATA[Excelente apresentação do Danilo Bardusco sobre Scrum na globo.com Scrum na Globo.com &#8211; Derrubando mitos &#8211; UPDATED View more presentations from Danilo Bardusco. É a globo.com destilando o Scrum para todo   Brasil!]]></description>
			<content:encoded><![CDATA[<p>Excelente apresentação do <a href="http://blog.bardusco.com/">Danilo Bardusco</a> sobre Scrum na globo.com<br />
<img style="visibility: hidden; width: 0px; height: 0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNDE5MDkwNDU2MjUmcHQ9MTI*MTkwOTE*NzkyMSZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJnQ9Jm89OWY5MzcxMjQ5MmIzNGUxNWFjM2ZiNmVkZjI*YjI2ZjYmb2Y9MA==.gif" border="0" alt="" width="0" height="0" /></p>
<div id="__ss_691302" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Scrum na Globo.com - Derrubando mitos - UPDATED" href="http://www.slideshare.net/bardusco/scrum-na-globocom-derrubando-mitos-updated-presentation?type=presentation">Scrum na Globo.com &#8211; Derrubando mitos &#8211; UPDATED</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrum-na-globocom-derrubando-mitos-falandoemagile2008-1224958613601712-9&amp;stripped_title=scrum-na-globocom-derrubando-mitos-updated-presentation" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrum-na-globocom-derrubando-mitos-falandoemagile2008-1224958613601712-9&amp;stripped_title=scrum-na-globocom-derrubando-mitos-updated-presentation" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/bardusco">Danilo Bardusco</a>.</div>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">É a globo.com destilando o Scrum para todo   Brasil!</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/scrum-na-globocom-derrubando-mitos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Primeiro de Abril</title>
		<link>http://pacman.blog.br/blog/dicas/primeiro-de-abril/</link>
		<comments>http://pacman.blog.br/blog/dicas/primeiro-de-abril/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 20:14:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/dicas/primeiro-de-abril/</guid>
		<description><![CDATA[Ano passado eu poste, inocentemente, que Java 1.7 iria ter ponteiros. E muita gente acreditou. Meses depois dessa postagem eu ainda recebia emails perguntando detalhes ou via em outros foruns gente desesperada (ou maravilhada) com essa feature. Decidi não postar &#8230; <a href="http://pacman.blog.br/blog/dicas/primeiro-de-abril/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ano passado eu poste, inocentemente, que <a href="http://peczenyj.blogspot.com/2008/04/java-17-vai-ter-ponteiros.html">Java 1.7 iria ter ponteiros</a>. E muita gente acreditou. Meses depois dessa postagem eu ainda recebia emails perguntando detalhes ou via em outros foruns gente desesperada (ou maravilhada) com essa <i>feature</i>.</p>
<p>Decidi não postar nenhuma pegadinha. De fato existe uma proposta de ter algo como os blocos <i>unsafe</i> do C# em java (<a href="http://tech.puredanger.com/2008/05/09/javaone-g1-garbage-collector"> veja aqui</a>) mas nada confirmado.</p>
<p>Bom primeiro de abril para todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/dicas/primeiro-de-abril/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
