<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>abstractj.com</title>
 <link href="/feeds/articles.xml" rel="self"/>
 <link href="/"/>
 <updated>2012-02-02T03:28:07-02:00</updated>
 <id>/</id>

 
 <entry>
   <title>TorqueBox - O melhor dos dois mundos</title>
   <link href="/2011/08/05/gurusp-torquebox-best_of_two_worlds"/>
   <updated>2011-08-05T00:00:00-03:00</updated>
   <id>/2011/08/05/gurusp-torquebox-best_of_two_worlds</id>
   <content type="html">&lt;p&gt;Some weeks ago, I talked about TorqueBox here in Brazil at meeting of GURU-SP. For people who don’t know, this is amazing group of people that loves ruby and technology.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://lh6.googleusercontent.com/-WXlpwIlfyXk/Ti27zIFg5yI/AAAAAAAAAEY/fPSt5_g4NXo/s720/IMG_7661.JPG&quot; alt=&quot;gurusp_meeting&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I appreciate the opportunity to talk at Caelum, was great to see that the auditorium was crowded and a lot of rubyists are open to Java technologies. Here comes my slides:&lt;/p&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_8672320&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/bruno.abstractj/torquebox-o-melhor-dos-dois-mundos&quot; title=&quot;Torquebox - O melhor dos dois mundos&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/8672320&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/bruno.abstractj&quot; target=&quot;_blank&quot;&gt;Bruno Oliveira&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Moving again...</title>
   <link href="/2011/08/04/moving-again"/>
   <updated>2011-08-04T00:00:00-03:00</updated>
   <id>/2011/08/04/moving-again</id>
   <content type="html">&lt;p&gt;For a long time, I had been hosting my old “nobody cares” blog with wordpress, because this was the fastest way to put my stuff online. Over the time, like a stupid lazy boy, write less became a common habit with no excuses for this.&lt;/p&gt;

&lt;p&gt;The reason to move is not related with any kind of service, is just because I don’t need a bunch of online tools to write a simple text. Just need a place to store my thoughts with no worries.&lt;/p&gt;

&lt;p&gt;Don’t get angry with me, but I really don’t mind about blog layout/design and believe when I say this. The main goal is to write and I’m comfortable with simple things, because simpler is better, for this reason I’m moving my entire blog to S3 with &lt;a href=&quot;http://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt;, maybe in the near future I’ll try &lt;a href=&quot;http://awestruct.org/&quot;&gt;awestruct&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I don’t want to to sound like a jerk, but if you don’t like something here, just move on. I’m just writing to my own amusement.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Meu ambiente de desenvolvimento em 7 items</title>
   <link href="/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items"/>
   <updated>2010-12-29T00:00:00-02:00</updated>
   <id>/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items</id>
   <content type="html">&lt;a href=&quot;http://abstractj.files.wordpress.com/2010/12/bowie_knife_lg.jpg&quot;&gt;&lt;p&gt;&lt;/a&gt;Recebi a intimação do amigo &lt;a href=&quot;http://marcelocastellani.com/&quot; target=&quot;_blank&quot;&gt;Castellani&lt;/a&gt; para falar do meu ambiente de trabalho, essa brincadeira começou com o Lucas Catón, passando pelo &lt;a href=&quot;http://vinibaggio.net/Geral/ambiente-de-desenvolvimento-em-7-itens/&quot; target=&quot;_blank&quot;&gt;@vinibaggio&lt;/a&gt;, &lt;a href=&quot;http://blog.qmx.me/2010/12/29/ambiente-de-desenvolvimento-em-6-itens&quot; target=&quot;_blank&quot;&gt;@qmx&lt;/a&gt; e chegou minha vez. Assim como todos, vou seguir a receita de bolo com os 7 itens:&lt;/p&gt;

&lt;strong&gt;Máquina/Sistema Operacional&lt;/strong&gt;

&lt;p&gt;Acredito que faça parte da rotina conhecer um pouco de cada OS na hora de desenvolver. Sou usuário GNU/Linux desde 2001, época em que utilizava Slackware até na geladeira de casa, essa distro me acompanhou por uns bons anos.&lt;/p&gt;

&lt;p&gt;Com o decorrer do tempo, fui ficando mole, começei a usar Ubuntu e fui picado pelo bichinho da maçã, desde então OSX é o padrão. Gosto de Linux, mas acho o Mac melhor e não troco. Tenho Debian e Windows instalados em VM, que uso pra simular alguns cenários do dia a dia.&lt;/p&gt;

&lt;strong&gt;Editor&lt;/strong&gt;

&lt;p&gt;Comecei utilizando &lt;em&gt;&lt;strong&gt;vi&lt;/strong&gt;&lt;/em&gt;, acredito que é uma das experiências mais interessantes que se tem, ser obrigado a pensar sem uma IDE, aprendi bastante com isso.&lt;/p&gt;

&lt;p&gt;Desenvolver em Java Eclipse é unânime como ferramenta de edição, mas não consegui ficar longe do vi, então encontrei um meio termo com a dica do @qmx, &lt;a href=&quot;eclim.org&quot; target=&quot;_blank&quot;&gt;eclim&lt;/a&gt;. Basicamente foi juntar o útil ao agradável sem perder as funcionalidades do eclipse e abrir mão do macvim com &lt;a href=&quot;https://github.com/qmx/vimdir&quot; target=&quot;_blank&quot;&gt;vários&lt;/a&gt; &lt;a href=&quot;https://github.com/abstractj/vim-files&quot; target=&quot;_blank&quot;&gt;plugins&lt;/a&gt; que tenho.&lt;/p&gt;

&lt;strong&gt;Terminal&lt;/strong&gt;

&lt;p&gt;Bash com algumas customizações no bash_profile.&lt;/p&gt;

&lt;strong&gt;Browser&lt;/strong&gt;

&lt;p&gt;Apesar da reclamação de alguns sobre consumo de memória, eu gosto do Firefox, pela quantidade absurda de plugins que existem.&lt;/p&gt;

&lt;strong&gt;Software&lt;/strong&gt;
&lt;ul&gt;
	&lt;li&gt;macvim&lt;/li&gt;
	&lt;li&gt;Skype e Adium&lt;/li&gt;
	&lt;li&gt;iTunes ou grooveshark aberto no browser&lt;/li&gt;
	&lt;li&gt;Dropbox&lt;/li&gt;
	&lt;li&gt;Calibre (sempre consulto minha biblioteca pessoal)&lt;/li&gt;
	&lt;li&gt;Parallels (pra gerenciar minhas VMs)&lt;/li&gt;
	&lt;li&gt;Yoru Furukou (Twitter)&lt;/li&gt;
	&lt;li&gt;Keynote (quando é necessário apresentar alguma coisa)&lt;/li&gt;
	&lt;li&gt;reeder for mac (no iPod também)&lt;/li&gt;
	&lt;li&gt;Preview (com vários livros abertos)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source-Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;del&gt;Já usei SourceSafe (a força)&lt;/del&gt;, SVN por um bom tempo até surgir um controle de versão descente. Git (controle de versão de verdade) nos dias de hoje me salva um rim a todo instante, inclusive para projetos com SVN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Música&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fones de ouvidos são tão necessários quanto um bom OS, normalmente anti-sociais, ajudam a manter o foco e isolar o barulho de qualquer ambiente aberto. Nenhum gênero musical em específico, mas metal comanda a playlist.&lt;/p&gt;

