<?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>Direto e Fácil</title>
	<atom:link href="http://www.diretoefacil.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diretoefacil.com.br</link>
	<description>Não tem que ser difícil.</description>
	<lastBuildDate>Tue, 20 Dec 2011 15:54:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Jogo Fuga Animal já na App Store</title>
		<link>http://www.diretoefacil.com.br/2011/12/19/jogo-fuga-animal-ja-na-app-store/</link>
		<comments>http://www.diretoefacil.com.br/2011/12/19/jogo-fuga-animal-ja-na-app-store/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 16:55:05 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[crianças]]></category>
		<category><![CDATA[fuga animal]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[kids game]]></category>
		<category><![CDATA[store]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=278</guid>
		<description><![CDATA[Gostaria de anunciar  lançamento do jogo Fuga Animal para iOS desenvolvido pela empresa brasileira Spark Lab. É um jogo bem divertido, que lembra o famoso &#8220;Onde está o Wally?&#8221;, só que neste caso você precisa ajudar um fazendeiro a encontrar (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/12/19/jogo-fuga-animal-ja-na-app-store/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Gostaria de anunciar  lançamento do jogo Fuga Animal para iOS desenvolvido pela empresa brasileira <a href="http://www.sparklab.com.br" target="_blank">Spark Lab</a>.</p>
<p>É um jogo bem divertido, que lembra o famoso &#8220;Onde está o Wally?&#8221;, só que neste caso você precisa ajudar um fazendeiro a encontrar os animais que fugiram da fazenda.</p>
<p>Segue o link do jogo na App Store:</p>
<p><a href="http://itunes.apple.com/br/app/fuga-animal/id484596711?mt=8"><img class="aligncenter" title="Ícone Fuga Animal" src="http://farm8.staticflickr.com/7028/6538481789_caf43d9b26_m.jpg" alt="" width="240" height="240" /></a></p>
<p><iframe width="640" height="480" class="aligncenter" src="http://www.youtube.com/embed/MI90Ecptr-E" frameborder="0" allowfullscreen></iframe></p>
<p>Abraços,</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/12/19/jogo-fuga-animal-ja-na-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jogo Face Shadow para iPhone</title>
		<link>http://www.diretoefacil.com.br/2011/08/24/jogo-face-shadow-para-iphone/</link>
		<comments>http://www.diretoefacil.com.br/2011/08/24/jogo-face-shadow-para-iphone/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 23:01:24 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[face shadow]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[quiz]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=272</guid>
		<description><![CDATA[Gostaria de divulgar aqui mais uma aplicação que eu e o pessoal da Spark Lab criamos. É o Face Shadow, é um joguinho divertido onde você tem que adivinhar de qual personagem é a sombra que aparece na tela. Existem (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/08/24/jogo-face-shadow-para-iphone/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Gostaria de divulgar aqui mais uma aplicação que eu e o pessoal da Spark Lab criamos. É o Face Shadow, é um joguinho divertido onde você tem que adivinhar de qual personagem é a sombra que aparece na tela.</p>
<p>Existem 4 mundos: Desenhos, Cinema, Música e Esportes, você precisa ir acertando para liberar os mundos, seguem alguns screenshots&#8230;</p>
<p><a href="http://itunes.apple.com/us/app/face-shadow/id436655772?mt=8"><img class="aligncenter" title="Face Shadow" src="http://c1345842.cdn.cloudfiles.rackspacecloud.com/assets/screenshots/images/004/123/160/original.jpg?1313487439" alt="" width="320" height="480" /></a></p>
<p><a href="http://itunes.apple.com/us/app/face-shadow/id436655772?mt=8"><img class="aligncenter" title="Face Shadow" src="http://c1345842.cdn.cloudfiles.rackspacecloud.com/assets/screenshots/images/004/123/161/original.jpg?1313487441" alt="" width="320" height="480" /></a></p>
<p>É isso pessoal, está de graça na AppStore, segue o link:</p>
<div class="wp-caption aligncenter" style="width: 110px"><a href="http://itunes.apple.com/us/app/face-shadow/id436655772?mt=8"><img title="Face Shadow" src="http://c1345842.cdn.cloudfiles.rackspacecloud.com/assets/apps/icons/000/762/076/original.png?1313487415" alt="" width="100" height="100" /></a><p class="wp-caption-text">App Store</p></div>
<p>Abraços !!!!</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/08/24/jogo-face-shadow-para-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MacFUSE NTFS-3g no Lion</title>
		<link>http://www.diretoefacil.com.br/2011/07/21/macfuse-ntfs-3g-no-lion/</link>
		<comments>http://www.diretoefacil.com.br/2011/07/21/macfuse-ntfs-3g-no-lion/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 22:48:33 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[MacFUSE]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[NTFS-3g]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=265</guid>
		<description><![CDATA[Se você, assim como eu, atualizou seu sistema operacional para o Mac OS X 10.7 Lion e teve problemas de montar aquele seu HD externo, que utiliza NTFS como sistema de arquivos, aqui existe uma solução. Como o autor do (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/07/21/macfuse-ntfs-3g-no-lion/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://www.gizmodo.com.br/files/2011/07/MacOSX_Lion.jpg" alt="" width="600" height="323" /></p>
<p>Se você, assim como eu, atualizou seu sistema operacional para o Mac OS X 10.7 Lion e teve problemas de montar aquele seu HD externo, que utiliza NTFS como sistema de arquivos, <a href="http://www.offthehill.org/articles/2010/12/31/macfuse-for-64-bit-snow-leopard/" target="_blank">aqui</a> existe uma solução.</p>
<p>Como o autor do link sugere você pode compilar o código do MacFUSE modificado pela Tuxera e gerar o pacote para instalação, ou utilizar o pacote que ele compilou e está disponibilizando.</p>
<h1>Pacote Compilado</h1>
<p><span style="line-height: 23px; font-weight: normal;">Segue o <a href="http://www.offthehill.org/wp-content/uploads/2010/12/macfuse-core-10.5-2.1.9.zip">link</a>, b</span><span style="line-height: 23px; font-weight: normal;">asta instalar o pkg.</span></p>
<h2></h2>
<h1>Compilando</h1>
<p><span style="line-height: 23px; font-weight: normal;">Segue o fonte: <a href="http://www.tuxera.com/mac/macfuse-rebel-2.1.9-src.tar.bz2">link (Tuxera)</a></span></p>
<h3></h3>
<p>Para compilar o fonte, com o XCode instalado, basta realizar os comandos abaixo:</p>
<pre>$ cd macfuse-rebel-2.1.9
$ cd core
$ ./macfuse_buildtool.sh -t smalldist</pre>
<p>Pronto, depois de gerado o pkg é só instalá-lo.</p>
<p>É isso, abraços&#8230;</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/07/21/macfuse-ntfs-3g-no-lion/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Ruby sem rails</title>
		<link>http://www.diretoefacil.com.br/2011/07/06/ruby-sem-rails/</link>
		<comments>http://www.diretoefacil.com.br/2011/07/06/ruby-sem-rails/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 03:34:42 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sinatra]]></category>
		<category><![CDATA[diversos]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=260</guid>
		<description><![CDATA[Tem um tempo que eu estou querendo escrever algo sobre esse assunto, o meu tempo anda meio escasso, mas motivado por um kaizen que participei com meus amigos de trabalho hoje, arranjei um tempinho para compartilhar algumas ideias, mas chega (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/07/06/ruby-sem-rails/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://3.bp.blogspot.com/-O9ujJ6UjAec/TZJKnVBt8fI/AAAAAAAAAQU/F2RXRHA1QDI/s1600/martelo+comum.jpg" title="Martelo" class="aligncenter" width="350" height="350" /><br />
Tem um tempo que eu estou querendo escrever algo sobre esse assunto, o meu tempo anda meio escasso, mas motivado por um kaizen que participei com meus amigos de trabalho hoje, arranjei um tempinho para compartilhar algumas ideias, mas chega de conversinha e vamos ao assunto!</p>
<p>O Rails é sem dúvida uma das melhores coisas que aconteceu no mundo do desenvolvimento web, mudou conceitos, quebrou paradigmas e vem sendo copiado por todos os lados (grails, cakephp, .net mvc, etc&#8230;) mas o melhor de tudo, o maior benefício que o rails nos trouxe, pelo menos na minha visão, foi expor ao mundo, a até então, desconhecida linguagem Ruby.</p>
<p>Desde então o ruby ganhou notoriedade, muita coisa legal foi feita em ruby, milhares de gems, e hoje temos a condição de usar ruby pra quase tudo.</p>
<p>Mas é interessante ver como muita gente ainda acopla e até condiciona o uso do ruby somente ao rails, esquecendo de projetos como:</p>
<ul>
<li><a href="http://www.sinatrarb.com/">http://www.sinatrarb.com</a></li>
<li><a href="http://rack.rubyforge.org/">http://rack.rubyforge.org</a></li>
<li><a href="http://www.padrinorb.com/">http://www.padrinorb.com</a></li>
<li><a href="http://www.merbivore.com/">http://www.merbivore.com</a></li>
<li><a href="http://github.com/daddye/forever">http://github.com/daddye/forever</a></li>
<li><a href="http://ramaze.net/">http://ramaze.net</a></li>
<li><a href="http://camping.rubyforge.org/">http://camping.rubyforge.org</a></li>
</ul>
<p>É claro que o rails tem seus meritos, e é normal que ele seja sempre o primeiro a vir a mente, mas tenho percebido que de um tempo pra cá o rails se tornou o martelo de muita gente,  logo, todos os problemas viraram pregos.</p>
<p>Tenho olhado o sinatra de perto faz algum tempo e to começando a &#8220;brincar&#8221; com padrino, e se você chegou até aqui na leitura deste post, gostaria de te desafiar a pensar nisso, será que o rails tem sido o seu martelo? Se sim, que tal tentar trocar de ferramenta? opções não faltam, fica o desafio. </p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/07/06/ruby-sem-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeiro App: Beer Check</title>
		<link>http://www.diretoefacil.com.br/2011/06/23/primeiro-app-beer-check/</link>
		<comments>http://www.diretoefacil.com.br/2011/06/23/primeiro-app-beer-check/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 21:42:27 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=255</guid>
		<description><![CDATA[Finalmente, depois de algum tempo e algumas reviravoltas, eu e o pessoal da SparkLab estamos lançando nosso primeiro aplicativo na App Store, o Beer Check !!! É um aplicativo que pode ser bastante útil e informativo durante aquela saída para (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/06/23/primeiro-app-beer-check/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Finalmente, depois de algum tempo e algumas reviravoltas, eu e o pessoal da SparkLab estamos lançando nosso primeiro aplicativo na App Store, o Beer Check !!!</p>
<p>É um aplicativo que pode ser bastante útil e informativo durante aquela saída para um bar. Você fornece informações básicas do ambiente, como quantas pessoas, o tamanho das cervejas, o preço, e etc, e partir daí você entra no modo para beber e vai marcando quantas cervejas vão sendo trazidas. No final, sem aquela dor de cabeça de sempre na hora de tachar, o aplicativo te fala quanto que deu para cada pessoa, além de curiosidades como quantos litros foram bebidos, quantos litros por hora foram bebidos, calorias consumidas, etc.</p>
<p>Confiram !</p>
<p><a href="http://itunes.apple.com/us/app/beer-check/id440492603">Beer Check na App Store</a></p>
<p><a href="http://itunes.apple.com/us/app/beer-check/id440492603" title="Beer Check Icon by brunomilare, on Flickr"><img src="http://farm6.static.flickr.com/5318/5864212743_d3f2b874df_m.jpg" width="195" height="193" alt="Beer Check Icon"></a></p>
<p>Valeu !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/06/23/primeiro-app-beer-check/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone: Áudios à vontade</title>
		<link>http://www.diretoefacil.com.br/2011/04/21/iphone-audios-a-vontade/</link>
		<comments>http://www.diretoefacil.com.br/2011/04/21/iphone-audios-a-vontade/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 04:43:53 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Música]]></category>
		<category><![CDATA[Sons]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=244</guid>
		<description><![CDATA[Fazendo uma pesquisa rápida de como tocar sons em uma aplicação de iPhone encontrei um tutorial muito simples que funcionou &#8216;quase&#8217; como eu gostaria. A biblioteca utilizada nesse tutorial foi a AVAudioPlayer, e me pareceu bastante simples executar um único (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/04/21/iphone-audios-a-vontade/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Fazendo uma pesquisa  rápida de como tocar sons em uma aplicação de iPhone encontrei um <a href="http://mobileorchard.com/easy-audio-playback-with-avaudioplayer/">tutorial</a> muito simples que funcionou &#8216;quase&#8217; como eu gostaria. </p>
<p>A biblioteca utilizada nesse tutorial foi a AVAudioPlayer, e me pareceu bastante simples executar um único som, o problema é que eu gostaria de algo mais abrangente e dinâmico, eu queria um player de audio que executasse qualquer som com apenas um método, que gerenciasse meus arquivos de som, e não carregasse eles novamente, caso já tivessem sido tocados. Com essa ideia na cabeça eu criei a classe AudioPlayer.</p>
<p>Com um objeto dessa classe instaciado ele atuará como o nome já diz, como um player de áudio, você pode escolher o som que vai tocar, ele verifica se o arquivo já foi tocado anteriormente, se já, só reproduz, se não coloca ele na lista, enfim, gerencia os audios de sua aplicação.</p>
<h2>Criando o AudioPlayer</h2>
<p>Antes de mais nada é preciso adicionar o AVFoundation framework em sua aplicação, no XCode4 faça:</p>
<blockquote><p>
1. Na árvore de arquivos clique no seu projeto.<br />
2. Na barra superior da janela central clique em <em>Build Phases</em>.<br />
3. Expanda o item <em>Link Binary With Libraries</em>.<br />
4. Clique no sinal de &#8216;+&#8217; e procure por <em>AVFoundation.framework</em><br />
5. Adicione o framework ao seu projeto.
</p></blockquote>
<p>Como é uma classe bastante simples, vou colocar os códigos diretamente aqui.</p>
<p>Crie os arquivos AudioPlayer.h e AudioPlayer.m e coloque os respectivos códigos abaixo:</p>
<p><strong>AudioPlayer.h</strong></p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &lt;Foundation/Foundation.h&gt;</span><br />
<span style="color: #6e371a;">#import &lt;AVFoundation/AVAudioPlayer.h&gt;</span><br />
<br />
<span style="color: #a61390;">@class</span> AVAudioPlayer;<br />
<br />
<span style="color: #a61390;">@interface</span> AudioPlayer <span style="color: #002200;">:</span> <span style="color: #400080;">NSObject</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #400080;">NSMutableDictionary</span> <span style="color: #002200;">*</span>audioSlots;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>retain, nonatomic<span style="color: #002200;">&#41;</span> <span style="color: #400080;">NSMutableDictionary</span><span style="color: #002200;">*</span> audioSlots;<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> playFile<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename ofType<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> type nTimes<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSInteger<span style="color: #002200;">&#41;</span> times;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> stopPlayingFile<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> stopPlayingFilesLike<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> name;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span> isPlayingFile<span style="color: #002200;">:</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> muteAll;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> clearStoredAudios;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span> init;<br />
<br />
<span style="color: #a61390;">@end</span></div></div>
<p><strong>AudioPlayer.m</strong></p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &quot;AudioPlayer.h&quot;</span><br />
<span style="color: #a61390;">@implementation</span> AudioPlayer<br />
<span style="color: #a61390;">@synthesize</span> audioSlots;<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span> init<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>super init<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; audioSlots <span style="color: #002200;">=</span> &nbsp;<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableDictionary</span> alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> self;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> playFile<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename ofType<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> type nTimes<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSInteger<span style="color: #002200;">&#41;</span> times<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; AVAudioPlayer <span style="color: #002200;">*</span>currentSlot <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>audioSlots objectForKey<span style="color: #002200;">:</span>filename<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>currentSlot <span style="color: #002200;">==</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>filePath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSBundle</span> mainBundle<span style="color: #002200;">&#93;</span> pathForResource<span style="color: #002200;">:</span> filename ofType<span style="color: #002200;">:</span> type<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #400080;">NSURL</span> <span style="color: #002200;">*</span>fileURL <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSURL</span> alloc<span style="color: #002200;">&#93;</span> initFileURLWithPath<span style="color: #002200;">:</span>filePath<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; currentSlot <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>AVAudioPlayer alloc<span style="color: #002200;">&#93;</span> initWithContentsOfURL<span style="color: #002200;">:</span>fileURL error<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>audioSlots setObject<span style="color: #002200;">:</span>currentSlot forKey<span style="color: #002200;">:</span>filename<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>currentSlot prepareToPlay<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>fileURL release<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>currentSlot release<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; currentSlot.numberOfLoops <span style="color: #002200;">=</span> times;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>currentSlot play<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> stopPlayingFile<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; AVAudioPlayer <span style="color: #002200;">*</span>currentSlot <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>audioSlots objectForKey<span style="color: #002200;">:</span>filename<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>currentSlot <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>currentSlot stop<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span> isPlayingFile<span style="color: #002200;">:</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> filename<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; AVAudioPlayer <span style="color: #002200;">*</span>currentSlot <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>audioSlots objectForKey<span style="color: #002200;">:</span>filename<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>currentSlot <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">return</span> currentSlot.playing;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> <span style="color: #a61390;">NO</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> stopPlayingFilesLike<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> name<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">NSRange</span> textRange;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>slotKey <span style="color: #a61390;">in</span> <span style="color: #002200;">&#91;</span>audioSlots allKeys<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; textRange <span style="color: #002200;">=</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>slotKey lowercaseString<span style="color: #002200;">&#93;</span> rangeOfString<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>name lowercaseString<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span>textRange.location <span style="color: #002200;">!=</span> NSNotFound<span style="color: #002200;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>audioSlots objectForKey<span style="color: #002200;">:</span>slotKey<span style="color: #002200;">&#93;</span> stop<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; <span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> muteAll<br />
<span style="color: #002200;">&#123;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>slotKey <span style="color: #a61390;">in</span> <span style="color: #002200;">&#91;</span>audioSlots allKeys<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>audioSlots objectForKey<span style="color: #002200;">:</span>slotKey<span style="color: #002200;">&#93;</span> stop<span style="color: #002200;">&#93;</span>;<br />
&nbsp; <span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> clearStoredAudios<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self muteAll<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>audioSlots removeAllObjects<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> dealloc<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self muteAll<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>audioSlots release<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>super dealloc<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #a61390;">@end</span></div></div>
<h2>Utilizando o AudioPlayer</h2>
<p>Isso é fácil, basta instanciar um objeto da classe AudioPlayer:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">audioPlayer <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>AudioPlayer alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;</div></div>
<p>Os nomes dos métodos são bastante intuitivos, o que vale explicar é que o AudioPlayer utiliza o nome do arquivo como chave do dicionário de AVAudioPlayers, eu pensei nessa abordagem porque fica muito mais fácil você gerencia-los assim.</p>
<p>Por exemplo, eu tenho 3 arquivos tocando: MusicBack.mp3, SoundClick.wav e o SoundFoo.mp3, se eu crio uma regra de negócio onde existe a diferença entre som e música, eu posso facilmente parar todos os sons chamando o método:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">audioPlayer.stopPlayingFilesLike<span style="color: #002200;">:</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Sound&quot;</span>;</div></div>
<p>Você pode tocar o arquivo de som que você quiser, só basta chamar:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">audioPlayer.playFile<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;SoundBar&quot;</span> ofType<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;mp3&quot;</span> nTimes<span style="color: #002200;">:</span><span style="color: #2400d9;">1</span></div></div>
<p>Lembrando que se você colocar o parâmetro <em>nTimes</em> = -1, o som ficará tocando em loop.</p>
<h2>Exemplo</h2>
<p><a href="http://www.flickr.com/photos/59650699@N08/5642565226/" title="AudioPlayerDemo by brunomilare, on Flickr"><img src="http://farm6.static.flickr.com/5270/5642565226_24875b45be.jpg" width="266" height="500" alt="AudioPlayerDemo"></a></p>
<p>O exemplo da foto acima pode ser encontrado no meu <a href="http://github.com/milare/AudioPlayerDemo">github</a>.</p>
<p>[]s</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/04/21/iphone-audios-a-vontade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone: Splash Screen</title>
		<link>http://www.diretoefacil.com.br/2011/04/19/iphone-splash-screen/</link>
		<comments>http://www.diretoefacil.com.br/2011/04/19/iphone-splash-screen/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 23:33:33 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Splash Screen]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=236</guid>
		<description><![CDATA[Seguindo o meu aprendizado orientado a demanda, me deparei com o problema de ter que criar uma splash screen para uma aplicação que carregava muito rapidamente. Splash screen ? Oras, isso deve ser fácil, vou dar uma pesquisada e logo (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/04/19/iphone-splash-screen/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Seguindo o meu aprendizado orientado a demanda, me deparei com o problema de ter que criar uma splash screen para uma aplicação que carregava muito rapidamente.</p>
<p>Splash screen ? Oras, isso deve ser fácil, vou dar uma pesquisada e logo arrumo uma solução razoável.</p>
<p>Pois é, eu estava errado, não no ponto de ser fácil, porque é, mas na questão de achar rapidamente uma solução, ainda mais para XCode 4. Existem diversas maneiras de se fazer isso, só que sinceramente, existem umas que além de não funcionarem, desrespeitam qualquer boa prática.</p>
<p>Um exemplo disso que eu vi, foi o cara colocar a imagem Default.png, que é a imagem que a aplicação exibe quando o aplicativo está carregando, e colocar ele para dormir pelo tempo que ele julgue necessário a imagem ficar aparecendo. Eu acredito que essa não seja a maneira correta, porque você está perdendo uma liberdade utilizando a imagem Default.png para isso, além do que deixar a aplicação dormindo não é uma boa ideia por definição. =P</p>
<p>Deixando de lado essas abordagens, e qualquer comentário, sobre a necessidade ou não de uma splash screen, vamos a solução utilizada.</p>
<p><span id="more-236"></span></p>
<h2>Implementação</h2>
<p>Já um pouco familiarizado com troca entre views eu pensei comigo mesmo, vou carregar a aplicação, e quando terminar eu chamo a view de splash deixo ela lá um tempo e depois faço o dismiss. óbvio.</p>
<p>Depois de criar um (UIViewController) SplashScreenViewController, sem absolutamente nada, deixei meu controller principal da seguinte maneira:</p>
<p><strong>DemoSplashViewController.h:</strong></p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span><br />
<span style="color: #6e371a;">#import &quot;SplashScreenViewController.h&quot;</span><br />
<br />
<span style="color: #6e371a;">#define SPLASH_HIDE_DELAY &nbsp; &nbsp;1.0f</span><br />
<br />
<span style="color: #a61390;">@interface</span> DemoSplashScreenViewController <span style="color: #002200;">:</span> UIViewController <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// Splash Screen</span><br />
&nbsp; &nbsp; SplashScreenViewController <span style="color: #002200;">*</span>splashViewController;<br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>retain, nonatomic<span style="color: #002200;">&#41;</span> SplashScreenViewController <span style="color: #002200;">*</span>splashViewController;<br />
<br />
<span style="color: #11740a; font-style: italic;">/**<br />
&nbsp;* Splash Screen<br />
&nbsp;**/</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>showSplash;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>hideSplash;<br />
<br />
<span style="color: #a61390;">@end</span></div></div>
<p><strong>DemoSplashScreenViewController.m:</strong></p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">@synthesize</span> splashViewController;<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>showSplash<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; self.splashViewController <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>SplashScreenViewController alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self presentModalViewController<span style="color: #002200;">:</span> splashViewController animated<span style="color: #002200;">:</span><span style="color: #a61390;">NO</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self performSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>hideSplash<span style="color: #002200;">&#41;</span> withObject<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span> afterDelay<span style="color: #002200;">:</span> SPLASH_HIDE_DELAY<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>hideSplash<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self splashViewController<span style="color: #002200;">&#93;</span> dismissModalViewControllerAnimated<span style="color: #002200;">:</span> <span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span></div></div>
<p>Assim bastou eu chamar no <strong>DemoSplashScreenAppDelegate.m</strong> dentro do método didFinishLaunchingWithOptions:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#40;</span>DemoSplashScreenViewController<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> self.window.rootViewController showSplash<span style="color: #002200;">&#93;</span>;</div></div>
<p>O método showSplash chama o hideSplash após o tempo determinado na constante SPLASH_HIDE_DELAY.<br />
Para customizar sua splash screen basta alterar a view SplashScreenViewController.xib</p>
<p>E Voilá&#8230;</p>
<p>O código fonte pode ser encontrado em:  <a href="http://github.com/milare/DemoSplashScreen">github.com/milare/DemoSplashScreen</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/04/19/iphone-splash-screen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone: Aprendendo Objective-C</title>
		<link>http://www.diretoefacil.com.br/2011/04/06/iphone-aprendendo-objective-c/</link>
		<comments>http://www.diretoefacil.com.br/2011/04/06/iphone-aprendendo-objective-c/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 23:51:12 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Cocos2d]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=230</guid>
		<description><![CDATA[Resolvi, por nenhum motivo aparente a desenvolver em Objective-C e vou contar um pouco da minha experiência e a salada que saiu disso. Na última semana me engajei a desenvolver um joguinho para iPhone, talvez deixei-me levar pelo modismo, mas (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/04/06/iphone-aprendendo-objective-c/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Resolvi, por nenhum motivo aparente a desenvolver em Objective-C e vou contar um pouco da minha experiência e a salada que saiu disso.</p>
<p>Na última semana me engajei a desenvolver um joguinho para iPhone, talvez deixei-me levar pelo modismo, mas isso não importa. Minha ideia inicial era a seguinte:</p>
<p>Vou fazer algo simples que aplique algum conceito também simples e que me agregue conhecimento e gere algo tangível, o que é difícil quando você está começando a aprender alguma coisa.</p>
<h1> Walker </h1>
<p>Esse foi o nome do meu joguinho, que dá uma ideia muito sugestiva do que o &#8220;jogo&#8221; faz. Esse aplicativo foi feito utilizando a biblioteca gráfica Cocos2D e o algoritmo de Dijkstra para o menor caminho. A ideia é a seguinte:</p>
<p>Existe um mapa de Tiles, que nada mais é que um grafo (visivelmente uma matriz) onde cada nó desse grafo está conectado com seus dois vizinhos verticais e seus dois vizinhos horizontais.</p>
<p>Você pode colocar no mapa, atráves da gaveta no canto superior esquerdo, três tipos de Tiles (Grama, Pedra e Parede), fechando a gaveta e tocando em algum ponto do mapa o personagem vai andar no mapa de acordo com a dificuldade de seus obstáculos. simples.</p>
<p>Segue um vídeo da aplicação rodando (ele está aqui, só demora um pouquinho para carregar, rs).</p>
<p><object width="712" height="364"><param name="movie" value="http://www.swfcabin.com/swf-files/1302129890.swf"><embed src="http://www.swfcabin.com/swf-files/1302129890.swf" width="712" height="364"></embed></object></p>
<p>O fonte ficou uma bagunça só, desrespeitei várias diretrizes, mas de qualquer maneira ele pode ser encontrado no meu github: <a href="http://github.com/milare/walker">github.com/milare/walker</a></p>
<p>Eu fico por aqui.</p>
<p>Abraços !</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/04/06/iphone-aprendendo-objective-c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Motivação</title>
		<link>http://www.diretoefacil.com.br/2011/02/07/motivacao/</link>
		<comments>http://www.diretoefacil.com.br/2011/02/07/motivacao/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 00:59:30 +0000</pubDate>
		<dc:creator>Bruno Milare</dc:creator>
				<category><![CDATA[diversos]]></category>
		<category><![CDATA[Dan Pink]]></category>
		<category><![CDATA[Motivação]]></category>
		<category><![CDATA[TED]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=217</guid>
		<description><![CDATA[Nos últimos dias venho pensando muito em motivação, não sei se muito porque a minha anda tendo altos e baixos, muito provavelmente é por causa disso sim, mas comecei a questionar as coisas que me deixam motivado e as que (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/02/07/motivacao/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Nos últimos dias venho pensando muito em motivação, não sei se muito porque a minha anda tendo altos e baixos, muito provavelmente é por causa disso sim, mas comecei a questionar as coisas que me deixam motivado e as que não.</p>
<p>Perambulando pela internet eu achei esse vídeo, onde Dan Pink fala um pouco sobre o que ele escreveu em seu livro Motivação 3.0 (Drive), como as mudanças de paradigma em relação a motivação, que ocorreram através das décadas, que a ciência comprova e que nem sempre são aplicadas.</p>
<p>Enfim, me identifiquei muito, vale a pena conferir&#8230;</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/DanielPink_2009G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanielPink-2009G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=618&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=dan_pink_on_motivation;year=2009;theme=not_business_as_usual;theme=the_creative_spark;theme=speaking_at_tedglobal2009;event=TEDGlobal+2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/DanielPink_2009G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanielPink-2009G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=618&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=dan_pink_on_motivation;year=2009;theme=not_business_as_usual;theme=the_creative_spark;theme=speaking_at_tedglobal2009;event=TEDGlobal+2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>É isso aí.</p>
<p>Bruno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/02/07/motivacao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Não escreva métodos em seus módulos com self.</title>
		<link>http://www.diretoefacil.com.br/2011/02/05/nao-escreva-metodos-em-seus-modulos-com-self/</link>
		<comments>http://www.diretoefacil.com.br/2011/02/05/nao-escreva-metodos-em-seus-modulos-com-self/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 03:53:08 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[dry]]></category>
		<category><![CDATA[self]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=212</guid>
		<description><![CDATA[É normal encontrar métodos implementados dentro de módulos acompanhados pelo self, geralmente usamos isso quando queremos tornar esse método um método de instância do módulo, já vi implementações bem grandes com vários métodos e todos eles acompanhados do self antes (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2011/02/05/nao-escreva-metodos-em-seus-modulos-com-self/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>É normal encontrar métodos implementados dentro de módulos acompanhados pelo self, geralmente usamos isso quando queremos tornar esse método um método de instância do módulo, já vi implementações bem grandes com vários métodos e todos eles acompanhados do self antes do nome do método. mas isso é algo que podemos abstrair e manter nossa implementação de módulos mais simples e limpa.</p>
<p>Veja alguns exemplos:<br />
<span id="more-212"></span><br />
Usando o self:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">module</span> <span style="color:#CC00FF; font-weight:bold;">Time</span><br />
&nbsp; <br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">melhor_time</span><br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Palmeiras&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">pior_time</span><br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Ibis&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">alegria_da_torcida_adversaria</span><br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Curintia na libertadores&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span> <br />
<br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>Agora a mesma implementação usando o extend:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">module</span> <span style="color:#CC00FF; font-weight:bold;">Time</span><br />
&nbsp; extend <span style="color:#0000FF; font-weight:bold;">self</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> melhor_time<br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Palmeiras&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> pior_time<br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Ibis&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> alegria_da_torcida_adversaria<br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Curintia na libertadores&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span> <br />
<br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>Perceba que usando o extend estamos dizendo para o módulo Time estender a ele mesmo, tornando estes métodos de classe. Em ambas as implementações os resultados seriam os mesmos, é claro que fica a cargo do gosto de cada um, porém em módulos com muitos métodos isso deixa a implementação mais dry.</p>
<pre>
Time.melhor_time
#=> Palmeiras

Time.pior_time
#=> Ibis

Time.alegria_da_torcida_adversaria
#=> Curintia na libertadores
</pre>
<p>This is it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2011/02/05/nao-escreva-metodos-em-seus-modulos-com-self/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.414 seconds -->

