<?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>Descobertas</title>
	<atom:link href="http://daltojr.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://daltojr.wordpress.com</link>
	<description>Diretamente do cotidiano de um programador</description>
	<lastBuildDate>Thu, 06 Jan 2011 10:49:12 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='daltojr.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Descobertas</title>
		<link>http://daltojr.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://daltojr.wordpress.com/osd.xml" title="Descobertas" />
	<atom:link rel='hub' href='http://daltojr.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Game of Life</title>
		<link>http://daltojr.wordpress.com/2010/09/06/game-of-life/</link>
		<comments>http://daltojr.wordpress.com/2010/09/06/game-of-life/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 19:56:36 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=84</guid>
		<description><![CDATA[Na falta do que fazer nesse final de semana, implementei o Conway&#8217;s Game of Life, usando JavaScript e a tag Canvas do HTML5. Não entendo nada de programacão gráfica para web, então não vou comparar o canvas com Flash com qualquer outra coisa. Tentei fazer o jogo usando JavaScript puro. O que sempre me frustra [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=84&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na falta do que fazer nesse final de semana, implementei o <a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life" target="_blank">Conway&#8217;s Game of Life</a>, usando JavaScript e a tag Canvas do HTML5. Não entendo nada de programacão gráfica para web, então não vou comparar o canvas com Flash com qualquer outra coisa.</p>
<p>Tentei fazer o jogo usando JavaScript puro. O que sempre me frustra sempre que eu preciso usar js é que, quando usada sem frameworks como jQuery, Prototype, underscore, etc a linguagem carece de muitos métodos bastante úteis que mesclam programacão funcional e o uso de colecões. Uma das coisas que eu tive que fazer para deixar com que o código do jogo ficasse mais funcional foi extender prototypo Array para suportar as funcões map, select, partition e etc, que são bastante úteis e de implementacão trivial. Me admira muito que funcões desse tipo não estão na implementacão padrão dos arrays javascript.</p>
<p>Como sempre, o código-fonte do jogo está hospedado no <a href="http://github.com/dlt/game_of_life" target="_blank">github</a>. Por enquanto a implementacão é bem simples e ainda tem muito a melhorar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=84&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2010/09/06/game-of-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON Parser</title>
		<link>http://daltojr.wordpress.com/2010/08/13/json-parser/</link>
		<comments>http://daltojr.wordpress.com/2010/08/13/json-parser/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 11:32:47 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=75</guid>
		<description><![CDATA[Estamos usando JSON meu novo trabalho na Superficie para fazer a comunicacão entre plugins do SketchUp e uma aplicacao escrita em Rails. Acontece que a versao do Ruby do SketchUp é a 1.8.5 e, além disso, não possui nenhuma biblioteca padrão, o que torna algumas coisas como parsear strings JSON um pouco mais complicadas do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=75&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estamos usando JSON meu novo trabalho na <a href="http://blog.superficie.org/" target="_blank">Superficie</a> para fazer a comunicacão entre plugins do SketchUp e uma aplicacao escrita em Rails. Acontece que a versao do Ruby do SketchUp é a 1.8.5 e, além disso, não possui nenhuma biblioteca padrão, o que torna algumas coisas como parsear strings JSON um pouco mais complicadas do que em uma instalacão do Ruby padrão. Procurei uma solucão para isso nos forums de desenvolvimento de plugin para o SketchUp, mas parece que até hoje ninguém tinha compartilhado uma gem para interpretacão e geracão de JSON a partir de objetos Ruby no ambiente limitado do SketchUp. Resolvi então portar o classico parser recursivo descentente do <a href="http://www.json.org/js.html" target="_blank">Douglas Crockford</a> para Ruby.</p>
<p>Escrevi testes com o Rspec, me baseando nos testes do <a href="http://rubyquiz.com/quiz155.html" target="_blank">Ruby Quiz #155</a> e fui portando do algoritmo aos poucos, me certificando que os testes passavam na medida em que ele ia sendo totalmente implementado. Já estamos usando o parser há algum tempo e até hoje não deu nenhum problema. A única limitacão mais grave é que ele não sabe lidar muito bem com alguns casos de <a href="http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/" target="_blank">JSON inválido</a>, mas isso não é um problema grande nos casos em que ele é usado na Superficie, porque todo JSON interpretado por ele é gerado pelo Rails.</p>
<p>Segue o link para baixar a gem no RubyGems: <a href="http://rubygems.org/gems/sketchup_json" target="_blank">http://rubygems.org/gems/sketchup_json</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=75&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2010/08/13/json-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Gems</title>
		<link>http://daltojr.wordpress.com/2010/06/03/gems/</link>
		<comments>http://daltojr.wordpress.com/2010/06/03/gems/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 18:02:15 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=70</guid>
		<description><![CDATA[Meu dois últimos projetos em ruby foram dois wrappers para APIs. Uma para a API de previsão do Yahoo Weather, devido a uma necessidade que surgiu ao criar intranet para um cliente. Já existia uma gem em Ruby com essa finalidade, mas ao baixar o código para adicionar uma funcionalidade que eu precisava, vi que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=70&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Meu dois últimos projetos em ruby foram dois wrappers para APIs. Uma para a API de previsão do Yahoo Weather, devido a uma necessidade que surgiu ao criar intranet para um cliente. Já existia uma gem em Ruby com essa finalidade, mas ao baixar o código para adicionar uma funcionalidade que eu precisava, vi que seria mais fácil fazer tudo do zero.</p>
<p>Além de encapsular o acesso a API do yahoo, a <a href="http://github.com/dlt/yahoo_weatherman" target="_blank">yahoo_weatherman</a> provê uma maneira simples de adicionar suas próprias traducões para as respostas da API. Como a API do Yahoo Weather é baseada em XML, usei a gem nokogiri para fazer todo o trabalho de parsing. Nada complicado.</p>
<p>A outra gem é minha aposta no torneio que o pessoal do Stack Exchange anunciou junto com a primeira versão publica da sua API beta. Tem um prêmio para quem fizer o melhor wrapper. Eu dúvido que vá ganhar, mas já anunciei <a href="http://stackapps.com/questions/318/pilha-ruby-wrapper-to-the-stack-exchange-api" target="_blank">minha gem no fórum</a>. No momento ela já cobre a maior parte da API e pode ser considerada &#8220;usável&#8221;.</p>
<p>A API do Stack Exchange é baseada em json e não precisei de nada além do que o ruby já oferece na sua standard library.  No início achei que precisaria da hashie ou da mash para transformar os hashs do ruby em algo mais parecido com objetos javascript,  mas descobri que a <a href="http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/ostruct/rdoc/classes/OpenStruct.html" target="_blank">OpenStruct</a> da standard lib já faz isso de uma forma muito simples e acabei usando ela.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=70&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2010/06/03/gems/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Programming Paradigms for Dummies</title>
		<link>http://daltojr.wordpress.com/2010/05/26/programming-paradigms-for-dummies/</link>
		<comments>http://daltojr.wordpress.com/2010/05/26/programming-paradigms-for-dummies/#comments</comments>
		<pubDate>Wed, 26 May 2010 10:42:12 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=57</guid>
		<description><![CDATA[Eu havia prometido pra mim mesmo que nunca leria alguma coisa que tivesse &#8220;for dummies&#8221; no título. Felizmente quebrei a promessa e li Programming Paradigms for Dummies, que introduz vários paradigmas de programação e explica quando e porque cada um é mais apropriado. Resolvi escrever algumas impressões que ficaram depois da leitura e registrá-las por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=57&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Eu havia prometido pra mim mesmo que nunca leria alguma coisa que tivesse &#8220;for dummies&#8221; no título. Felizmente quebrei a promessa e li <a href="http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf" target="_blank">Programming Paradigms for Dummies</a>, que introduz vários paradigmas de programação e explica quando e porque cada um é mais apropriado. Resolvi escrever algumas impressões que ficaram depois da leitura e registrá-las por aqui :)</p>
<p>A primeira coisa que me chamou atenção foi a persistência do autor em dizer que uma linguagem adequada para sistemas grandes deve ser multi-paradigma. A razão disto é que em sistemas muito grandes, vários tipos de problemas diferentes devem ser resolvidos. Como cada paradigma de programação é mais adequado pra um determinado tipo de problema, nada mais natural do que ter uma linguagem que consiga lidar com o maior número de problemas possível. Uma boa escolha de linguagem teria dois paradigmas: um para <a href="http://en.wikipedia.org/wiki/Programming_in_the_large_and_programming_in_the_small" target="_blank">&#8220;programming in the small&#8221; e outro para &#8220;programming in the large&#8221;</a>.</p>
<p>Isso me fez pensar em duas coisas: 1) é mais fácil cair na tentação de que &#8220;minha linguagem resolve tudo&#8221; do escolher/aprender uma linguagem adequada ao domínio o qual se deseja trabalhar; 2) até onde aprender uma linguagem pura (funcional ou orientada a objetos, por exemplo) é válido para aplicá-la em um problema real.</p>
<p>Outra parte que merece destaque no paper são as definições de conceitos de linguagens de programação importantes como records, closures, concorrência e estado. A surpresa aqui foi a grande importância dada ao estado (o termo usado no paper é named state) para a modularidade dos sistemas. De acordo com o autor, estado é imprescindível quando se deseja ter modularidade, pois somente com ele um componente pode se adaptar ao ambiente em que ele está. Fiquei surpreso pois ultimamente andei lendo <a href="http://clojure.org/state" target="_blank">umas críticas bem pesadas</a> com relação a manter estado no contexto de computação paralela. E, é claro, fiquei com a dúvida: como se consegue modularização em linguagens puramente funcionais?</p>
<p>Há um tópico apenas sobre concorrência. Nele podemos encontrar uma descrição mais formal sobre a diferença entre paralelismo e concorrência. Paralelismo é um conceito relacionado a hardware e à capacidade de executar duas partes simultaneamente em multiplos processadores. Concorrência é relacionada à linguagem de programação e à capacidade de dividir o tempo do processador entre duas atividades. Os modelos de concorrência adotados por várias linguagens são descritos detalhadamente, assim como suas vantagens de desvantagens.</p>
<p>Linguagens que abordam concorrência de uma forma diferente da maioria das linguagens mainstream (Java, C++, Ruby) foram citadas. Destaque para Oz, Alice, FrTime e Yampa onde <a href="http://en.wikipedia.org/wiki/Race_condition">condições de corrida</a> são impossíveis de ocorrer. O modelo de concorrência declarativa (Oz) foi destacado por sua propriedade de confluência, em que não importa a ordem em que as funções são avaliadas, pois o resultado é sempre o mesmo. Isso é fortemente desejado, pois elimina toda necessidade de compartilhamento de memória e sincronização entre processos, evitando grande parte dos problemas de concorrência.</p>
<p>Concluindo, o paper ainda fala sobre conceitos e paradigmas que eu nem mencionei aqui. Tudo é muito bem explicado o que torna o texto uma leitura recomendada pra quem tem vontade de aprender mais sobre paradigmas e linguagens.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=57&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2010/05/26/programming-paradigms-for-dummies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Mais um pouco sobre herança prototípica</title>
		<link>http://daltojr.wordpress.com/2009/11/18/mais-um-pouco-sobre-heranca-prototipica/</link>
		<comments>http://daltojr.wordpress.com/2009/11/18/mais-um-pouco-sobre-heranca-prototipica/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 04:23:06 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=64</guid>
		<description><![CDATA[Vamos continuar com as minhas divagações sobre herança prototípica. ;) Continuarei citando mais vantagens e desvantagens entre a herança prototípica em relação a baseada em classes. Num outro post, quando sobrar um tempinho, vou falar sobre as maneiras de simular a flexibilidade da herança prototípica em Ruby por meio do uso de módulos como mixins, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=64&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vamos continuar com as minhas divagações sobre herança prototípica. ;)</p>
<p>Continuarei citando mais vantagens e desvantagens entre a herança prototípica em relação a baseada em classes. Num outro post, quando sobrar um tempinho, vou falar sobre as maneiras de simular a flexibilidade da herança prototípica em Ruby por meio do uso de módulos como mixins, metaprogramação e do método Class#new que aceita um bloco como parâmetro.</p>
<p><strong>Vantagens</strong></p>
<p>Algumas vantagens que não foram citadas no primeiro post:</p>
<ul>
<li><strong>Relacionamentos simplificados entre objetos:</strong> para entender como os objetos se relacionam em um sistema baseado em classes devemos saber que podem existir dois tipo de relações entre eles. A primeira, citada no paper como &#8216;is_a&#8217;, indica se um objeto é instância de uma classe. A segunda, &#8216;kind_of&#8217;, indica se a classe objeto é subclasse de outra. Quando se tem herança prototípica, a única relação entre dois objetos é &#8216;inherits_from&#8217; que indica se ele foi clonado de outro.</li>
<li><strong>Criação por cópia:</strong> instanciar um objeto a partir de uma classe é como construir uma casa a partir de uma planta. Clonar um objeto a partir de outro seria então uma metáfora mais simples para instanciação.</li>
<li><strong>Exemplos de módulos pré-existentes:</strong> Protótipos são mais contretos do que classes por que eles são modelos existentes com comportamento definido, que pode ser observado. Eles são exemplos do comportamento que será clonado por outros objetos. Classes são descrições do que os objetos instanciados por elas virão a ser. Há uma diferença entre ser um exemplo que se pode interagir e uma descrição estática.</li>
</ul>
<p><strong>Desvantagens</strong></p>
<p>As principais desvantagens são relacionadas à organização do código. Como saber se um objeto só existe para ser protótipo de outros? Esse problema é um sistema grande pode dar uma baita dor de cabeça. Uma saída, ainda que bem precária (na minha humilde opinião :) para isto pode ser usar convenções para nomes de variáveis.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=64&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/11/18/mais-um-pouco-sobre-heranca-prototipica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>O que é herança prototípica?</title>
		<link>http://daltojr.wordpress.com/2009/10/20/o-que-e-heranca-prototipica/</link>
		<comments>http://daltojr.wordpress.com/2009/10/20/o-que-e-heranca-prototipica/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 03:49:06 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=50</guid>
		<description><![CDATA[Inicialmente eu queria falar bastante sobre herança prototípica em um post só, mas iria ficar muito maçante. Ainda mais que eu não sou expert no assunto e só quero clarear os conceitos pra mim mesmo e, se possível, abrir um espaço pra discussão (aquela discussão sadia que raramente se vê por aí) na área de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=50&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Inicialmente eu queria falar bastante sobre herança prototípica em um post só, mas iria ficar muito maçante. Ainda mais que eu não sou expert no assunto e só quero clarear os conceitos pra mim mesmo e, se possível, abrir um espaço pra discussão (aquela discussão sadia que raramente se vê por aí) na área de comentários.</p>
<p>Tudo começou quando eu estava lendo <a href="http://www.kumpera.net/blog/index.php/2007/01/16/dicas-de-leitura/" target="_blank">um post no blog do Rodrigo Kumpera</a>, em que ele deu umas dicas de papers pra ler. Li <a href="http://research.sun.com/self/papers/selfPower.ps.gz" target="_blank">esse paper</a> sobre a linguagem Self e achei muito interessante o fato de alguns conceitos citados poderem ser usados em duas linguagens que eu uso bastante, que são o Ruby e o Javascript.</p>
<p>Herança prototípica é uma estratégia para reutilização de <em>comportamento </em>entre objetos. Existem várias diferenças entre a herança prototípica e a baseada em classes. O objetivo dos meus próximos posts é descrever as principais diferenças entre cada uma delas e dar exemplos de situações em que a herança prototípica está presente.</p>
<p>O papel da classe em uma linguagem como o Java é descrever a estrutura e o comportamento de um objeto que será instanciado por ela, além de fornecer um construtor que será utilizado para instanciar esse objeto. A estrutura do objeto instanciado é sua interface, que foi descrita na classe e seu comportamento é determinado pelos métodos que foram implementados na classe.</p>
<p>Em linguagens que usam herança prototípica não existe o conceito de classe, apenas o de objetos e protótipos. Um objeto não tem uma forma estática descrita por uma classe e novos objetos são obtidos a partir da clonagem de um protótipo. Quando se deseja obter um objeto novo, se faz uma cópia de um objeto. Este objeto copiado é que é chamado protótipo. O papel da instanciação do objeto está no seu protótipo, que por acaso, é um objeto também.</p>
<p>Tudo que interessa saber dele em tempo de execução é seu comportamento, quais métodos ele tem. A definição desse comportamento é feita de forma completamente dinãmica. Basicamente, a coisa funciona da seguinte forma: um objeto pode ser imaginado como um amontoado de &#8220;coisas&#8221;  (objetos e funções/métodos) e essas coisas são guardadas em compartimentos (slots).</p>
<p>Herança prototípica é um conceito que a primeira vista parece muito simples, mas que traz consigo algumas implicações bem interessantes. Por exemplo, todas as informações a respeito de um objeto estão nele, e não comportamento no objeto e descrição/formato na classe. Os protótipos também são mais &#8220;contretos&#8221; do que classes, porque eles são exemplos do comportamento do objeto ao invés de apenas descrições deles.</p>
<p>Outra coisa bem interessante é que esta forma de herança encoraja a criação de objetos unicamente especializados. Quando utilizamos classes, geralmente estamos descrevendo vários objetos. O que é um problema quando queremos, por exemplo, instanciar apenas um objeto daquela classe. Será que precisamos declarar uma classe que só será usada por um objeto? Ruby e Smalltalk, por exemplo, têm uma classe usada para descrever cada um dos valores booleanos. Já em Self, precisaríamos de dois objetos comuns, o que se comporta como o valor <em>true</em> e outro que se comporta como <em>false</em>. E se eu quiser um objeto que seja <em>só um pouquinho diferente</em> de outro? Preciso usar herança e sobrescrever um método ou adicionar outro? Bom, acho que deu pra entender do que estou falando&#8230;</p>
<p>Bom, como já havia dito no inicío do post vou ter que escrever mais outro dia, pra dar citar mais diferenças entre os dois paradigmas e dar mais exemplos em código.  Por enquanto dê uma olhada nesse exemplo em javascript, que não tem nada demais pra quem já conhece a linguagem ou já usou metaprogramação em Ruby, Python ou outra linguagem mais dinâmica, mas que serve como um bom ponto de partida pra quem está totalmente cru no assunto.</p>
<p>/* Objetos em Javascript */</p>
<p>var o = new Object();</p>
<p>o['slot1'] = new Object(); // outro objeto</p>
<p>o['slot2'] = 1000;</p>
<p>o['slot3'] = function() { return this.slot2; } //o &#8216;this&#8217; da função vai apontar pro escopo do objeto.</p>
<p>Podemos usar a notação literal de objetos para simplificar um pouco isso:</p>
<p>var o = { slot1 : {}, slot2 : 1000, slot3 : funtion() { return this.slot2; }}</p>
<p>É fácil ver que esse estilo de programação encoraja bastante a adição de comportamentos a um objeto em tempo de execução. Por exemplo, seria trivial escrever código para inserir métodos dinâmicamente em um objeto em Javascript:</p>
<p>var entidade = {}</p>
<p>for (nomeAtr in tabelaDoBanco) {</p>
<p>entidade[nomeAtr] = function() {return valorDoAtributo(nomeAtr)};</p>
<p>}</p>
<p>Mas esse exemplo é bastante simplório. No próximo post vou descrever mais detalhadamente as vantagens de desvantagens de linguagens que usam herança prototípica.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=50&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/10/20/o-que-e-heranca-prototipica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Zen of Python</title>
		<link>http://daltojr.wordpress.com/2009/08/04/zen-of-python/</link>
		<comments>http://daltojr.wordpress.com/2009/08/04/zen-of-python/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:32:48 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=46</guid>
		<description><![CDATA[Embora Ruby tenha algumas coisas bem diferentes em relação ao Python eu tento seguir o Zen of Python sempre que estou programando. Muito educativo e tem um certo senso de humor. ;) Zen of Python Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=46&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Embora Ruby tenha algumas coisas bem diferentes em relação ao Python eu tento seguir o Zen of Python sempre que estou programando. Muito educativo e tem um certo senso de humor. ;)</p>
<p><strong>Zen of Python</strong></p>
<blockquote><p>Beautiful is better than ugly.</p>
<p>Explicit is better than implicit.</p>
<p>Simple is better than complex.</p>
<p>Complex is better than complicated.</p>
<p>Flat is better than nested.</p>
<p>Sparse is better than dense.</p>
<p>Readability counts.</p>
<p>Special cases aren’t special enough to break the rules.</p>
<p>Although practicality beats purity.</p>
<p>Errors should never pass silently.</p>
<p>Unless explicitly silenced.</p>
<p>In the face of ambiguity, refuse the temptation to guess.</p>
<p>There should be one– and preferably only one –obvious way to do it.</p>
<p>Although that way may not be obvious at first unless you’re Dutch.</p>
<p>Now is better than never.</p>
<p>Although never is often better than *right* now.</p>
<p>If the implementation is hard to explain, it’s a bad idea.</p>
<p>If the implementation is easy to explain, it may be a good idea.</p>
<p>Namespaces are one honking great idea — let’s do more of those!</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=46&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/08/04/zen-of-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Alterando tabelas entre migrations</title>
		<link>http://daltojr.wordpress.com/2009/05/04/alterando-tabelas-entre-migrations/</link>
		<comments>http://daltojr.wordpress.com/2009/05/04/alterando-tabelas-entre-migrations/#comments</comments>
		<pubDate>Mon, 04 May 2009 14:01:36 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[migrations]]></category>
		<category><![CDATA[solução]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=44</guid>
		<description><![CDATA[Na semana passada eu tive um problema ao executar algumas migrations, sendo que em uma delas havia uma alteração na estrurura de uma tabela. Acontece que na migration seguinte, eu tentava atualizar alguns registros do modelo que teve sua tabela alterada na migration anterior, e, mesmo sem lançar qualquer tipo de exceção, as alterações não [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=44&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na semana passada eu tive um problema ao executar algumas migrations, sendo que em uma delas havia uma alteração na estrurura de uma tabela. Acontece que na migration seguinte, eu tentava atualizar alguns registros do modelo que teve sua tabela alterada na migration anterior, e, mesmo sem lançar qualquer tipo de exceção, as alterações não surtiam efeito.</p>
<p>Depois de um bom quarto de hora procurando pela resposta no google, encontrei <a href="http://railsforum.com/viewtopic.php?id=27571" target="_blank">esse post</a> no <a title="Rails Forum" href="http://railsforum.com/" target="_blank">fórum do rails</a>, que explica o porquê e como resolver essa situação esquisita.</p>
<p>A solução é a seguinte: depois de alterar a estrutura de uma tabela em uma migration, você deve chamar o método reset_column_information do seu modelo, para que o Rails atualize os dados do mesmo, coisa que ele não faz por padrão.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=44&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/05/04/alterando-tabelas-entre-migrations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>Podcasts para desenvolvedores</title>
		<link>http://daltojr.wordpress.com/2009/04/23/podcasts-para-desenvolvedores/</link>
		<comments>http://daltojr.wordpress.com/2009/04/23/podcasts-para-desenvolvedores/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 10:31:05 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=40</guid>
		<description><![CDATA[Já faz algum tempo que eu estou escutando alguns podcasts relacionados à programação. Vou colocar os links dos que estou escutando ultimamente e quando achar mais algum interessante, coloco aqui também. Em português: Rails Podcast Brasil Improvecast Em inglês: Stack Overflow Rails Envy Por hoje é só!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=40&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Já faz algum tempo que eu estou escutando alguns podcasts relacionados à programação. Vou colocar os links dos que estou escutando ultimamente e quando achar mais algum interessante, coloco aqui também.</p>
<p>Em português:</p>
<p><a href="http://podcast.rubyonrails.pro.br/" target="_blank">Rails Podcast Brasil</a></p>
<p><a href="http://improveit.com.br/podcast" target="_blank">Improvecast</a></p>
<p>Em inglês:</p>
<p><a href="http://blog.stackoverflow.com/category/podcasts/" target="_blank">Stack Overflow</a></p>
<p><a href="http://www.railsenvy.com/podcast" target="_blank">Rails Envy</a></p>
<p>Por hoje é só!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=40&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/04/23/podcasts-para-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
		<item>
		<title>REPL</title>
		<link>http://daltojr.wordpress.com/2009/03/18/repl/</link>
		<comments>http://daltojr.wordpress.com/2009/03/18/repl/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 03:13:04 +0000</pubDate>
		<dc:creator>Dalto</dc:creator>
				<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://daltojr.wordpress.com/?p=31</guid>
		<description><![CDATA[Depois de alguns meses programando apenas em Ruby, vou trabalhar em um projeto relâmpago (1 mês) usando Java. Uma das coisas que eu senti falta logo de começo foi um console para que eu possa testar pequenos trechos de código rapidamente. Fiz uma pequena pesquisa e vi que muita gente já usava Groovy, BeanShell, Rhino [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=31&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Depois de alguns meses programando apenas em Ruby, vou trabalhar em um projeto relâmpago (1 mês) usando Java. Uma das coisas que eu senti falta logo de começo foi um console para que eu possa testar pequenos trechos de código rapidamente.</p>
<p>Fiz uma pequena pesquisa e vi que muita gente já usava <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a>, <a href="http://www.beanshell.org/" target="_blank">BeanShell</a>, <a href="http://www.mozilla.org/rhino/" target="_blank">Rhino</a> ou <a href="http://jruby.codehaus.org/" target="_self">JRuby</a> para este fim. Não cheguei a testar todas e tenho certeza que o console dessas linguagens pode ser uma mão na roda, mas como estou imerso em Ruby ultimamente, optei pelo JRuby.</p>
<p>A instalação do JRuby no Debian é bastante simples, um apt-get install jruby dá conta do recado. A única coisa que eu tive que mexer no meu ambiente de trabalho foi adicionar um alias no meu .zshrc (equivalente ao .bashrc para usuários de bash) pra poder chamar o jirb na linha de comando sem precisar colocar a versão do programa no final.</p>
<p>O que eu precisei fazer foi basicamente:</p>
<p>apt-get install jruby</p>
<p>cd ~</p>
<p>echo &#8220;alias jirb=&#8217;jirb1.0&#8242;&#8221; &gt;&gt; .zshrc</p>
<p>source .zshrc</p>
<p>Depois apenas segui um <a title="Tutorial jirb" href="http://jruby.codehaus.org/The+JRuby+Tutorial+Part+1.5+-+Using+JIRB+to+Check+Java+Behaviour" target="_blank">tutorial</a> que explica como testar o comportamento de algumas classes do Java no jirb e voilá, agora já posso testar classes Java com muito mais praticidade. :)</p>
<p>No wiki do jruby tem <a href="http://wiki.jruby.org/wiki/Calling_Java_from_JRuby">mais informações</a> sobre como chamar código Java de dentro do Ruby.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daltojr.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daltojr.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daltojr.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daltojr.wordpress.com&amp;blog=5739011&amp;post=31&amp;subd=daltojr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daltojr.wordpress.com/2009/03/18/repl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/81111eea4c7c927f038a45d657a12666?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Dalto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