&lt;p&gt;Passo a brincadeira pros amigos &lt;a href=&quot;http://www.milfont.org/tech/&quot; target=&quot;_blank&quot;&gt;@cmilfont&lt;/a&gt;, &lt;a href=&quot;http://ahalmeida.com/&quot; target=&quot;_blank&quot;&gt;@adrianoalmeida7&lt;/a&gt; e &lt;a href=&quot;http://www.ferbass.com/&quot; target=&quot;_blank&quot;&gt;@fer_bass&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Match cases on Scala</title>
   <link href="/2010/12/10/match-cases-on-scala"/>
   <updated>2010-12-10T00:00:00-02:00</updated>
   <id>/2010/12/10/match-cases-on-scala</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=zmYqShvVDh4&quot;&gt;Functional programming&lt;/a&gt; is a well-know paradigm present in languages like Scheme, Haskell, Lisp and others, the main goal is to provide code easy to write and reuse.  This paradigm concept came from mathematics, where expressions are evaluated to functions and they always return the same result every time asked. Think about the Haskell code below:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;haskell&quot;&gt;&lt;span class=&quot;nf&quot;&gt;factorial&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;::&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Integer&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Integer&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;factorial&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;factorial&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;factorial&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;If you try to put some output from this function, &lt;a href=&quot;http://en.wikipedia.org/wiki/Pure_function&quot;&gt;the code will miserably fail&lt;/a&gt;. Functional languages don't like to deal with side-effects, for this reason they are immutable and selfish to share state.  &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; came with purpose of bringing mixed-paradigm concept to JVM, &lt;a href=&quot;http://blog.caelum.com.br/2010/12/06/modelando-as-classes-do-fj-16-em-scala/&quot;&gt;taking the benefits&lt;/a&gt; from both the worlds: functional and object oriented. This language was designed to keep your hand safe from write a bunch of code, with the gift of full concurrency support.  One of the great features inherited from functional languages is &lt;a href=&quot;http://en.wikibooks.org/wiki/Haskell/Pattern_matching&quot;&gt;pattern matching&lt;/a&gt;. This feature provides a way to choose between multiple choices based on types.  In Java, case conditions are restricted to primitive or enumerated types, is not possible to have switch/case accordingly with &lt;a href=&quot;http://blog.rafaelferreira.net/2009/10/type-safe-printf-in-scala.html&quot;&gt;object type&lt;/a&gt;. Scala addresses these gaps more efficiently than Java:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;scala&quot;&gt;&lt;span class=&quot;k&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mylist&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;QconSP&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;10.2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;myItem&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mylist&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;myItem&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Integer feelings: &amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;String feelings &amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Double&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Double feelings &amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;There's nothing new for Ruby programmers, that also have pattern matching inside. The code above created an immutable variable with &lt;strong&gt;val&lt;/strong&gt; and &lt;strong&gt;match&lt;/strong&gt; keyword which provides a way to apply pattern matching function.  Functional features built inside Scala &lt;a href=&quot;http://www.scala-lang.org/node/120&quot;&gt;enhanced matching case&lt;/a&gt; work more efficiently than languages like Java or Ruby. Take a look at this example matching on sequences:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;scala&quot;&gt;&lt;span class=&quot;k&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list2&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;52&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;list1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;3 found&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;7 found&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Matching on sequences enable you to look inside collections in a eager evaluation. Here we are looking for a &lt;strong&gt;List&lt;/strong&gt; that have 3 like a second item and 7 for the last, the bizarre &lt;strong&gt;_&lt;/strong&gt; is a &lt;strong&gt;wildcard&lt;/strong&gt;, it matches &lt;strong&gt;anything&lt;/strong&gt; not defined in cases.  Match cases are not only for collections, you can use this function to find objects. Suppose you specifically need to know if an object contains some value, match on classes could solve this problem, better than deal with a lot of frameworks. The last one of our Swiss knife:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;scala&quot;&gt;&lt;span class=&quot;k&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rock&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Music&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Metallica&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;Rock&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;classical&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Music&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Bach&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;Classical&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
 
 &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;music&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rock&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;classical&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;n&quot;&gt;music&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
     &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Music&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Metallica&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;Rock&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;metal&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
     &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Music&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;Bach&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;Classical&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;calm&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
   &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Pattern Matching become useful when you have to deal with Actors (subject for another post), because case classes are sent as messages and have to be parsed when received.  This feature is not a particularity from Scala, is a inheritance from functional languages and help you where object oriented languages don't fit well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>QCON São Paulo 2010</title>
   <link href="/2010/08/11/qcon-sao-paulo-2010"/>
   <updated>2010-08-11T00:00:00-03:00</updated>
   <id>/2010/08/11/qcon-sao-paulo-2010</id>
   <content type="html">&lt;p&gt;﻿&lt;span style=&quot;color:#444444;&quot;&gt;&lt;em&gt;&quot;Com sistemas cada vez mais complexos, o QCon aborda não apenas uma única tecnologia ou aspecto: passa de Java, .NET e Rails até Arquitetura, Design, Cloud, Escalabilidade, Replicação, Cache e casos de sucesso.&quot;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Durante os dias 11 e 12 de Setembro ocorrerá a QCon, um evento que contará com &lt;a href=&quot;http://www.qconsp.com/palestrantes&quot;&gt;nomes do cenário nacional e internacional&lt;/a&gt; de desenvolvimento de software, serão 6 temas, 40 palestras em 2 dias de troca de experiências. Caso não tenha feito sua inscrição, acelere o passo e &lt;a href=&quot;http://www.qconsp.com/inscricoes&quot;&gt;faça&lt;/a&gt; o quanto antes.&lt;/p&gt;
&lt;p&gt;Eu junto com o &lt;a href=&quot;http://qmx.me/&quot;&gt;Douglas&lt;/a&gt; apresentarei uma das palestras, falaremos sobre ambientes onde escalabilidade não é opcional, mas uma questão de sobrevivência. Espero você lá para!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&quot;font-size:17px;&quot;&gt;&lt;em&gt;﻿&lt;/em&gt;&lt;strong&gt;&lt;em&gt;Palestra: Domesticando dragões com soluções escaláveis.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;font-size:17px;&quot;&gt;&lt;strong&gt;&lt;em&gt;Resumo&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Usuários exigentes, burocracia, prazos surreais, acabam por consumir grande parte dos esforços de um time, e muitas vezes, aspectos essenciais como escalabilidade, resiliência, tolerância a falhas, acabam sendo negligenciados.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Nosso objetivo é desmistificar alguns desses tópicos geralmente renegados, mostrando soluções simples com java ou ruby altamente escaláveis, fazendo uso tanto de tecnologias já estabelecidas no mercado, como de algumas novidades, e também como aferir se a sua abordagem está produzindo o resultado esperado: sistemas rápidos, com uso eficiente da capacidade disponível, e que vão permitir que você tenha noites tranquilas de sono.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>Montanhismo digital</title>
   <link href="/2010/08/09/montanhismo-digital"/>
   <updated>2010-08-09T00:00:00-03:00</updated>
   <id>/2010/08/09/montanhismo-digital</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://abstractj.files.wordpress.com/2010/08/free_climb.jpg&quot;&gt;&lt;/a&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt;Um bom alpinista quando decide subir qualquer montanha, busca o máximo de informação necessária a sobrevivência. Desconhecer terreno, condições climáticas, topografia do lugar e mesmo assim se dispor a enfrentar uma montanha, esconde por trás da teimosia, estupidez.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt;Software não é muito distante dessa realidade, ser dogmático em relação a uma tecnologia ou solução sem levantar algumas informações antes, pode resultar em um &lt;em&gt;overcapacity&lt;/em&gt; homérico. &lt;/span&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt;nformações sobre infra-estrutura, &lt;em&gt;capacity&lt;/em&gt;, quantidade de requisições simultâneas e perspectiva de crescimento do sistema devem ser levadas em consideração antes de decidir entre alguma tecnologia &lt;em&gt;hype&lt;/em&gt; ou algo pré-existente.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;line-height:24px;font-size:16px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Se sua aplicação usa &lt;em&gt;C&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;assandra&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;, &lt;em&gt;R&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;escue&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;, roda no &lt;em&gt;C&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;loud&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt; ou é completamente feita em &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;Scala &lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;e sai do ar, ninguém vai querer saber qual parafernalha tecnológica você usou, e se a arquitetura é digna de ser exposta no &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;a href=&quot;www.masp.art.br&quot;&gt;MASP&lt;/a&gt;. A principal pergunta será: &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&quot;&lt;em&gt;Quando o sistema volta ao ar?&lt;/em&gt;&quot;.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Aumentar o &lt;em&gt;capacity&lt;/em&gt; do servidor pode ser uma alternativa para amenizar o caos. Considere antes disso alguns itens antes de pensar em um famigerado &lt;em&gt;upgrade&lt;/em&gt; do servidor (estamos longe de uma lista completa aqui):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Quantidade de transações por segundo suportadas&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Perspectiva de crescimento do sistema em horas, dias, meses, anos...&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Largura de banda disponível para atender as requisições&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Capacidade de armazenamento do servidor de banco de dados&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Quantidades de &lt;em&gt;threads&lt;/em&gt; ou processos executados&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Realizar &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;upgrade&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt; de hardware, pode resolver temporariamente, porém, acrescentar mais recursos não vai fazer com que uma aplicação escale melhor, é necessário saber: &quot;&lt;em&gt;O que você quer escalar?&lt;/em&gt;&quot;, &quot;&lt;em&gt;Como?&lt;/em&gt;&quot; e &quot;&lt;em&gt;Porque?&lt;/em&gt;&quot;. &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;De nada adianta superestimar hardware ou colocar a aplicação no &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;Cloud&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;, é preciso saber como e quais recursos a aplicação irá consumir, simular situações de &lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;em&gt;stress&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt; com o objetivo de avaliar o comportamento da aplicação em diferentes situações e identificar possíveis pontos de falha, cogite problemas de &lt;a href=&quot;http://blog.caelum.com.br/2010/07/29/top-7-praticas-para-um-site-otimizado/&quot;&gt;performance na aplicação&lt;/a&gt;, antes de blasfemar contra o servidor.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Assim como no alpinismo, escalar montanhas sem informação resulta em morte, desenvolver sistemas desconhecendo o comportamento real em situações de alto processamento, fará com que você não saiba o que fazer em situações críticas, adotando sempre soluções de contorno. Conhecer o comportamento de uma aplicação, é mais do que exibir gráficos legais em forma de ppt ao cliente, é questão de sobrevivência.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;Vale conferir um dos &lt;em&gt;Techtalks&lt;/em&gt;, onde Narayanan Shivakumar fala sobre como o google trata alguns aspectos de escalabilidade por lá.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size:medium;&quot;&gt;&lt;span style=&quot;font-size:16px;line-height:24px;&quot;&gt;[googlevideo=http://video.google.com/videoplay?docid=-5699448884004201579]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;font:12px Helvetica;margin:0;&quot;&gt; &lt;/p&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The Pomodoro Technique</title>
   <link href="/2009/05/06/the-pomodoro-technique"/>
   <updated>2009-05-06T00:00:00-03:00</updated>
   <id>/2009/05/06/the-pomodoro-technique</id>
   <content type="html">&lt;img alt=&quot;&quot; /&gt;&lt;img alt=&quot;&quot; /&gt;&lt;img style=&quot;width:120px;height:164px;float:left;margin-left:0;margin-right:1em;&quot; src=&quot;http://docs.google.com/a/abstractj.com/File?id=d3z473d_15fmg4jvhm_b&quot; alt=&quot;&quot; /&gt;
