<?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>Diego Plentz &#187; work</title>
	<atom:link href="http://plentz.org/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://plentz.org</link>
	<description>plentiful thoughts from my empty head</description>
	<lastBuildDate>Sat, 03 Jul 2010 06:17:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JSUnit</title>
		<link>http://plentz.org/2007/02/09/jsunit/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jsunit</link>
		<comments>http://plentz.org/2007/02/09/jsunit/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 01:14:23 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://plentz.org/2007/02/09/js-tambem-precisa-de-teste-unitario/</guid>
		<description><![CDATA[Depois de quebrar a cabeça por um bom tempo, descobri que após adicionar a lib Prototype ao projeto, algumas validações javascript simplesmente deixaram de funcionar. O for in, que antes funcionava corretamente, muda seu comportamento devido à magia negra que o Prototype faz, adicionando algumas propriedades extras aos objetos (e também à arrays). Se eu [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/joomanji/153911268/" title="Crash Test Anyone?"><img src="http://farm1.static.flickr.com/72/153911268_7ba3fcbdc3_m.jpg" alt="Crash Test Anyone?" height="160" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>Depois de quebrar a cabeça por um bom tempo, descobri que após adicionar a lib <a href="http://prototypejs.org/">Prototype</a> ao projeto, algumas validações javascript simplesmente deixaram de funcionar. O <em>for in</em>, que antes funcionava corretamente, muda seu comportamento devido à magia negra que o <a href="http://prototypejs.org/">Prototype</a> faz, adicionando algumas propriedades extras aos objetos (e também à arrays).</p>
<p>Se eu tivesse feito uma dúzia de <a href="http://jsunit.net/">JSUnit</a>s teria evitado mais de duas horas de tempo perdido, literalmente.</p>
<p>O que antes era:</p>
<p><code>  o.isCNPJ = function(){<br />
    var d = this.split("");<br />
    var m1 = [d[0]*5,d[1]*4,d[2]*3,d[3]*2,d[4]*9,d[5]*8,d[6]*7,d[7]*6,d[8]*5,d[9]*4,d[10]*3,d[11]*2];<br />
    var s1 = 0;<br />
    for(i in m1){ s1 += m1[i]; }<br />
    var d1 = (s1%11&lt;2)?0:11-(s1%11);<br />
    var m2 = [d[0]*6,d[1]*5,d[2]*4,d[3]*3,d[4]*2,d[5]*9,d[6]*8,d[7]*7,d[8]*6,d[9]*5,d[10]*4,d[11]*3,d1*2];<br />
    var s2 = 0;<br />
    for(i in m2){ s2 += m2[i]; }<br />
    var d2 = (s2%11&lt;2)?0:11-(s2%11);<br />
    return (d1 == d[12] &#038;&#038; d2 == d[13])? true: false;<br />
  } </code></p>
<p>Teve que virar:</p>
<p><code>o.isCNPJ = function(){<br />
  var d = this.split("");<br />
  var m1 = [d[0]*10,d[1]*9,d[2]*8,d[3]*7,d[4]*6,d[5]*5,d[6]*4,d[7]*3,d[8]*2];<br />
  var s1 = 0;<br />
  for(var i=0;i < m1.length; i++){ s1 += m1[i]; }<br />
  var d1 = (s1 % 11 < 2)?0:11-(s1 % 11);<br />
  var m2 = [d[0]*11,d[1]*10,d[2]*9,d[3]*8,d[4]*7,d[5]*6,d[6]*5,d[7]*4,d[8]*3,d1*2];<br />
  var s2 = 0;<br />
  for(var i=0;i < m2.length; i++){ s2 += m2[i]; }<br />
  var d2 = (s2%11&lt;2)?0:11-(s2%11);<br />
  return (d1 == d[9] &#038;&#038; d2 == d[10])? true: false;<br />
}</code></p>
<p>Nessas horas que vemos que <a href="http://martinfowler.com/bliki/TestDrivenDevelopment.html">testes unitários</a> sempre se pagam.</p>
<p></code></p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=151&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2007/02/09/jsunit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails</title>
		<link>http://plentz.org/2005/11/20/ruby-on-rails/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ruby-on-rails</link>
		<comments>http://plentz.org/2005/11/20/ruby-on-rails/#comments</comments>
		<pubDate>Sun, 20 Nov 2005 09:38:53 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://plentz.org/2005/11/20/ruby-on-rails/</guid>
		<description><![CDATA[Rails é uma alternativa às soluções padronizadas qualificadas como &#8220;empresariais&#8221;, que implicam enormes cargas de trabalho sob o custo da compatibilidade com o vicioso ciclo burocrático de consultoria e treinamento que afeta as grandes empresas. Rails tem como proposta remover várias camadas de complexidade, salientando a capacidade individual do desenvolvedor em detrimento dos requerimentos burocráticos [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rubyonrails.com/"><img src="http://web.rubyonrails.com/images/rails_logo_remix.gif" style="float: right; margin-left: 10px; margin-bottom: 10px;" /></a></p>
<p><a href="http://rubyonrails.com/">Rails</a> é uma alternativa às soluções padronizadas qualificadas como &#8220;empresariais&#8221;, que implicam enormes cargas de trabalho sob o custo da compatibilidade com o vicioso ciclo burocrático de consultoria e treinamento que afeta as grandes empresas. <a href="http://rubyonrails.com.br">Rails</a> tem como proposta remover várias camadas de complexidade, salientando a capacidade individual do desenvolvedor em detrimento dos requerimentos burocráticos de equipe. Isso não deve passar a impressão, entretanto, de que Rails não é adequado para o trabalho em equipe. Rails adere ao padrão MVC de forma pragmática o bastante para promover uma separação clara de papéis, e ainda facilita o emprego de técnicas de Agile e Test-Driven Development.</p>
<p>O objetivo deste texto não é comparar Ruby com outras linguagens, mas sim mostrar as principais vantagens que um desenvolvedor pode ter utilizando este framework.</p>
<p>Antes de começar a citar os pontos positivos, me deixem esclarecer uma coisa: o foco do Ruby on Rails não é aplicações mission critical, super-clusterizadas, mega-distribuídas. Não que seja impossível realizar estas tarefas com Rails, mas não é a ferramenta adequada para tal. Bom, começando:</p>
<p><strong>Simplicidade</strong> &#8211; esta é uma característica forte em Ruby, pois a solução de um problema, normalmente, é atingida de uma forma extremamente simples e clara, o que facilita o entendimento do código por outros programadores que tiverem que dar manutenção no futuro.</p>
<p><strong>Produtividade</strong> &#8211; se o desenvolvedor consegue resolver seu problema de uma forma mais simples, clara e concisa, tendo ferramentas que facilitem sua vida, o desenvolvimento se torna mais agradável. Programador feliz = programador mais produtivo.</p>
<p><strong>Convention over configuration</strong> &#8211; o Rails se baseia no princípio convenção sobre configuração. Ao invés de criar dezenas de XML&#8217;s para configuração, basta utilizar algumas conveções pré-definidas. Nada de XML.</p>
<p><strong>Maturidade</strong> &#8211; a linguagem que está cada vez mais madura (e não é nova, pois já existe a cerca de 10 anos, quando foi criada pelo japonês Yukihiro Matsumoto, a.k.a. Matz).</p>
<p><strong>Active Record</strong> &#8211; é o responsável pela persistência dos dados para quem utiliza Rails, sendo um <a href="http://www.theserverside.com/articles/article.tss?l=RailsHibernate">competidor à altura</a> do <a href="http://hibernate.org/">Hibernate</a>, seguindo uma abordagem <a href="http://www.martinfowler.com/eaaCatalog/activeRecord.html">um pouco diferente</a> da usada <a href="http://www.martinfowler.com/eaaCatalog/dataMapper.html">pelo concorrente</a>. É compatível com os principais bancos de dados do mercado: Oracle, SQL Server, IBM DB2, MySQL, PostgreSQL, SQLite and Firebird.</p>
<p><strong>IDE&#8217;s</strong> &#8211; já possui uma boa gama de ferramentas, como <a href="http://www.radrails.org/">RadRails</a>, <a href="http://rubyeclipse.sourceforge.net/">RDT &#8211; Ruby Development Tools</a>, <a href="http://www.jedit.org/ruby/">Ruby Editor Plugin for JEdit</a>, <a href="http://freeride.rubyforge.org/wiki/wiki.pl">FreeRIDE</a>, <a href="http://www.mondrian-ide.com/">Mondrian IDE</a>, <a href="http://www.hyperionreactor.net/node/43">Ruby Emacs bindings</a>, <a href="http://macromates.com/">TextMate</a>, <a href="http://www.ruby-ide.com/ruby/ruby_ide_and_ruby_editor.php">ArachnoRuby</a>, <a href="http://www.zeusedit.com/ruby.html">Zeus</a>, <a href="http://www.activestate.com/Products/Komodo/">Komodo</a>.</p>
<p><strong>Suporte nativo para Ajax</strong> &#8211; Ruby on Rails vem por padrão com o framework Ajax <a href="http://script.aculo.us/">script.aculo.us</a>, que permite a adição de recursos de interface (como <a href="http://script.aculo.us/demos/ajax/autocompleter_customized">auto-complete para campos</a>, <a href="http://script.aculo.us/demos/shop">drag and drop&#8217;s</a>, <a href="http://wiki.script.aculo.us/scriptaculous/show/Demos">etc</a>) mais ricos e sem gastar horas desenvolvendo.</p>
<p><strong>Testing is built-in</strong> &#8211; <a href="http://junit.org/">JUnit</a>, <a href="http://testng.org/">TestNG</a>? Ruby on Rails já vem com tudo que você precisa para testar sua aplicação. E com o lançamento da versão 1.0 <a href="http://clarkware.com/cgi/blosxom/2005/10/24">ficará ainda mais fácil</a>. <a href="http://www.agiledata.org/essays/tdd.html">Test Driven Development</a> otimizado.</p>
<p><strong>Curva de aprendizado</strong> &#8211; aprender como funciona uma aplicação criada com Rails <a href="http://weblog.rubyonrails.com/archives/2005/10/28/comparing-technology-stacks-of-books">é mais simples que em outras tecnologias</a> com as quais já tive contato (Java, PHP, ASP(COM+), Coldfusion), como também para quem está querendo começar a desenvolver.</p>
<p><strong>Segurança</strong> &#8211; Rails tem todas as features que qualquer outro framework tem como suporte à LDAP, logging, etc.</p>
<p><strong>Cross-plataform</strong> &#8211; suporta Linux e outras variantes UNIX, BeOS, OSX, BSD e também, é claro, Windows.</p>
<p><strong>OpenSource</strong> &#8211; completamente código aberto, assim como 99% das libraries disponíveis para ele.</p>
<p><strong>Feedback instantâneo</strong> &#8211; edite o código, salve, dê refresh e a alteração está lá.</p>
<p><strong>Integração</strong> &#8211; de uma forma similar ao .NET, a maioria dos componentes do Rails se integra facilmente, o que facilita o desenvolvimento.</p>
<p><strong>Code generation</strong> &#8211; você não precisa criar sempre toda a estrutura de código, o que permite um desenvolvimento mais rápido.</p>
<p><strong><acronym title="Don't Repeat Yourself">DRY</acronym> principle</strong> &#8211; <strong>D</strong>on&#8217;t <strong>R</strong>epeat <strong>Y</strong>ourself é um conceito &#8216;criado&#8217; por Dave Thomas (autor do livro <a href="http://www.amazon.com/gp/product/020161622X/103-9776861-2339043?v=glance&#038;n=283155&#038;s=books&#038;v=glance&#038;tagActionCode=billvennersA">The Pragmatic Programmer</a>) que <a href="http://c2.com/cgi/wiki?DontRepeatYourself">parafraseando</a> significa:</p>
<blockquote><p>Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.</p></blockquote>
<p>Acredito que os itens acima já tenham sido suficientes para despertar a curiosidade para testá-lo. Se você estiver interessado em fazer alguém testar Ruby on Rails mas não quer ter muito trabalho, recomendo mostrar o vídeo <a href="http://www.rubyonrails.com/media/video/rails_take2_with_sound.mov">Take 2: Impressing with Rails 0.13</a>, criado originalmente para ser usado no <a href="http://chopin.softwarelivre.org/6.0/">FISL 6.0</a>,  onde <a href="http://www.loudthinking.com">David Heinemeier Hansson</a> mostra como criar um blog em 15 minutos.</p>
<p>Mas se você ainda não se convenceu que Ruby on Rails pode ser uma boa opção para seu projeto, abaixo seguem alguns links que reforçam o que eu falei:</p>
<p><a href="http://www.eweek.com/article2/0,1895,1880280,00.asp">Ruby on Rails: Making Programmers Happy</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a> no site eWeek.</p>
<p><a href="http://blogs.zdnet.com/BTL/?p=2094">Making programmers more productive</a><br />
<a href="http://www.windley.com">Phil Windley</a> escreve sobre suas impressões sobre Rails.</p>
<p><a href="http://www.hackdiary.com/archives/000071.html">The BBC&#8217;s programme catalogue (on Rails)</a><br />
BBC está usando Rails para o seu catálogo com alguns milhões de shows.</p>
<blockquote><p>&#8230;BBC have allowed me to rapidly prototype and deploy this 7,000,000-row database-backed site in everyone&#8217;s new favourite web framework&#8230;</p></blockquote>
<p><a href="http://www-128.ibm.com/developerworks/linux/library/wa-rubyonrails/?ca=dgr-lnxw01RubyAndJ2EE">Ruby on Rails and J2EE: Is there room for both?</a><br />
Aaron Rustad faz uma comparação entre as principais features da arquitetura do Rails com os tradicionais frameworks J2EE</p>
<p><a href="http://jlaine.net/blog/83/interview-with-david-heinemeier-hansson">Interview with DHH</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a>, criador do Rails.</p>
<p><a href="http://johnwlong.com/slides/gettothepoint/index.html">Get to the point!Development with Ruby and Rails</a><br />
Apresentação mostrando as principais features da linguagem (Ruby em si, não especificamente do framework Rails). Muito bom pra mostrar para seu chefe(desde que ele seja/tenha sido um progrmador).</p>
<p><a href="http://news.com.com/Ruby+on+Rails+chases+simplicity+in+programming/2100-1007_3-5920169.html?tag=nefd.lede">Ruby on Rails chases simplicity in programming</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a>, criador do Rails (saiu também no <a href="http://news.zdnet.com/2100-3513_22-5920169.html?tag=nl.e589">ZDnet</a>).</p>
<p><a href="https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2111">SAP on Rails, and not on the skids</a><br />
Com apenas algumas linhas de código, <a href="https://weblogs.sdn.sap.com/pub/u/8630">Piers Harding</a> mostra como fazer integração com SAP, mostrando um pouco da flexibilidade do framework.</p>
<p><a href="http://rewrite.rickbradley.com/pages/moving_to_rails">Evaluation: moving from Java to Ruby on Rails for the CenterNet rewrite</a><br />
Case study muito interessante da migração do CenterNet(um grande aplicação da área de sáude) de Java para Ruby on Rails. E por ter sido feito em 6 vezes menos tempo (8 dias contra 6 semanas do Java) com uma redução de 20:1 para código, eu diria que sim, é uma redução <strong>bem</strong> relevante. Antes que alguns trolls apareçam criticando, sim, migrar uma aplicação é mais rápido do que desenvolver ela do zero, mas convenhamos, 20:1 é um número incontestável.</p>
<p><a href="http://www.onjava.com/lpt/a/6334">Ruby the Rival</a><br />
Entrevista com alguns desenvolvedores experientes, mostrando sua visão da linguagem Ruby.</p>
<p><a href="http://wiki.rubyonrails.org/rails/pages/RealWorldUsage">Ruby on Rail &#8211; Real World Usage</a><br />
Uma lista com algumas empresas que já estão usando Rails em aplicações reais.</p>
<p><a href="http://www.eweek.com/article2/0,1895,1880199,00.asp">Ruby on Rails Dev Framework on Track for Growth</a></p>
<p><a href="http://www-128.ibm.com/developerworks/linux/library/l-rubyrails/">Fast-track your Web apps with Ruby on Rails</a><br />
David Mertz demonstra através de uma mini-aplicação algumas vantagens do framework.</p>
<p>E isso pode ser o fim dos outros frameworks, seja Java, .Net, PHP, para desenvolvimento mainstream? Dificilmente. Que todo mundo abandonará Java e migrar para Rails? Com certeza, não.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=123&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2005/11/20/ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.rubyonrails.com/media/video/rails_take2_with_sound.mov" length="54364199" type="video/quicktime" />
		</item>
	</channel>
</rss>
