<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Esfera Microatômica &#187; Plugins</title>
	<atom:link href="http://diogenesf.wordpress.com/tag/plugins/feed/" rel="self" type="application/rss+xml" />
	<link>http://diogenesf.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 02 Jun 2009 03:33:48 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='diogenesf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/84e3202ae65e0f89a4f2ea7ddead8a9d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Esfera Microatômica &#187; Plugins</title>
		<link>http://diogenesf.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://diogenesf.wordpress.com/osd.xml" title="Esfera Microatômica" />
		<item>
		<title>FireBug: Porque tempo é dinheiro!</title>
		<link>http://diogenesf.wordpress.com/2008/04/09/firebug-porque-tempo-e-dinheiro/</link>
		<comments>http://diogenesf.wordpress.com/2008/04/09/firebug-porque-tempo-e-dinheiro/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 20:24:22 +0000</pubDate>
		<dc:creator>diogenesf</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Programacao]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://diogenesf.wordpress.com/?p=22</guid>
		<description><![CDATA[Em tempos de pouco Seaside, a gente tem que se virar pra aumentar a produtividade ao escrever códigos de client-side.
Quem de nós desenvolvedores, nesses últimos 10 anos, não sofreu de sérias cefaléias depois de algumas horas de depuração braçal(vulgo &#8220;alert-debugging&#8220;) de código JavaScript?
Que atirem a primeira pedra!

Já faz algum tempo que o FireBug se tornou [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=22&subd=diogenesf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:left;">Em tempos de pouco <a title="Seaside rules!" href="http://www.seaside.st/">Seaside</a>, a gente tem que se virar pra aumentar a produtividade ao escrever códigos de <em>client-side</em>.</p>
<p style="text-align:left;">Quem de nós desenvolvedores, nesses últimos 10 anos, não sofreu de sérias cefaléias depois de algumas horas de depuração braçal(vulgo &#8220;<a title="JavaScript Alert Debugging - Nostalgia!" href="http://www.felgall.com/jstip13.htm">alert-debugging</a>&#8220;) de código JavaScript?</p>
<p style="text-align:left;">Que atirem a primeira pedra!</p>
<p style="text-align:left;"><span id="more-22"></span></p>
<p style="text-align:left;">Já faz algum tempo que o <a title="Get Firebug!" href="http://www.getfirebug.com">FireBug</a> se tornou uma ferramentinha essencial no meu <em>toolset</em> de desenvolvedor web!</p>
<p style="text-align:left;">O FireBug é um plugin do <a title="Get Firefox!" href="http://www.getfirefox.com">Firefox</a> até completinho, que permite editar folhas de estilo, debugar JavaScripts, monitorar o tráfego de rede gerado por uma página, etc; facilitando em muito o desenvolvimento de interfaces um pouco mais interativas, com scripts de complexidade razoável.</p>
<p style="text-align:left;">Listei abaixo alguns dos aspectos que mais me chamam a atenção no Firebug:<br />
<strong><br />
Suporte à JavaScript</strong><br />
A economia de tempo para quem não está acostumado a ter um debugger Javascript é ridiculamente insana!</p>
<p style="text-align:left;">O Firebug, por meio das funções de &#8220;<em>Step Over</em>&#8220;, &#8220;<em>Ste</em><em>p Into</em>&#8221; e &#8220;<em>Step Out</em>&#8221; lhe permite controlar a execução das instruções JavaScript manualmente. Essas funções trabalhando em conjunto com Breakpoints e expressões de &#8220;Watch&#8221;(que permitem monitorar o valor de uma determinada expressão em um dado momento da execução) transformam o Firebug em uma poderosíssima ferramenta de depuração.</p>
<p style="text-align:left;">Na aba &#8220;Script&#8221; há um painel que ao longo da execução, vai listando(conforme os filtros que você selecionar) as variáveis definidas no script em execução. Poupa nosso trabalho de ter que adicionar uma expressão de &#8220;Watch&#8221; para cada variável declarada no script.</p>
<p style="text-align:left;">Além disso, na aba &#8220;Console&#8221; você tem um <em>shell</em> interativo que poderá ser muito útil  no desenvolvimento também! Neste <em>shell</em>, você pode executar pequenas instruções JavaScript via <em>command line</em> que podem lhe dar uma melhor idéia do que está em memória em <em>client-side</em>, percorrer a estrutura DOM de uma página, testar a execução de funções JavaScript anteriormente definidas, definir novas funções/objetos/variáveis, e coisas do tipo. Já não dá pra ficar sem essas coisas!</p>
<p style="text-align:left;"><strong><br />
Monitoramento de tráfego de rede</strong><br />
Pra quem trabalha muito com Ajax(ou melhor, requisições via <a href="http://en.wikipedia.org/wiki/XMLHttpRequest">XMLHttpRequest</a> em geral), essa <em>feature</em> é uma verdadeira Mão-na-Roda, pois te dá uma visão detalhada das requisições HTTP que estão acontecendo por &#8220;debaixo dos panos&#8221;!</p>
<p style="text-align:left;">Tanto na aba &#8220;Console&#8221; quanto na aba &#8220;Net&#8221;, para cada requisição, você poderá visualizar o conteúdo da resposta retornada, bem como o que foi enviado via <em>post</em>, ou via <em>query string</em>, para o servidor! Lá também estarão os cabeçalhos HTTP relacionados com aquela requisição, etc.<br />
Essas informações facilitam bastante para identificar alguns problemas, quando, por exemplo, você percebe que sua tela se desfigurou depois de uma requisição que aconteceu &#8220;debaixo dos panos&#8221;, e não faz idéia do que foi retornado pelo <em>servidor</em>!</p>
<p style="text-align:left;"><strong><br />
Visualização da àrvore DOM</strong></p>
<p style="text-align:left;">Outra funcionalidade interessante, é a de você poder visualizar a àrvore DOM da página e navegar nela. Ajuda muito a  visualizar o estado de determinados elementos que compõem a tua interface.</p>
<p style="text-align:left;">
<p style="text-align:left;">Pra quem não conhece o plugin ainda, ou não tem uma versão alternativa tão boa quanto, vale muito a pena testar!</p>
<p>Inclusive, existe uma versão portada para outros browsers também, chamada <a title="Firebug Lite - Port para IE" href="http://www.getfirebug.com/lite.html">Firebug Lite</a>. Não a testei, porque acho meio intrusivo demais inserir um novo arquivo JavaScript na tua página com esse fim&#8230;mas dados os benefícios, dependendo da situação, talvez seja uma boa!</p>
<p style="text-align:left;">No mais, um grande abraço à todos, e bons códigos!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/diogenesf.wordpress.com/22/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/diogenesf.wordpress.com/22/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/diogenesf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/diogenesf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/diogenesf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/diogenesf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/diogenesf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/diogenesf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/diogenesf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/diogenesf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/diogenesf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/diogenesf.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=22&subd=diogenesf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://diogenesf.wordpress.com/2008/04/09/firebug-porque-tempo-e-dinheiro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd338fedd59e7d02e9479229679354f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">diogenesf</media:title>
		</media:content>
	</item>
		<item>
		<title>acts_as_state_machine: Gerenciando estados de um Model Rails</title>
		<link>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/</link>
		<comments>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 21:06:51 +0000</pubDate>
		<dc:creator>diogenesf</dc:creator>
				<category><![CDATA[Belo Horizonte]]></category>
		<category><![CDATA[Io]]></category>
		<category><![CDATA[Opiniao]]></category>
		<category><![CDATA[Programacao]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/</guid>
		<description><![CDATA[Acts as State Machine eh um plugin do Rails que visa facilitar o gerenciamento de estados de um dado model ActiveRecord, implementando assim uma Maquina de Estado Finito.  O acts_as_state_machine carrega o conceito de eventos. Que sao blocos de codigo responsaveis pelas transicoes de um estado do Model para o outro.  Suponhamos, por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=13&subd=diogenesf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/README">Acts as State Machine</a> eh um plugin do Rails que visa facilitar o gerenciamento de estados de um dado model ActiveRecord, implementando assim uma <a href="http://pt.wikipedia.org/wiki/M%C3%A1quina_de_estado_finito">Maquina de Estado Finito</a>.  O <em>acts_as_state_machine</em> carrega o conceito de eventos. Que sao blocos de codigo responsaveis pelas transicoes de um estado do Model para o outro.  Suponhamos, por exemplo, que voce queira controlar os estados das tarefas que voce irah realizar durante um dia. Com o <em>acts_as_state_machine</em> voce poderia ter algo parecido com o seguinte:</p>
<pre class="brush: ruby;">
class Tarefa &lt; ActiveRecord::Base
  # Inicialmente a Tarefa estarah no estado 'Pendente'
  acts_as_state_machine :initial =&gt; :pendente

  state :pendente
  state :iniciada, :enter =&gt; Proc.new {|o| Mailer.send_notice(o)}
  state :concluida
  state :cancelada

  # No evento 'iniciar' eh realizada a transicao do estado 'pendente' para 'iniciada'
  event :iniciar do
    transitions :from =&gt; :pendente, :to =&gt; :iniciada
  end

  event :concluir do
    transitions :from =&gt; :iniciada, :to =&gt; :concluida
  end

  event :cancelar do
    transitions :from =&gt; :pendente, :to =&gt; :cancelada
  end
end
</pre>
<p>Para cada estado, um metodo &#8220;&lt;nomedoestado&gt;?&#8221; serah  criado, e para cada evento, um metodo &#8220;&lt;nomedoevento&gt;!&#8221; serah criado:</p>
<pre class="brush: ruby;">
  t = Tarefa.create # Cria a tarefa com seu estado inicial...
  t.state # =&gt; &quot;pendente&quot;
  t.iniciar! # Envia notificacao por email, e muda estado da Tarefa para &quot;iniciada&quot;
  t.iniciada? # =&gt; true
  # ...
  t.concluir! # Muda o estado da tarefa para &quot;Concluida&quot;
</pre>
<p>Como voce pode ver no codigo de exemplo, quando a nossa <em>Tarefa</em> mudar para o estado &#8216;iniciada&#8217;, (em consequencia da chamada ao metodo do evento &#8216;iniciar&#8217;), serah enviada uma notificacao por email. Isso eh feito por meio daquela <em>Proc</em> que foi passada como uma funcao de callback do estado <em>:iniciada</em>. Nos mostrando que temos a flexibilidade de fazer qualquer coisa na mudanca de um estado para o outro. Alih, no lugar de um bloco de codigo, pode ser passado um simbolo, com o nome de um metodo de instancia do model.</p>
<h3>Instalacao</h3>
<p>Para quem jah instalou um plugin Rails, instalar o <em>acts_as_state_machine</em> nao tem segredo algum! Na raiz da tua aplicacao Rails, digite:</p>
<pre class="brush: ruby;">
  ./script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/
</pre>
<p>Daih em diante eh soh usar! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/diogenesf.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/diogenesf.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/diogenesf.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=13&subd=diogenesf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd338fedd59e7d02e9479229679354f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">diogenesf</media:title>
		</media:content>
	</item>
	</channel>
</rss>