&quot;&lt;em&gt;Procrastinação é o diferimento ou adiamento de uma ação. Para a pessoa que está procrastinando, isso resulta em stress, sensação de culpa, perda de produtividade e vergonha em relação aos outros, por não cumprir com suas responsabilidades e compromissos. Enquanto é normal que as pessoas procrastinem até um certo ponto, isso se torna um problema quando impede o funcionamento normal das ações.&lt;/em&gt;&quot; (&lt;a id=&quot;vedn&quot; title=&quot;Wikipedia - Procrastinação&quot; href=&quot;http://pt.wikipedia.org/wiki/Procrastina%C3%A7%C3%A3o&quot; target=&quot;_blank&quot;&gt;Wikipedia - Procrastinação&lt;/a&gt; )

&lt;p&gt;É comum se deparar com pessoas constantemente estressadas, sem tempo ou até com a sensação de total falta de produtividade. Normalmente a origem disso tudo vem da procrastinação, ou seja, com a evolução dos inúmeros atrativos na internet como: twitter, facebook, orkut, msn, gtalk, skype..e etc, você acaba encontrando ótimos e inúteis motivos para retardar muitas das suas tarefas e se sentir um verdadeiro peso de papel.&lt;/p&gt;

&lt;p&gt;Eu particularmente tenho o péssimo hábito de fazer várias coisas em um curto espaço de tempo, como: ler 10 páginas de um livro, ouvir música, assistir TV, programar e outras atividades que simplesmente não cabem nas 24 horas de um dia, além é claro de procrastinar, o resultado é a chamada falta de tempo, clássica virada de noite e dias de stress.&lt;/p&gt;

&lt;p&gt;Recentemente enquanto estava, exercendo a técnica milenar da procrastinação no google reader, li o &lt;a id=&quot;qf4.&quot; title=&quot;post do Bruno Mentges de Carvalho&quot; href=&quot;http://www.brunocarvalho.com/05/04/2009/buscando-ser-mais-produtivo/&quot; target=&quot;_blank&quot;&gt;post do Bruno Mentges de Carvalho&lt;/a&gt; falando sobre algumas práticas que ele adotou, pra aumentar sua produtividade. No meio do texto, encontrei uma referência a &lt;a id=&quot;wbyc&quot; title=&quot;Pomodoro Technique&quot; href=&quot;http://www.pomodorotechnique.com&quot; target=&quot;_blank&quot;&gt;Pomodoro Technique&lt;/a&gt; que consiste no gerenciamento do seu tempo, talvez a solução para minha  hiperatividade que não chega a ser aguda, mas me incomoda bastante e trás um sentimento de inutilidade e tédio.&lt;/p&gt;

&lt;p&gt;Acredito que não convém entrar em detalhes da técnica aqui, uma vez que o &lt;a id=&quot;gkpi&quot; title=&quot;livro que é disponibilizado gratuitamente&quot; href=&quot;http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf&quot; target=&quot;_blank&quot;&gt;livro que é disponibilizado gratuitamente&lt;/a&gt;, já faz isso bem, além de outros milhares de artigos espalhados na internet.&lt;/p&gt;

&lt;p&gt;Com esse post, chego ao fim do meu primeiro pomodoro em busca da produtividade :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Javaone 2009 approved!</title>
   <link href="/2009/03/03/javaone-2009"/>
   <updated>2009-03-03T00:00:00-03:00</updated>
   <id>/2009/03/03/javaone-2009</id>
   <content type="html">&lt;p&gt;Boas conquistas são feitas de sonhos, metas, planejamento e prática. Em 2008, submeti junto com o &lt;a href=&quot;http://twitter.com/marlonluz&quot; target=&quot;_blank&quot;&gt;Marlon&lt;/a&gt; &lt;a href=&quot;http://www.slideshare.net/bruno.abstractj/java-me-myth-busters-compatibility-mode-presentation&quot; target=&quot;_blank&quot;&gt;uma palestra&lt;/a&gt; inspirada nos &lt;a href=&quot;http://en.wikipedia.org/wiki/Mythbusters&quot; target=&quot;_blank&quot;&gt;caçadores de mitos&lt;/a&gt; com seguinte foco: coletar informações equivocadas ou não sobre a plataforma Java JME e explorá-las, felizmente &lt;a href=&quot;http://abstractj.com/blog/?p=30&quot; target=&quot;_blank&quot;&gt;fomos aprovados&lt;/a&gt; no JustJava, isso por si só já foi uma conquista bem vinda.&lt;/p&gt;

&lt;p&gt;Após nossa participação, foi aberto o call for papers do &lt;a href=&quot;http://java.sun.com/javaone/&quot; target=&quot;_blank&quot;&gt;JavaOne&lt;/a&gt;, sem pretensão alguma submetemos nosso trabalho, e o resultado de toda essa brincadeira, é que felizmente fomos aprovados pela organização do evento:
&lt;blockquote&gt;&lt;em&gt;Dear Bruno ,Congratulations! Your submission entitled &quot; Java Platform, Micro Edition (Java ME Platform) Myth Busters &quot; was so compelling that the 2009 JavaOne Conference[sm] Program Committee has accepted your proposal to participate at the upcoming 2009 JavaOne conference in San Francisco, California, June 2 - 5, 2009. As an accepted speaker, you will receive a full complimentary pass to the Conference, allowing you access to all technical sessions, BOFs, Hands-On Labs and the Pavilion.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please plan for a 60 minute presentation, inclusive of Q&amp;amp;A.&lt;/em&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;Agora é agilizar todo o processo burocrático como documentos, estadia, passagens e preparar um bom conteúdo técnico pra ser apresentado em São Francisco, Califórnia. Obrigado a todos pelo apoio, mais um sonho realizado.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Opensource Jobs</title>
   <link href="/2009/02/14/opensource-jobs"/>
   <updated>2009-02-14T00:00:00-02:00</updated>
   <id>/2009/02/14/opensource-jobs</id>
   <content type="html">&lt;p&gt;Existem duas perspectivas sobre projetos opensource: trabalhar sem remuneração pros outros, ou aprender de forma colaborativa, eu particularmente fico com a segunda perspectiva, a primeira é um pouco medíocre. Semanas atrás procurei por projetos mais sérios pra poder trabalhar, iniciar algo solo de fundo de quintal nessa altura do campeonato, não seria uma boa alternativa.&lt;/p&gt;

&lt;p&gt;Trabalhar em projetos opensource maiores, te permite interagir com desenvolvedores experientes e inexperientes, a consequência de tudo isso é o aprendizado. Em conversa com o Sérgio Lopes, ele me indicou os projetos da Caelum:&lt;/p&gt;

- &lt;a href=&quot;http://www.jforum.net&quot; target=&quot;_blank&quot;&gt;JForum&lt;/a&gt;

JForum is the most widely-used Java-based Open Source forum management system.

- &lt;a href=&quot;http://www.vraptor.org&quot; target=&quot;_blank&quot;&gt;VRaptor&lt;/a&gt;

&lt;p&gt;VRaptor is an MVC controller framework for web applications, based on the principle of &quot;Convention over Configuration&quot; which has contributed to the success of frameworks in other languages such as Ruby on Rails.
- &lt;a href=&quot;http://www.caelumobjects.com/opensource/tubaina/&quot; target=&quot;_blank&quot;&gt;Tubaina&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tubaina is a textbook generator which receives a simple markup language syntax and outputs Xhtml and Latex.&lt;/p&gt;

[&lt;em&gt;Editado&lt;/em&gt;]

&lt;p&gt;Relação de todos os projetos: &lt;a href=&quot;http://www.caelum.com.br/opensource/&quot; target=&quot;_blank&quot;&gt;http://www.caelum.com.br/opensource/&lt;/a&gt;&lt;a href=&quot;http://www.caelumobjects.com/opensource/&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acredito que existam outros projetos brasileiros ótimos em andamento, meu objetivo é divulgar alguns dos que me interesso e estou estudando pra tentar contribuir.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>JustJava 2008</title>
   <link href="/2008/09/24/justjava-2008"/>
   <updated>2008-09-24T00:00:00-03:00</updated>
   <id>/2008/09/24/justjava-2008</id>
   <content type="html">Você sabe o que são mitos?&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.priberam.pt/DLPO/&quot;&gt;O pai dos burros diz:&lt;/a&gt; &quot;&lt;span&gt;&lt;font&gt;&lt;font class=&quot;texto&quot;&gt;&lt;span style=&quot;cursor:pointer;&quot;&gt;&lt;i&gt;imagem simplificada, frequentemente ilusória, que grupos humanos elaboram ou aceitam e que tem um papel determinante no seu comportamento&lt;/i&gt;&quot;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Muita gente por &quot;ouvir falar&quot;, ou porque leu em algum fórum, blog e etc, acaba criando uma verdadeira confusão e desespero quando se trata de JME, alguns vêem como o patinho feio do Java, mas na verdade é uma tecnologia que pode mais do que aparenta.&lt;br /&gt;&lt;br /&gt;Este ano tive a feliz oportunidade de palestrar com o Marlon sobre um assunto que surge em qualquer área, MITOS! Nossa palestra teve o objetivo exatamente de esclarecer a visão simplista que muitos tem a respeito da plataforma JME. Esta idéia surgiu à partir da coletânea de pérolas que líamos em fóruns e listas de discussão, além de algumas experiências no trabalho. &lt;br /&gt;&lt;br /&gt;Resumidamente, separamos um top ten de mitos, pois se fôssemos falar de todos seria assunto para um dia inteiro. Os slides da palestra estão disponíveis no &lt;a target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/bruno.abstractj/java-me-myth-busters-compatibility-mode-presentation?type=powerpoint&quot;&gt;slideshare&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;ps: Post completamente atrasado, mas antes tarde do que nunca!&lt;br /&gt;&lt;br /&gt;
</content>
 </entry>
 
 <entry>
   <title>Certificações...</title>
   <link href="/2008/08/22/certificacoes"/>
   <updated>2008-08-22T00:00:00-03:00</updated>
   <id>/2008/08/22/certificacoes</id>
   <content type="html">&lt;div align=&quot;left&quot;&gt;&lt;img style=&quot;max-width:800px;float:left;margin-top:10px;margin-bottom:10px;margin-right:10px;&quot; src=&quot;http://www.escapefromcubiclenation.com/photos/uncategorized/frustrated_1.jpg&quot; height=&quot;143&quot; width=&quot;142&quot; /&gt;&lt;br /&gt;&lt;/div&gt;Não sei até quando o mesmo assunto surgirá, mas sempre gera discussões calorosas,  &lt;a href=&quot;http://blog.improveit.com.br/articles/2008/04/22/fanfarr%C3%A3o-certification-process&quot;&gt;posts&lt;/a&gt; e &lt;a href=&quot;http://fanfalliance.wordpress.com/&quot;&gt;afins&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Dúvida comum: &quot;Qual o valor de mercado&lt;br /&gt;sobre a certificação da SUN, Oracle, Microsoft X.Y.Z? A remuneração é&lt;br /&gt;boa?&quot;.&lt;br /&gt;&lt;br /&gt;Não se sabe a origem patológica da idolatria por siglas e afins, a única informação cientificamente comprovada é o surgimento de profissionais alpha, beta, gama e sistemas ineficientes. &lt;br /&gt;&lt;br /&gt;Um exame, seja de faculdade, certificação ou qualquer coisa do tipo, nada mais é do que uma forma de testar o que você sabe dentro do escopo escolhido, também pode ser considerado uma maneira eficaz de exercitar a sua memória. É fato que alguns exames práticos envolvem muito mais do que decorar, exigindo do candidato raciocínio sobre problemas reais, requisito pouco exigido na maioria das avaliações. &lt;br /&gt;&lt;br /&gt;Mesmo assim não é o exame que te faz capaz de desenvolver software com qualidade. Não dá pra imaginar &lt;a target=&quot;_blank&quot; href=&quot;http://martinfowler.com/bliki/&quot;&gt;Fowler&lt;/a&gt; ou &lt;a target=&quot;_blank&quot; href=&quot;http://c2.com/cgi/wiki?KentBeck&quot;&gt;Beck&lt;/a&gt;, preocupados com uma SCJP, por exemplo? Aliás, se a febre que assola o &lt;b&gt;super&lt;/b&gt;mercado existisse na época em que eles procuravam emprego, difícilmente seriam aprovados pelo RH de &lt;a href=&quot;http://blog.fragmental.com.br/2007/06/07/3-letrinhas/&quot;&gt;algumas empresas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O &lt;b&gt;super&lt;/b&gt;mercado de trabalho abarrota cada vez mais suas prateleiras de SCJPs, OCAs, Scrum Masters e afins, todos versionados pra todos os gostos, nos mais variados biotipos: geek 1.4, nerd 1.5...construtor de gambiarras beta. &lt;br /&gt;&lt;br /&gt;Em um mundo ideal e perfeito como ocorre na Europa e em &lt;a href=&quot;http://globo.com/&quot; target=&quot;_blank&quot;&gt;algumas&lt;/a&gt; &lt;a href=&quot;http://www.improveit.com.br&quot;&gt;empresas&lt;/a&gt; aqui no Brasil, o candidato deveria ser avaliado pelo seu conhecimento, vivência e motivações pessoais.  Além disso, seria permitido como um dos itens de seleção a avaliação da equipe, que no fim das contas é quem vai ter que conviver com ele todos os dias.&lt;br /&gt;&lt;br /&gt;Infelizmente a realidade é bem diferente, as pessoas precisam pagar as contas, sobreviver e garantir o leitinho das crianças (sem ironias), e se vêem diante de uma exigência mais que comum, tirar o &lt;i&gt;green card&lt;/i&gt; (cartões enviados após o êxito na prova). &lt;br /&gt;&lt;br /&gt;No fim das contas é difícil separar o joio do trigo, o que resulta na prostituição generalizada da área e a supra valorização dos exames de certificação. &lt;br /&gt;&lt;br /&gt;Espero que algum dia esse cenário ao menos melhore, com seleções um pouco mais inteligentes e eficazes, pois é absurdo avaliar a capacidade de um ser humano, através de uma folha de papel ou questões de múltipla escolha no computador.&lt;br /&gt;
</content>
 </entry>
 
 <entry>
   <title>JustJava 2008 Approved!</title>
   <link href="/2008/08/17/justjava-2008-approved"/>
   <updated>2008-08-17T00:00:00-03:00</updated>
   <id>/2008/08/17/justjava-2008-approved</id>
   <content type="html">Há um bom tempo conversando com o Marlon, surgiu a idéia de levar a público algumas das lendas urbanas que surgem em listas de discussões sobre JME.&lt;br /&gt;&lt;br /&gt;Foi com felicidade que tivemos nossa palestra aprovada no JustJava deste ano. O objetivo não é sair em um duelo mortal sobre tecnologia, mas apenas esclarecer equívocos comuns em torno da especificação.&lt;br /&gt;&lt;br /&gt;Fonte: &lt;a href=&quot;http://www.sucesusp.org.br/justjava2008/&quot; target=&quot;_blank&quot;&gt;http://www.sucesusp.org.br/justjava2008/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Título: JavaME Myth Busters&lt;br /&gt;&lt;br /&gt;Palestrantes: Bruno Oliveira da Silva / Marlon Luz&lt;br /&gt;&lt;br /&gt;Empresas: Mobup Inovações Tecnológicas / LightMobile&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Data:&lt;br /&gt;&lt;br /&gt;10 a 12 de Setembro de 2008&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Horário:&lt;br /&gt;&lt;br /&gt;8h30 às 19h00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Local:&lt;br /&gt;&lt;br /&gt;Centro Universitário SENAC - CAMPUS SANTO AMARO&lt;br /&gt;&lt;br /&gt;Av. Engenheiro Eusébio Stevaux, n. 823&lt;br /&gt;&lt;br /&gt;Santo Amaro - 04696-000 - São Paulo / SP&lt;br /&gt;
</content>
 </entry>
 
 <entry>
   <title>Extreme Programming Experience Week</title>
   <link href="/2007/11/16/extreme-programming-experience-week"/>
   <updated>2007-11-16T00:00:00-02:00</updated>
   <id>/2007/11/16/extreme-programming-experience-week</id>
   <content type="html">&lt;img src=&quot;http://www.improveit.com.br/images/br/servicos/icone_xp_80.gif&quot; /&gt;Há algum tempo tenho me interessado por &lt;a href=&quot;http://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;metodologias ágeis&lt;/a&gt;, uma vez que &lt;a href=&quot;http://www.improveit.com.br/xp/valores/feedback&quot;&gt;feedback&lt;/a&gt; constante as demandas geradas pelo cliente tem sido algo presente no cenário de desenvolvimento de software.&lt;br /&gt;&lt;br /&gt;Fora do país muitas das grandes empresas já adotam em seus processos este &quot;novo&quot; paradigma. No Brasil um dos processo ágeis, o &lt;a href=&quot;http://pt.wikipedia.org/wiki/XP&quot;&gt;XP&lt;/a&gt;, começa a sair da teoria através da adoção em &lt;a href=&quot;http://blog.fragmental.com.br/2007/08/15/introduzindo-agilidade-num-ambiente/&quot;&gt;algumas empresas&lt;/a&gt; com sucesso.&lt;br /&gt;&lt;br /&gt;Pois bem, encontrei os &lt;a href=&quot;http://www.improveit.com.br/podcast&quot;&gt;podcasts&lt;/a&gt; com casos e experiências de sucesso da &lt;a href=&quot;http://www.improveit.com.br/&quot;&gt;Improve IT&lt;/a&gt;, que trouxeram motivação sobre o tema, minha intenção aqui não é &lt;a href=&quot;http://pt.wikipedia.org/wiki/Suborno&quot;&gt;jabá&lt;/a&gt; pra fazer propaganda, mas realmente o know-how do pessoal sobre &lt;a href=&quot;http://pt.wikipedia.org/wiki/XP&quot;&gt;XP&lt;/a&gt; é muito bom. Conseguimos aqui em &lt;a href=&quot;http://maps.google.com/maps?f=q&amp;amp;hl=pt-BR&amp;amp;geocode=&amp;amp;time=&amp;amp;date=&amp;amp;ttype=&amp;amp;q=Juiz+de+Fora,+MG&amp;amp;ie=UTF8&amp;amp;ll=-21.647217,-43.352051&amp;amp;spn=0.684191,10.283203&amp;amp;z=7&amp;amp;iwloc=addr&amp;amp;om=1&quot;&gt;Juiz de Fora&lt;/a&gt;, formar uma turma de 30 interessados em fazer o curso com o &lt;a href=&quot;http://www.improveit.com.br/vinicius&quot;&gt;Vinícius,&lt;/a&gt; fundador da &lt;a href=&quot;http://www.improveit.com.br/&quot;&gt;Improve IT&lt;/a&gt; e um dos coordenadores do &lt;a href=&quot;http://groups.yahoo.com/group/xprio/&quot;&gt;xprio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O &lt;a href=&quot;http://www.improveit.com.br/servicos/imersao_agil&quot;&gt;curso&lt;/a&gt; te leva a pensar sobre valores que muitas vezes são negligenciados em um ambiente de desenvolvimento, seja por cultura, achar que é perda de tempo, falta de conhecimento das práticas, quebra de paradigmas ou pelo argumento &quot;aqui não trabalhamos dessa forma&quot;, como já citado pelo &lt;a href=&quot;http://www.fragmental.com.br/&quot;&gt;Phillip&lt;/a&gt; em um de seus &lt;a href=&quot;http://blog.fragmental.com.br/2007/08/15/introduzindo-agilidade-num-ambiente/&quot;&gt;posts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Aprendemos alguns &lt;a href=&quot;http://www.improveit.com.br/xp/valores&quot;&gt;valores&lt;/a&gt;, &lt;a href=&quot;http://www.improveit.com.br/xp/principios&quot;&gt;princípios&lt;/a&gt; e &lt;a href=&quot;http://www.improveit.com.br/xp/praticas&quot;&gt;práticas&lt;/a&gt; importantes do &lt;a href=&quot;http://www.improveit.com.br/xp&quot;&gt;XP&lt;/a&gt;, o que mais chama a atenção no processo é sua base &lt;a href=&quot;http://pt.wikipedia.org/wiki/Humanismo&quot;&gt;humanística&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Nos dois primeiros dias aprendemos coisas relativamente simples, mas muito mais importantes do que qualquer parafernalha tecnológica envolvida em projetos. &lt;br /&gt;&lt;br /&gt;Inicalmente fizemos o jogo da comunicação, onde ficou claro que receber especificações na forma escrita apenas, sem a interação com a pessoa mais importante de todo processo, o cliente, não é o melhor caminho. Isso gera resultados negativos como: retrabalho, sistemas incompatíveis com as necessidades do cliente e alta demanda em tarefas de manutenção, uma vez que a não compreensão dos requisitos leva a nova codificação do sistema.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2251/1986921005_2e0cc2a1a6.jpg?v=0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Basedo na &lt;a href=&quot;http://www.pr.gov.br/batebyte/edicoes/1991/bb10/chapeus.htm&quot;&gt;técnica dos seis chapéus&lt;/a&gt;, fizemos retrospectiva, onde toda equipe durante a reunião identifica pontos positivos e negativos que tenham ocorrido durante a semana, sejam eles pessoais ou técnicos. Sem desfocar do que está sendo discutido, o objetivo é permitir que todos pensem e agreguem idéias sobre um mesmo tema.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2341/1986907257_a1e54d9f7c.jpg?v=0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;No &lt;a href=&quot;http://www.xprogramming.com/xpmag/whatisxp.htm#planning&quot;&gt;jogo do planejamento&lt;/a&gt;, tivemos o tempo de execução para cada estória sempre cronometrando no relógio, conseguimos observar a velocidade da equipe para as próximas iterações e avaliar o que deve ser priorizado quando o prazo é curto. Em todos os pontos do processo, fica claro que &lt;a href=&quot;http://www.improveit.com.br/xp/valores/feedback&quot;&gt;feedback&lt;/a&gt; é fundamental, seja por parte da equipe de desenvolvimento, seja pela participação do cliente.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2400/1986959041_444f824778.jpg?v=0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Através de&lt;a href=&quot;http://www.improveit.com.br/xp/praticas/reuniao_pe&quot;&gt; Stand Up Meeting&lt;/a&gt; com durações de 15 minutos por dia no máximo, a equipe troca informações sobre os acontecimentos do dia anterior e se planeja pro dia corrente, esse é um momento legal onde todos devem ter consciência de que não se trata do momento pra falar de outros assuntos, mas para trocar experiências. &lt;a href=&quot;http://www.improveit.com.br/vinicius&quot;&gt;Vinícius&lt;/a&gt; também nos mostrou o quão importante é o estabelecimento de um ambiente transparente e comunicativo onde fique visível o status do projeto e suas respectivas atividades.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2363/1986913245_e3e80777e5.jpg?v=0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Foram dedicados dois dias inteiros para tratar na prática de assuntos como: &lt;a href=&quot;http://www.improveit.com.br/xp/praticas/tdd&quot;&gt;desenvolvimento orientado a testes&lt;/a&gt;, &lt;a href=&quot;http://www.refactoring.com&quot;&gt;refatoração&lt;/a&gt;, &lt;a href=&quot;http://www.improveit.com.br/xp/praticas/integracao&quot;&gt;integração contínua e automação de builds&lt;/a&gt;. Bom, vou deixar pra falar de testes em um outra ocasião, me limito a dizer que alguns acreditam que esse assunto é mais uma invenção &lt;a href=&quot;http://en.wikipedia.org/wiki/Utopia&quot;&gt;utópica&lt;/a&gt; do mundo capitalista como forma de inserir um item a mais no escopo do projeto, &lt;a href=&quot;http://www.refactoring.com/&quot;&gt;refatoração&lt;/a&gt; então, é tido como forma de corrigir gambiarras, mas basta &lt;a href=&quot;http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1195257439&amp;amp;sr=8-1&quot;&gt;ler mais sobre&lt;/a&gt; e descobrir o contrário.&lt;br /&gt;&lt;br /&gt;Técnicas de refatoração utilizadas de forma correta se tornam grandes aliadas quando se deseja &lt;a href=&quot;http://www.improveit.com.br/xp/praticas/tdd&quot;&gt;desenvolver orientado a testes&lt;/a&gt;, permitindo a construção de aplicações mais robustas. Foi destacada a importância da &lt;a href=&quot;http://www.improveit.com.br/xp/praticas/integracao&quot;&gt;integração contínua&lt;/a&gt; de código, realizada periodicamente durante o dia através de builds automatizados, assim, problemas que só seriam identificados mais a frente podem ser detectados no mesmo dia evitando &lt;a href=&quot;http://www.google.com.br/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fpt.wikipedia.org%2Fwiki%2FApocalipse&amp;amp;ei=Hj0-R82jHYjoecLMqbYK&amp;amp;usg=AFQjCNGTKtfP-YM-TEeSwB05S0ZNwA4adw&amp;amp;sig2=qGhhKtFvaiQGMuXlHJPgMw&quot;&gt;catástrofes&lt;/a&gt; e pessoas estressadas.&lt;br /&gt;&lt;br /&gt;No último dia, &lt;a href=&quot;http://www.improveit.com.br/vinicius&quot;&gt;Vinícius&lt;/a&gt; falou sobre o papel de cada um dentro da equipe e sua importância para realização de um projeto realmente bem sucedido. O &lt;a href=&quot;http://www.improveit.com.br/servicos/imersao_agil&quot;&gt;curso&lt;/a&gt; foi realmente válido e provou de que não existe utopia nesse processo, mas a experiência de &lt;a href=&quot;http://en.wikipedia.org/wiki/Kent_Beck&quot;&gt;profissionais&lt;/a&gt; que há décadas desenvolvem software, algumas fotos do curso podem ser encontradas &lt;a href=&quot;http://www.improveit.com.br/fotos/album/72157603114416014&quot;&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Depois disso tudo, tive que adquirir o &lt;a href=&quot;http://www.improveit.com.br/livroxp&quot;&gt;livro do Vinícius&lt;/a&gt; e do &lt;a href=&quot;http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1195258786&amp;amp;sr=8-1&quot;&gt;Kent Beck&lt;/a&gt; pra estudar mais sobre o assunto e romper alguns paradigmas existentes em mentes perdidas.&lt;br /&gt;
</content>
 </entry>
 
 <entry>
   <title>J2ME - This is the end?!</title>
   <link href="/2007/11/02/j2me-this-is-the-end"/>
   <updated>2007-11-02T00:00:00-02:00</updated>
   <id>/2007/11/02/j2me-this-is-the-end</id>
   <content type="html">&lt;img src=&quot;http://blogs.sun.com/roller/resources/jag/SouthParkJAG-small.png&quot; height=&quot;135&quot; width=&quot;97&quot; /&gt;Este mês uma das principais atrações que mais chamou atenção dos desenvolvedores de dispositivos móveis, não partiu nem do &lt;a href=&quot;http://www.google.com.br/&quot;&gt;Google&lt;/a&gt; e &lt;a href=&quot;http://pt.wikipedia.org/wiki/Apple_Inc.&quot;&gt;Apple&lt;/a&gt;, mas sim de &lt;a href=&quot;http://en.wikipedia.org/wiki/James_Gosling&quot;&gt;James Gosling&lt;/a&gt; que provocou um verdadeiro alarde entre os mais incautos.&lt;br /&gt;&lt;br /&gt;Em &lt;a href=&quot;http://www.news.com/New-directions-for-mobile-Java/8301-13580_3-9800679-39.html&quot;&gt;entrevista&lt;/a&gt;, tratada com uma pitada de drama e encarada com mesmo teor por alguns, ele citou os próximos passos em mobilidade da &lt;a href=&quot;http://pt.wikipedia.org/wiki/Sun_Microsystems&quot;&gt;Sun&lt;/a&gt;, um deles consiste na tentativa de cobrir a especificação &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_SE&quot;&gt;JSE&lt;/a&gt; para aparelhos celulares e &lt;a href=&quot;http://pt.wikipedia.org/wiki/Televis%C3%A3o_digital&quot;&gt;TV Digital&lt;/a&gt;. O principal candidato a substituir o &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_ME&quot;&gt;JME&lt;/a&gt;, será o &lt;a href=&quot;http://pt.wikipedia.org/wiki/JavaFX&quot;&gt;JavaFX Mobile&lt;/a&gt; que possivelmente deverá incorporar as características &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_SE&quot;&gt;JSE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Este anúncio, confirma uma tendência quase que inevitável, os dispositivos móveis tem evoluído rapidamente consequentemente as especificações da SUN também precisam, alguns problemas já estão sanados na &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=271&quot;&gt;especificação MIDP 3.0&lt;/a&gt;, como:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;Bibliotecas compartilhadas, também chamadas LIBlets;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Comunicação entre MIDlets;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Inteface para jogos mais ricas;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;MIDlets rodando em background;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Múltiplas MIDlets rodando na mesma máquina virtual;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Otimização de segurança no RMS;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;MIDlets poderão desenhar em Display(s) secundários;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Localização e Internacionalização;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;IPv6;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Algumas dessas características já existem em outras plataformas, no Java ME estas funcionalidades poderão ser implementadas quando os fabricantes realizarem o upgrade de seus hardwares para MIDP 3.0&lt;a href=&quot;http://pt.wikipedia.org/wiki/SymbianOS&quot;&gt;&lt;/a&gt;. Esta atitude da SUN é mais do que positiva, uma vez que o futuro (ou talvez possamos dizer, o presente) converge pra mobilidade, &lt;a href=&quot;http://g1.globo.com/VCnoG1/0,,8491,00.html&quot;&gt;empresas de conteúdo&lt;/a&gt; já se preparam através da &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_2&quot;&gt;WEB 2.0&lt;/a&gt;, &lt;a href=&quot;http://www.news.com/Intel-has-ARM-in-its-crosshairs/2100-1006_3-6210033.html&quot;&gt;fabricantes de processadores&lt;/a&gt; e até as &lt;a href=&quot;http://www.news.com/8301-13580_3-9797909-39.html&quot;&gt;distribuições Linu&lt;/a&gt;&lt;a href=&quot;http://www.news.com/8301-13580_3-9797909-39.html&quot;&gt;x&lt;/a&gt; estão buscando seu ponto de &lt;a href=&quot;http://pt.wikipedia.org/wiki/Congru%C3%AAncia&quot;&gt;congruência&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Um dos problemas, citados pela SUN, no qual o &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_SE&quot;&gt;JSE&lt;/a&gt; se propõe a resolver seria a fragmentação existente no &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_ME&quot;&gt;JME&lt;/a&gt;. O que seria essa fragmentação?&lt;br /&gt;&lt;br /&gt;Algumas definições, &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_ME&quot;&gt;JME&lt;/a&gt; atualmente se divide em dois tipos de configurações &lt;a href=&quot;http://java.sun.com/products/cldc/&quot;&gt;CLDC&lt;/a&gt; (&lt;em&gt;Connected Limited Device Configuration&lt;/em&gt;), utilizado em dispositivos muito limitados estabelece um core mínimo e bem básico como: &lt;em&gt;java.lang, java.io e java.util&lt;/em&gt; sem a garantia de todos as classes e métodos contidos na versão &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_SE&quot;&gt;JSE&lt;/a&gt; sobre esses pacotes, pra se ter uma idéia nem a classe String foi poupada e o conjunto de métodos não é o mesmo da usada pra desktops.&lt;br /&gt;&lt;br /&gt;O outro tipo de configuração, o &lt;a href=&quot;http://java.sun.com/products/cdc/&quot;&gt;CDC&lt;/a&gt; (&lt;em&gt;Connected Device Configuration&lt;/em&gt;), é bem menos restrito e já possui um número maior de classes, foi projetado para equipamentos com maior poder de processamento e armazenamento.&lt;br /&gt;&lt;br /&gt;Estas definições por si só já caracterizam um problema de fragmentação, pois não existe uma única configuração para dispositivos móveis, mas isso é apenas a ponta do iceberg.&lt;br /&gt;&lt;br /&gt;Vamos a um exemplo típico, nem toda aplicação &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programa%C3%A7%C3%A3o%29&quot;&gt;Java&lt;/a&gt; pra microdispositivos é capaz de ser executada em qualquer aparelho. &quot;&lt;em&gt;Mas pera aí! Java não executa até em geladeira?&lt;/em&gt;!&quot; Sim e não, vamos a situação atual, os fabricantes possuem em suas VMs versões das implementações de &lt;a href=&quot;http://java.sun.com/products/cldc/&quot;&gt;CLDC&lt;/a&gt; e &lt;a href=&quot;http://pt.wikipedia.org/wiki/MIDP&quot;&gt;MIDP&lt;/a&gt;, que compõem um core mínimo para execução de aplicações &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_ME&quot;&gt;JME&lt;/a&gt;, sendo assim temos dispositivos que implementam determinadas &lt;a href=&quot;http://de.wikipedia.org/wiki/Java_Specification_Request&quot;&gt;JSRs&lt;/a&gt; e outros não.&lt;br /&gt;&lt;br /&gt;Temos então no mercado aparelhos que suportam CLDC 1.0/MIDP 1.0, CLDC 1.0/MIDP 2.0, CLDC 1.1/MIDP 2.0, essas seriam algumas das configurações existentes, não tendo por garantia que sua aplicação execute em qualquer um, pois a VM que possui suporte a CLDC 1.0 não executa aplicação para CLDC 1.1 por exemplo.&lt;br /&gt;&lt;br /&gt;Outro fator é que nem todas as &lt;a href=&quot;http://de.wikipedia.org/wiki/Java_Specification_Request&quot;&gt;JSRs&lt;/a&gt; estão nos dispositivos, um exemplo disso é a &lt;a href=&quot;http://java.sun.com/products/satsa/&quot;&gt;JSR de criptografia&lt;/a&gt;. Este ano construí uma aplicação na qual utilizava essa especificação e fui executar em dois equipamentos relativamente caros com todas as parafernalhas cibernéticas que um bom aparelho possa ter, em um a aplicação foi executada normalmente, no outro não, exatamente pela falta dessa &lt;a href=&quot;http://java.sun.com/products/satsa/&quot;&gt;JSR&lt;/a&gt; na VM no dispositivo.&lt;br /&gt;&lt;br /&gt;Resolvendo este problema através da definição de algo que seja padrão entre os dispositivos móveis, irá poupar a queda de cabelo de arquitetos e desenvolvedores que trabalham com mobilidade, sem essa variedade de implementações, assim a SUN conseguirá trazer de volta para dispositivos móveis algo já existente nas plataformas JEE e JSE, portabilidade.&lt;br /&gt;&lt;br /&gt;Gosling deixa claro em seu blog, para os totalmente equivocados: &quot;&lt;a href=&quot;http://blogs.sun.com/jag/date/20071023&quot;&gt;&lt;em&gt;Java ME is NOT dead!&lt;/em&gt;&lt;/a&gt;&quot;,  apenas existirá a fusão futuramente de JME e JSE, felizmente, pois teremos aplicações muito mais ricas do que as atuais.&lt;br /&gt;&lt;br /&gt;Fica claro que essas mudanças não serão do dia pra noite, mesmo porque seria loucura descontinuar algo que é executado em mais de dois bilhões de aparelhos no mundo, no caso o &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_ME&quot;&gt;JME&lt;/a&gt;. Todas essas mudanças serão morosas de acontecer, pois dependerá da SUN finalizar e homologar essa versão, dos fabricantes implementarem em seus hardwares essa VM e claro, estes aparelhos atingirem um preço acessível ao consumidor, para que os aparelhos &quot;legados&quot; sejam renovados, até lá nós desenvolvedores ainda perderemos muitos fios de cabelo na construção de aplicações sobre esse ambiente limitado.
</content>
 </entry>
 
 <entry>
   <title>Unix based ou Windows</title>
   <link href="/2007/10/24/unix-based-ou-windows"/>
   <updated>2007-10-24T00:00:00-02:00</updated>
   <id>/2007/10/24/unix-based-ou-windows</id>
   <content type="html">&lt;img src=&quot;http://www.stoltenow.com/pics/tux.jpg&quot; height=&quot;140&quot; width=&quot;113&quot; /&gt;Esta &lt;a href=&quot;http://www.guj.com.br/posts/list/71803.java#377018&quot;&gt;thread&lt;/a&gt; postada no &lt;a href=&quot;http://www.guj.com.br&quot;&gt;GUJ&lt;/a&gt; me deixou impressionado, sobre uma discussão que parece eterna e muitas vezes é tratada como uma verdadeira religião.&lt;br /&gt;&lt;br /&gt;- &quot;&lt;em&gt;Qual a melhor plataforma para desenvolvimento Java?&lt;/em&gt;&quot;&lt;br /&gt;&lt;br /&gt;Uma boa resposta seria: depende. Se o objetivo da empresa está na economia em licenciamento de software, uma solução proposta por muitos seria: &lt;a href=&quot;http://pt.wikipedia.org/wiki/Software_livre&quot;&gt;Software Livre&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Ótimo, mas nem tanto, se o time de desenvolvimento não possuir conhecimentos mínimos sobre a plataforma, então um tempo mínimo será gasto para adaptação, por mais que as distribuições atuais tenham evoluído poderíamos ser otimistas para estimar um mês de aprendizado e preparo do ambiente.&lt;br /&gt;&lt;br /&gt;De acordo com o perfil dos profissionais pode-se perder meses resolvendo problemas e equívocos cometidos sobre a plataforma. Outros fatores também devem ser avaliados:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;Problemas aparentemente bobos como codificação de caracteres entre um sistema operacional e outro, por exemplo UTF-8 e ISO-8859-1. Existem casos em que esse tipo de cuidado inexiste e o projeto pode causar realmente grandes problemas;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Quais ferramentas serão realmente utilizadas? Se todas são livres, a equipe tem domínio sobre?&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;O seu ambiente de desenvolvimento é razoável o suficiente pra simular o ambiente do cliente? Por mais sedutora que seja a frase &quot;&lt;em&gt;Write once, run anywhere&lt;/em&gt;&quot; seja muito sedutora, acredite, o mundo não é tão perfeito assim, podem surgir desde problemas de conectividade com o banco até a não realização do deployment.&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Qual é o foco da sua empresa? Sistemas operacionais ou desenvolvimento?&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Qual é teu prazo? O tempo que perde-se discutindo qual ambiente desenvolver, poderia ser gasto em planejamento do processo para produção de um software de boa qualidade;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Algumas empresas utilizam a técnica do &quot;deixa por conta do desenvolvedor&quot;, o que pode ser uma boa alternativa desde que não impacte em perda de tempo dele e nem dos outros em algo que não é o foco para o produto final, acredito que os sistemas operacionais existentes tem seus benefícios não importa qual.&lt;br /&gt;&lt;br /&gt;O estabelecimento de um ambiente minimamente padronizado é o que importa para gerência do caos, e redução desse overhead entre desenvolvimento e plataforma, entre qual é melhor ou pior.&lt;br /&gt;&lt;br /&gt;Pelo que percebe-se na internet, gasta-se muito tempo com discussões sobre qual é melhor: Linux x Windows, Netbeans x Eclipse....enfim, quando na verdade o mais interessante seria a discussão sobre qual processo de desenvolvimento adotar e apenas pesquisar sobre o que o mercado tem utilizado, pois não é necessário reinventar a roda, apenas buscar casos de sucesso, já ajuda.
</content>
 </entry>
 
 <entry>
   <title>Floggy - Persistência em JME</title>
   <link href="/2007/10/24/floggy-persistencia-em-jme"/>
   <updated>2007-10-24T00:00:00-02:00</updated>
   <id>/2007/10/24/floggy-persistencia-em-jme</id>
   <content type="html">&lt;p&gt;Uma vez li &lt;a href=&quot;http://blog.fragmental.com.br/2006/04/21/brasil-a-maior-cominunidade-de-nao-desenvolvedores-java-do-mundo/&quot;&gt;um post&lt;/a&gt; interessante que falava exatamente disso, sobre a rara contribuição em projetos de software livre por parte dos desenvolvedores brasileiros, como dito no post existem boas exceções, uma delas é o projeto &lt;a href=&quot;http://floggy.sourceforge.net/&quot;&gt;Floggy&lt;/a&gt; que finalmente hoje consegui tempo pra testar e avaliar um pouco.&lt;/p&gt;

&lt;p&gt;Bom, o framework em si é muito interessante, por ser capaz de abstrair a camada de persistência através de objetos, eliminando as tarefas chatas que seriam feitas através de &lt;a href=&quot;http://developers.sun.com/mobility/midp/articles/databaserms/&quot;&gt;RMS&lt;/a&gt;, sendo um pouco presunçoso, poderia afirmar que este poderia ser apelidado de Micro &lt;a href=&quot;http://hibernate.org/&quot;&gt;Hibernate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Claro que o projeto ainda irá amadurecer muito até adquirir a confiança dos desenvolvedores, mas tem um grande potencial e atualmente desconheço algo similar, com exceção das plataformas JEE ou JSE na qual o &lt;a href=&quot;http://hibernate.org/&quot;&gt;Hibernate&lt;/a&gt; é um dos mais difundidos.&lt;/p&gt;

&lt;p&gt;Espero que mais desenvolvedores possam colaborar com esse projeto.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Multiplataforma apenas na linguagem</title>
   <link href="/2007/08/23/multiplataforma-apenas-na-linguagem"/>
   <updated>2007-08-23T00:00:00-03:00</updated>
   <id>/2007/08/23/multiplataforma-apenas-na-linguagem</id>
   <content type="html">&lt;p&gt;A portabilidade entre os diversos sistemas operacionais tornou-se uma característica  marcante entre linguagens de programação como &lt;a href=&quot;http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programa%C3%A7%C3%A3o%29&quot;&gt;Java&lt;/a&gt;, a política do &lt;em&gt;&quot;&lt;font size=&quot;-1&quot;&gt;write&lt;strong&gt; &lt;/strong&gt;once, run anywhere&lt;/font&gt;&lt;/em&gt;&quot; realmente existe, mas não para o ambiente de desenvolvimento, especificamente os sistemas operacionais e suas ínfimas peculiaridades.&lt;/p&gt;

&lt;p&gt;Em um mundo utopicamente perfeito, bastaria instalar o &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Development_Kit&quot;&gt;JDK&lt;/a&gt; de desenvolvimento e a sua IDE preferida para que então se fizesse a luz, não é o que ocorre quando se fala da diversidade dos mundos &lt;a href=&quot;http://pt.wikipedia.org/wiki/Windows&quot;&gt;Windows&lt;/a&gt; e &lt;a href=&quot;http://pt.wikipedia.org/wiki/Linux&quot;&gt;GNU/Linux&lt;/a&gt;. Enquanto o primeiro enfrenta problemas em gerenciar sua memória, o outro enfrenta um único e simples problema, ter que testar várias ferramentas na esperança de que alguma seja capaz de efetuar uma única tarefa.&lt;/p&gt;

&lt;p&gt;Recentemente devido a requisitos de projeto, foi inserido no contexto o &lt;a href=&quot;http://pt.wikipedia.org/wiki/Microsoft_SQL_Server&quot;&gt;SQL Server 2000&lt;/a&gt; que com certeza, por vias normais, não é executável em plataforma &lt;a href=&quot;http://pt.wikipedia.org/wiki/Linux&quot;&gt;GNU/Linux&lt;/a&gt;. Qual a solução?&lt;/p&gt;

&lt;p&gt;Acessar via &lt;a href=&quot;http://pt.wikipedia.org/wiki/VPN&quot;&gt;VPN&lt;/a&gt; um servidor &lt;a href=&quot;http://pt.wikipedia.org/wiki/Windows&quot;&gt;Windows&lt;/a&gt; que possua o &lt;a href=&quot;http://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_banco_de_dados&quot;&gt;SGDB&lt;/a&gt; instalado.&lt;/p&gt;

&lt;p&gt;Eis dois problemas, acessar uma &lt;a href=&quot;http://pt.wikipedia.org/wiki/VPN&quot;&gt;VPN&lt;/a&gt; pptp via &lt;a href=&quot;http://pt.wikipedia.org/wiki/Linux&quot;&gt;Linux&lt;/a&gt; se torna uma tarefa extremamente complexa, uma vez que todas as ferramentas testadas simplesmente não funcionam, após 3 anos de experiência na plataforma percebe-se que evoluiu-se pouco no que condiz a ambiente de desenvolvimento, muitas ferramentas, poucas funcionais de fato.&lt;/p&gt;

&lt;p&gt;Após instalar meia dúzia de ferramentas para mesma finalidade, encontra-se uma chamada &lt;a href=&quot;http://pptpclient.sourceforge.net/&quot;&gt;ppptconfig&lt;/a&gt;, que enfim conecta-se a &lt;a href=&quot;http://pt.wikipedia.org/wiki/VPN&quot;&gt;VPN&lt;/a&gt;, mas simplesmente as rotas necessárias não são adicionadas.&lt;/p&gt;

&lt;p&gt;Solução: Adicionar rotas para o host e enfim a comunicação funciona,  após vários &lt;em&gt;apt-get -y *.funcionapeloamordeDeus&lt;/em&gt;, você já encontra-se no ápice de sua total falta de paciência.&lt;/p&gt;

&lt;p&gt;Chega-se ao ponto que teoricamente deveria ser semi impossível e se torna o mais banal de todos, encontrar um cliente gráfico pra &lt;a href=&quot;http://pt.wikipedia.org/wiki/Microsoft_SQL_Server&quot;&gt;SQL Server 2000&lt;/a&gt; que seja executável no &lt;a href=&quot;http://pt.wikipedia.org/wiki/Linux&quot;&gt;GNU/Linux&lt;/a&gt;, pra minha felicidade encontro o &lt;a href=&quot;http://squirrel-sql.sourceforge.net/&quot;&gt;SQuirreL SQL Client&lt;/a&gt; portável em praticamente todos os &lt;a href=&quot;http://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_banco_de_dados&quot;&gt;SGBDs&lt;/a&gt; que possuam suporte a &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Database_Connectivity&quot;&gt;JDBC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mas, estou eu aqui escrevendo este post do meu &lt;a href=&quot;http://pt.wikipedia.org/wiki/Linux&quot;&gt;Linux&lt;/a&gt;, certamente é gostar de sofrer, pois como diz alguns amigos: &quot;Se fosse bom, seria pago&quot;. Espero que algum dia os desenvolvedores dessa plataforma, pensem nos desenvolvedores, é uma frase redundantemente repetitiva, mas que faz certo sentido.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Cadê seus artigos?</title>
   <link href="/2007/08/22/cade-seus-artigos"/>
   <updated>2007-08-22T00:00:00-03:00</updated>
   <id>/2007/08/22/cade-seus-artigos</id>
   <content type="html">&lt;p&gt;MundoJava 17

&lt;span class=&quot;texto_padraodestaqueorange&quot;&gt;JUnit                                           – Testes unitários
&lt;/span&gt;&lt;em&gt;&lt;span class=&quot;texto_padraocinza&quot;&gt;&quot;Descubra                                           porque e como utilizar a ferramenta                                           de testes mais popular entre os programadores                                           Java.&quot;&lt;/span&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;Autores: Arthur Campos e Bruno Oliveira&lt;/p&gt;

&lt;img src=&quot;http://farm2.static.flickr.com/1402/1242300804_e4874c5f3d.jpg?v=0&quot; height=&quot;190&quot; width=&quot;147&quot; /&gt;

&lt;a href=&quot;http://www.mundojava.com.br&quot;&gt;
&lt;/a&gt;

&lt;p&gt;&lt;b&gt;SQL Magazine 36&lt;/b&gt; - UML+JAVA+HIBERNATE

&lt;em&gt;&quot;Desenvolvendo uma Aplicação em Java com Hibernate - Dos Requisitos à Implementação.&quot;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Autores: Bruno Oliveira da Silva, Rodrigo Oliveira Spínola; Marco Antônio Araújo&lt;/p&gt;

&lt;a href=&quot;http://www.devmedia.com.br&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1245/1242300786_6a8bf79db4.jpg?v=0&quot; height=&quot;190&quot; width=&quot;147&quot; /&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;SQL Magazine 44&lt;/b&gt; - Implementando testes unitários em bases de dados com DBUnit&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&quot;Qualquer profissional que trabalhe no desenvolvimento de sistemas já deve ter ouvido falar que testes são, de fato, importantes para a qualidade de qualquer software. Mas, será que atividades de teste realmente fazem parte do ciclo de desenvolvimento da maioria dos projetos? Existem diversas razões para certo desinteresse de alguns desenvolvedores por este assunto, seja por desconhecimento de técnicas e ferramentas para este fim, seja pela falta de tempo alocado para esta atividade ou até mesmo em função de projetos mal conduzidos, que dificultam o planejamento e execução de testes. Desta forma, o desenvolvedor acaba lidando com linguagens e algoritmos complexos, mas não os testa suficientemente, de forma organizada e planejada. Neste contexto, este artigo abordará a ferramenta DBUnit, para testes automatizados em bases de dados, sendo uma das possíveis ferramentas a serem utilizadas para contribuir com a qualidade no desenvolvimento de aplicações.&quot;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Autores: Bruno Oliveira da Silva, Samuel Vieira Pinto, Marco Antônio Pereira Araújo&lt;/p&gt;

&lt;a href=&quot;http://www.devmedia.com.br&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1033/1242300768_8346106160.jpg?v=0&quot; height=&quot;264&quot; width=&quot;199&quot; /&gt;&lt;/a&gt;
</content>
 </entry>
 

</feed>


