<?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 &#187; Dicas</title>
	<atom:link href="http://www.diretoefacil.com.br/category/dicas/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>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>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>
		<item>
		<title>Livro grátis! Ruby on Rails 2.2 &#8211; O que há de novo?</title>
		<link>http://www.diretoefacil.com.br/2009/01/19/livro-rails-22-free/</link>
		<comments>http://www.diretoefacil.com.br/2009/01/19/livro-rails-22-free/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 17:08:30 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=72</guid>
		<description><![CDATA[O Carlos Bandro liberou a versão em português do livro Ruby on Rails 2.2 &#8211; o que há de novo? para download, &#8220;di grátis&#8221;, isso mesmo free! Eu já tinha adquirido o mesmo na data do lançamento junto com o (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2009/01/19/livro-rails-22-free/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img title="cover-book-blog" src="http://www.diretoefacil.com.br/wp-content/uploads/2008/10/cover-book-blog-300x233.jpg" alt="cover-book-blog" width="300" height="233" /></p>
<p>O Carlos Bandro liberou a versão em português do livro Ruby on Rails 2.2 &#8211; o que há de novo? para download, &#8220;di grátis&#8221;, isso mesmo free!</p>
<p>Eu já tinha adquirido o mesmo na data do lançamento junto com o screencast, e até ja tinha dado a dica <a href="http://www.diretoefacil.com.br/2008/10/27/whats-new-in-rails-2-2/" target="_blank">aqui mesmo</a>.</p>
<p>Parabéns Carlos pela iniciativa!</p>
<p><a href="http://www.nomedojogo.com/wp-content/uploads/2009/01/ruby-on-rails-2-2_whats-new_br.pdf" target="_blank">Link para download</a></p>
<p><a href="http://www.nomedojogo.com/2009/01/19/livro-gratis-ruby-on-rails-22-o-que-ha-de-novo/" target="_blank">Link do post no blog do Carlos</a></p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2009/01/19/livro-rails-22-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Page.reload com o jrails</title>
		<link>http://www.diretoefacil.com.br/2008/11/26/pagereload-with-jrails/</link>
		<comments>http://www.diretoefacil.com.br/2008/11/26/pagereload-with-jrails/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 14:33:19 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[jrails]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=49</guid>
		<description><![CDATA[No rails 2.2 foi adicionado um novo helper para os templates .rjs o reload, pra quem assim como eu, usa o jrails para trocar o prototype pelo jquery fica essa dica, pois até o momento pessoal do jrails não atualizou (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2008/11/26/pagereload-with-jrails/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>No rails 2.2 foi adicionado um novo helper para os templates .rjs o reload, pra quem assim como eu, usa o jrails para trocar o prototype pelo jquery fica essa dica, pois até o momento pessoal do jrails não atualizou o mesmo, portanto se você chamar o page.reload usando o jrails vai quebrar.</p>
<p>Para solucionar o problema é simples, basta incluir o codigo abaixo no arquivo jrails.rb (vendor/plugins/jrails/lib/jrails.rb) dentro da Classe JavaScriptGenerator e do Módulo GeneratorMethods.</p>
<p><script src="http://gist.github.com/29396.js"></script></p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2008/11/26/pagereload-with-jrails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails 2.2 &#8211; O que há de novo</title>
		<link>http://www.diretoefacil.com.br/2008/10/27/whats-new-in-rails-2-2/</link>
		<comments>http://www.diretoefacil.com.br/2008/10/27/whats-new-in-rails-2-2/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 21:11:36 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[livro]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=35</guid>
		<description><![CDATA[Acabei de adquirir o livro Ruby on Rails 2.2 &#8211; O que há de novo, e aproveito para parabenizar o Carlos Brando, pelo excelente trabalho. Parabéns Carlos! Só li umas 15 ou 20 páginas ainda, mas já vi muita coisa (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2008/10/27/whats-new-in-rails-2-2/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://envycasts.com/" target="_blank"><img class="size-medium wp-image-36 aligncenter" title="cover-book-blog" src="http://www.diretoefacil.com.br/wp-content/uploads/2008/10/cover-book-blog-300x233.jpg" alt="" width="300" height="233" /></a></p>
<p>Acabei de adquirir o livro <a href="http://envycasts.com/" target="_blank">Ruby on Rails 2.2 &#8211; O que há de novo</a>, e aproveito para parabenizar o <a href="http://www.nomedojogo.com" target="_blank">Carlos Brando</a>, pelo excelente trabalho. Parabéns Carlos!</p>
<p>Só li umas 15 ou 20 páginas ainda, mas já vi muita coisa legal, como especificar conditions usando hash e as mudanças no método validates_length_of.</p>
<p>Fica aqui a dica, comprei o pacote contendo o livro e o screencast por $16,00. Na cotação de hoje saiu por apenas R$36,80 o que acho que é até um valor simbólico pela qualidade e importância do conteúdo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2008/10/27/whats-new-in-rails-2-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dica rápida usando o ApplicationHelper.</title>
		<link>http://www.diretoefacil.com.br/2008/08/21/dica-rapida-applicationhelper/</link>
		<comments>http://www.diretoefacil.com.br/2008/08/21/dica-rapida-applicationhelper/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 01:40:48 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=12</guid>
		<description><![CDATA[Essa é bem simples, coisa básica, mas que uso sempre. Praticamente todas aplicações tem tabelas em que uma das colunas é usada para setar o status/situação do registro, eu costumo gerar esses campos através de migrates assim: status:boolean, na hora (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2008/08/21/dica-rapida-applicationhelper/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Essa é bem simples, coisa básica, mas que uso sempre.</p>
<p>Praticamente todas aplicações tem tabelas em que uma das colunas é usada para setar o status/situação do registro, eu costumo gerar esses campos através de migrates assim: status:boolean, na hora de exibir esse registro ao usuário precisamos tratá-lo, pois mostrar <span style="color: #0000ff;">true</span> ou <span style="color: #0000ff;">false</span> convenhamos que não é legal.</p>
<p>Seguindo o principio de DRY do rails a solução é bem simples.</p>
<p>No application_helper.rb coloco a seguinte função:</p>
<p><script src="http://gist.github.com/6712.js"></script></p>
<p>Na view basta usar assim:</p>
<p><script src="http://gist.github.com/6713.js"></script></p>
<p>A explicação é bem simples, a função ativo_inativo recebe um parâmetro true ou false e através de um operador ternário devolve Ativo ou Inativo, lembre-se a função agora está disponivel para toda a aplicação, sem repetições.</p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2008/08/21/dica-rapida-applicationhelper/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQL Buddy &#8211; Admin para MySql leve e rápido.</title>
		<link>http://www.diretoefacil.com.br/2008/08/21/sql-buddy-admin-para-mysql-leve-e-rapido/</link>
		<comments>http://www.diretoefacil.com.br/2008/08/21/sql-buddy-admin-para-mysql-leve-e-rapido/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 23:54:11 +0000</pubDate>
		<dc:creator>Márcio Gasparotto</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[MySql]]></category>

		<guid isPermaLink="false">http://www.diretoefacil.com.br/?p=7</guid>
		<description><![CDATA[Navegando pela web esses dias dei de cara com um aplicativo web para administração do MySql o SQL Buddy, acho que todo desenvolvedor conhece o phpMyAdmin ele realmente é uma mão na roda quando precisamos administrar algo no MySql de (&#8230;)</p><p><a href="http://www.diretoefacil.com.br/2008/08/21/sql-buddy-admin-para-mysql-leve-e-rapido/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Navegando pela web esses dias dei de cara com um aplicativo web para administração do MySql o <a href="http://www.sqlbuddy.com/" target="_blank">SQL Buddy</a>, acho que todo desenvolvedor conhece o <a href="http://www.phpmyadmin.net" target="_blank">phpMyAdmin</a> ele realmente é uma mão na roda quando precisamos administrar algo no MySql de forma remota, porém eu acho a interface do phpMyAdmin meio confusa e muita vezes acho que a velocidade deixa muito a desejar.</p>
<p>O SQL Buddy é um Web based MySQL administration que foca na simplicidade e na velocidade, pra isso ele usa ajax para as requisições tornando assim a interface e usabilidade do mesmo bem agradáveis.</p>
<p>A simplicidade da instalação também chama a atenção, é bem no estilo rails, pois basta descompactar o mesmo em um diretório e pronto, é claro que tem que estar com o php rodando. Vale lembrar que tem suporte a temas e ainda já tem tradução para português. A dica está dada!</p>
<p style="text-align: center;"><a href="http://www.sqlbuddy.com/" target="_blank"><img class="size-full wp-image-9 aligncenter" title="sqlbuddy" src="http://www.diretoefacil.com.br/wp-content/uploads/2008/08/sqlbuddy.jpg" alt="" width="500" height="289" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diretoefacil.com.br/2008/08/21/sql-buddy-admin-para-mysql-leve-e-rapido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

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

