<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3146039435150629051</id><updated>2011-07-08T02:40:47.611-03:00</updated><category term='engenharia de software'/><category term='eventos'/><category term='hibernate'/><category term='java'/><category term='sobre  mim'/><title type='text'>Jaime Schettini</title><subtitle type='html'>Siga as boas práticas</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-4165716696975608544</id><published>2009-05-04T13:09:00.000-03:00</published><updated>2009-09-15T13:26:03.848-03:00</updated><title type='text'>Agile Weekend 2009</title><content type='html'>Fiz um post no blog do TáSafo sobre o evento &lt;a href="http://agileweekend.guma-rs.org/"&gt;Porto Alegre Agile Weekend 2009&lt;/a&gt;, que&lt;br /&gt;aconteceu nos dias 25 e 26 de abril em Porto Alegre.  Esse foi o primeiro evento que o TáSafo fez a cobertura oficial.&lt;br /&gt;&lt;br /&gt;Nesse post eu comento as palestras e discussões que rolaram por lá de uma forma um pouco diferente.&lt;br /&gt;&lt;br /&gt;Quem quiser pode conferir em &lt;a href="http://tasafo.wordpress.com/2009/05/03/agile-weekend-2009-melhor-impossivel/"&gt;http://tasafo.wordpress.com/2009/05/03/agile-weekend-2009-melhor-impossivel/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-4165716696975608544?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/4165716696975608544/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=4165716696975608544' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4165716696975608544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4165716696975608544'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2009/09/agile-weekend-2009.html' title='Agile Weekend 2009'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-8905238078398356353</id><published>2009-04-30T19:48:00.006-03:00</published><updated>2009-04-30T20:13:12.629-03:00</updated><title type='text'>Evento: Visão Ágil Academic Meeting 2009</title><content type='html'>É com grande prazer que nós do &lt;a href="http://www.tasafo.org/"&gt;TaSafo!&lt;/a&gt; convidamos a todos para participar do &lt;span style="font-weight: bold;"&gt;primeiro evento sobre métodos ágeis do Pará&lt;/span&gt;, que acontecerá no dia 30 de maio de 2009. Com a presença do nosso conterrâneo &lt;a href="http://manoelpimentel.blogspot.com/"&gt;Manoel Pimentel&lt;/a&gt;, que vai apresentar uma palestra e um workshop, esse evento vai marcar o início da participação do grupo no programa Visão Ágil Academic Leaders e uma nova fase do TaSafo. Temos muitos planos para este ano, alguns deles já estão acontecendo, como a cobertura do &lt;a href="http://agileweekend.guma-rs.org/"&gt;Porto Alegre Agile Weekend 2009&lt;/a&gt; e este evento. Por tudo isso, o TaSafo! promete se destacar bastante esse ano.&lt;br /&gt;&lt;br /&gt;O evento é &lt;span style="font-weight: bold;"&gt;gratuito&lt;/span&gt;. Quem tiver interesse em participar, segue o link para o nosso blog, onde vocês podem ver a programação e também se inscrever:&lt;br /&gt;&lt;a href="http://tasafo.wordpress.com/2009/04/30/evento-visao-agil-academic-meeting-2009/"&gt;http://tasafo.wordpress.com/2009/04/30/evento-visao-agil-academic-meeting-2009/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-8905238078398356353?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/8905238078398356353/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=8905238078398356353' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/8905238078398356353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/8905238078398356353'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2009/04/evento-visao-agil-academic-meeting-2009.html' title='Evento: Visão Ágil Academic Meeting 2009'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-4682201412790572315</id><published>2009-04-21T21:05:00.003-03:00</published><updated>2009-04-21T22:50:05.420-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Usando as interfaces Comparable e Comparator para classificar listas</title><content type='html'>&lt;div&gt;O que fazer quando queremos iterar sobre uma lista e mostrar os seus elementos em alguma ordem específica? Por exemplo, podemos querer mostrar as pessoas cadastradas no sistema por ordem alfabética. Em Java, as únicas coleções que realizam alguma classificação automaticamente são TreeMap e TreeSet. Ou seja:&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 180px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0bmXbSDnI/AAAAAAAAADU/mtHzfxgNg_4/s400/1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326944280186588786" /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 135px;" src="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se0bmB9mgNI/AAAAAAAAADM/vsLQ23SJo0A/s400/1-2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326944274424955090" /&gt;&lt;br /&gt;&lt;br /&gt;Repare que mesmo que a ordem de inserção tenha sido aleatória, ao iterar sobre a coleção, o resultado são elementos em ordem alfabética. O mesmo acontece quando o tipo é alterado para Integer:&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 170px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0b6OvrdQI/AAAAAAAAADc/1YwarXFAbig/s400/2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326944621453604098" /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 137px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se5q5iispmI/AAAAAAAAAFM/1eEVJ2LihD4/s400/12.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327312945983301218" /&gt;&lt;br /&gt;Porém, não queremos usar TreeMap porque ela perde muito em performance, então geralmente usamos a implementação ArrayList, que não é classificada, ou seja, não ordena automaticamente seus elementos. Então:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_u2hOYB2vNrM/SevlrBcfOiI/AAAAAAAAACE/apui0EyYfu4/s400/3.png" style="cursor: pointer; width: 420px; height: 165px;" alt="" id="BLOGGER_PHOTO_ID_5326603511580801570" border="0" /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_u2hOYB2vNrM/SevmSvej3GI/AAAAAAAAACM/Vfw3rv0mPOQ/s400/3-2.png" style="cursor: pointer; width: 500px; height: 127px;" alt="" id="BLOGGER_PHOTO_ID_5326604193952423010" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Mas não se preocupe, pois ainda podes classificar teu ArrayList (ou qualquer implementação de List). Para isso utilizamos a classe utilitária &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html"&gt;Collections.java&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0cHnYhbrI/AAAAAAAAADk/ATjvv0gSdww/s1600-h/4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 203px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0cHnYhbrI/AAAAAAAAADk/ATjvv0gSdww/s400/4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326944851405663922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_u2hOYB2vNrM/SevpWJZviVI/AAAAAAAAACc/IBVrxr5AULU/s400/4-2.png" style="cursor: pointer; width: 500px; height: 125px;" alt="" id="BLOGGER_PHOTO_ID_5326607550986029394" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Pronto, fácil assim. Repare que quando classificamos uma lista do tipo String e Integer, os elementos String ficam armazenados em ordem alfabética, e os Integer na ordem crescente. O mesmo vale para Byte, Short, Long e BigDecimal. Chamamos isso de ordem natural.&lt;br /&gt;&lt;br /&gt;Voltemos então para a nossa suposição inicial. Queremos mostrar uma lista de pessoas ordenada por ordem alfabética. Mas, se formos tentar classificar a nossa classe Pessoa.java do mesmo modo que fizemos com nossa coleção de nomes, ocorrerá um erro de compilação:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Sevpnuzr0EI/AAAAAAAAACk/SocQ7NGm6rY/s400/5.png" style="cursor: pointer; width: 350px; height: 172px;" alt="" id="BLOGGER_PHOTO_ID_5326607853084725314" border="0" /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se0cQBSaHCI/AAAAAAAAADs/TtIctnfKFII/s1600-h/5-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 155px;" src="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se0cQBSaHCI/AAAAAAAAADs/TtIctnfKFII/s400/5-2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326944995798293538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O que acontece aqui é que a classe Pessoa não fornece nenhum mecanismo de classificação natural. Para tornar a classe Pessoa classificável, temos duas opções: implementar a interface &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html"&gt;&lt;span style="font-style: italic;"&gt;Comparable &lt;/span&gt;&lt;/a&gt;ou a interface &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Comparator.html"&gt;&lt;span style="font-style: italic;"&gt;Comparator&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Implementando Comparable&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Como o próprio nome já diz, ao implementar essa interface, tornamos a classe comparável.&lt;/span&gt;&lt;span&gt; Para isso, devemos sobrescrever o método compareTo(), e informar qual será o critério de classificação:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u2hOYB2vNrM/Sevp3ALpIOI/AAAAAAAAAC0/-ixYJm04v9k/s1600-h/6.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 239px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Sevp3ALpIOI/AAAAAAAAAC0/-ixYJm04v9k/s400/6.png" alt="" id="BLOGGER_PHOTO_ID_5326608115446653154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O método Colletions.sort&lt;/span&gt;&lt;code&gt;&lt;/code&gt;() usa compareTo() para classificar a lista. Agora veremos o resultado disso:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u2hOYB2vNrM/Se0ccDJUlqI/AAAAAAAAAD8/7xkXqKkc2F0/s1600-h/7.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 161px;" src="http://4.bp.blogspot.com/_u2hOYB2vNrM/Se0ccDJUlqI/AAAAAAAAAD8/7xkXqKkc2F0/s400/7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945202455484066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se0cb5ZnzSI/AAAAAAAAAD0/OiRtdf7GH_c/s1600-h/7-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 89px;" src="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se0cb5ZnzSI/AAAAAAAAAD0/OiRtdf7GH_c/s400/7-2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945199839497506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Perfeito! Nossa coleção agora está ordenada do jeitinho que queríamos.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span&gt;Mas e se nós não pudéssemos modificar a classe Pessoa?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Implementando Comparator&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Algumas vezes não temos acesso ou permissão para mudar alguma classe. É aí que entra a interface Comparator, que nos permite fornecer um critério de classificação para um classe sem ter que alterá-la. Veja o exemplo abaixo:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0cr_4iiyI/AAAAAAAAAEc/uCCgyZOLmC0/s1600-h/8.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 138px;" src="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0cr_4iiyI/AAAAAAAAAEc/uCCgyZOLmC0/s400/8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945476457696034" /&gt;&lt;/a&gt;&lt;br /&gt;Assim nem tocamos em Pessoa e obtemos o mesmo resultado. A única diferença é que agora, ao classificar Pessoa, precisamos dizer qual será o Comparator utilizado:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se5m5r9u6KI/AAAAAAAAAE8/X3PI4JZgEoc/s1600-h/10.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 450px; height: 168px;" src="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se5m5r9u6KI/AAAAAAAAAE8/X3PI4JZgEoc/s400/10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327308550466103458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se5oHS535OI/AAAAAAAAAFE/lutw-6dSeKo/s1600-h/7-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 89px;" src="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se5oHS535OI/AAAAAAAAAFE/lutw-6dSeKo/s400/7-2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327309883768825058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Assim podemos criar quantos critérios quisermos para Pessoa, basta implementar Comparator em várias classes, e fornecer um critério diferente em cada uma.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0crzjswdI/AAAAAAAAAEU/NZZKOwilK6M/s1600-h/9.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 123px;" src="http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0crzjswdI/AAAAAAAAAEU/NZZKOwilK6M/s400/9.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945473149059538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0crgU397I/AAAAAAAAAEM/4-1xyhAkE1k/s1600-h/9-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 184px;" src="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0crgU397I/AAAAAAAAAEM/4-1xyhAkE1k/s400/9-2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945467986606002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0craxsrII/AAAAAAAAAEE/skAwSfFZ2BA/s1600-h/9-3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 84px;" src="http://1.bp.blogspot.com/_u2hOYB2vNrM/Se0craxsrII/AAAAAAAAAEE/skAwSfFZ2BA/s400/9-3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5326945466496887938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pode ser que a necessidade de classificar uma coleção seja tão pontual, que talvez criar uma nova classe só para isso possa ser desnecessário. Surge então uma boa oportunidade para criar uma classe interna anônima:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se5m5aigziI/AAAAAAAAAE0/k9v3i0JdZuU/s1600-h/11.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 245px;" src="http://2.bp.blogspot.com/_u2hOYB2vNrM/Se5m5aigziI/AAAAAAAAAE0/k9v3i0JdZuU/s400/11.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327308545788530210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Uma dica: para ordenar de forma descendente, basta trocar os objetos de lugar no método compare(), como no exemplo anterior.&lt;br /&gt;&lt;br /&gt;Classificar listas foi uma das muitas coisas interessantes que aprendi estudando para a certificação Java. A partir de então, já utilizei esse recurso várias vezes. Qual interface implementar dependerá do contexto de desenvolvimento da aplicação. Algumas vezes a classe a ser classificada não pode ser alterada, forçando-o a implementar Comparable. Às vezes essa classe nem pertence ao teu projeto, como uma API. Muitas vezes nem precisamos implementar nada porque já trazemos a lista do banco de dados ordenada.&lt;br /&gt;&lt;br /&gt;Para aprender mais sobre coleções, visite o &lt;a href="http://java.sun.com/docs/books/tutorial/collections/index.html"&gt;site da sun&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-4682201412790572315?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/4682201412790572315/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=4682201412790572315' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4682201412790572315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4682201412790572315'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2009/04/usando-as-interfaces-comparable-e.html' title='Usando as interfaces Comparable e Comparator para classificar listas'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_u2hOYB2vNrM/Se0bmXbSDnI/AAAAAAAAADU/mtHzfxgNg_4/s72-c/1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-6727888941451691049</id><published>2009-04-15T20:11:00.004-03:00</published><updated>2009-04-15T20:23:12.107-03:00</updated><title type='text'>Minicurso "Introdução aos métodos ágeis de desenvolvimento de software"</title><content type='html'>Minicurso que eu e Silvana Rossy ministramos na semana de empreendedorismo no IESAM, em abril de 2007. Já faz tempo mais pode ser importante para alguém.&lt;br /&gt;&lt;br /&gt;O minicurso foi muito bacana, fizemos algumas dinâmicas no início, para ajudar o pessoal a se soltar e para mostrar algumas dificuldades dos projetos de desenvolvimento de software. Falamos de métodos tradicionais e ágeis (Scrum e XP), mas principalmente enfatizamos um dos pontos que está presente em todas as metodologias ágeis: a comunicação.&lt;br /&gt;&lt;br /&gt;Nos divertimos muito também com as metáforas.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1296242"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/jaime.schettini/introduo-aos-mtodos-geis-de-desenvolvimento-de-software?type=powerpoint" title="Introdução aos métodos ágeis de desenvolvimento de software"&gt;Introdução aos métodos ágeis de desenvolvimento de software&lt;/a&gt;&lt;object style="margin: 0px;" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaimeschettini-introduoaometodosgeis-090415175807-phpapp01&amp;amp;stripped_title=introduo-aos-mtodos-geis-de-desenvolvimento-de-software"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaimeschettini-introduoaometodosgeis-090415175807-phpapp01&amp;amp;stripped_title=introduo-aos-mtodos-geis-de-desenvolvimento-de-software" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/jaime.schettini"&gt;Jaime Schettini&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-6727888941451691049?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/6727888941451691049/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=6727888941451691049' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/6727888941451691049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/6727888941451691049'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2009/04/minicurso-introducao-aos-metodos-ageis.html' title='Minicurso &quot;Introdução aos métodos ágeis de desenvolvimento de software&quot;'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-4888686085901286899</id><published>2008-09-26T18:29:00.008-03:00</published><updated>2009-04-18T23:32:12.301-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='eventos'/><title type='text'>Palestra "Hibernate: do básico às aplicações reais"</title><content type='html'>Palestra apresentada por mim e pelo Leonardo Pessoa no Bel Jungle V (Belém-PA), em setembro de 2008.&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_620845"&gt;&lt;br /&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/jaime.schettini/hibernate-bel-jungle-v-presentation?type=powerpoint" title="Hibernate Bel Jungle V"&gt;Hibernate Bel Jungle V&lt;/a&gt;&lt;object style="margin: 0px;" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=hibernatebeljungle-1222471712829872-8&amp;amp;stripped_title=hibernate-bel-jungle-v-presentation"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=hibernatebeljungle-1222471712829872-8&amp;amp;stripped_title=hibernate-bel-jungle-v-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View SlideShare &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/jaime.schettini/hibernate-bel-jungle-v-presentation?type=powerpoint" title="View Hibernate Bel Jungle V on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration: underline;" href="http://slideshare.net/tag/beljungle"&gt;beljungle&lt;/a&gt; &lt;a style="text-decoration: underline;" href="http://slideshare.net/tag/java"&gt;java&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-4888686085901286899?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/4888686085901286899/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=4888686085901286899' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4888686085901286899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4888686085901286899'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2008/09/palestra-hibernate-do-basico-as.html' title='Palestra &quot;Hibernate: do básico às aplicações reais&quot;'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-3038802389438756203</id><published>2008-08-15T20:06:00.000-03:00</published><updated>2009-04-15T20:11:04.801-03:00</updated><title type='text'>Palestra "'Conhecendo o Struts 2"</title><content type='html'>&lt;span style="font-size:100%;"&gt;Palestra apresentada por mim no Java Tech Day (Belém-PA), em abril de 2007.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1296250"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jaime.schettini/conhecendo-o-struts-2-java-tech-day-2007?type=powerpoint" title="Conhecendo o Struts 2 - Java Tech Day 2007"&gt;Conhecendo o Struts 2 - Java Tech Day 2007&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaimeschettini-struts-javatechday-2007-090415180136-phpapp01&amp;stripped_title=conhecendo-o-struts-2-java-tech-day-2007" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaimeschettini-struts-javatechday-2007-090415180136-phpapp01&amp;stripped_title=conhecendo-o-struts-2-java-tech-day-2007" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/jaime.schettini"&gt;Jaime Schettini&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-3038802389438756203?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/3038802389438756203/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=3038802389438756203' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/3038802389438756203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/3038802389438756203'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2009/04/palestra-conhecendo-o-struts-2.html' title='Palestra &quot;&apos;Conhecendo o Struts 2&quot;'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-5920033094929446104</id><published>2008-08-09T00:51:00.007-03:00</published><updated>2008-09-26T20:22:46.565-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engenharia de software'/><title type='text'>Usando mapas conceituais para entendimento das regras de negócio</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Resumo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Gostaria de apresentar aqui uma prática que me ajudou muito no início de um projeto de software com um nível de conhecimento científico alto. Esse projeto ainda está em andamento, e hoje – depois de um ano –  eu posso ver o quanto a adoção dos mapas conceituais me ajudou a entender as regras de negócio e a estabelecer o escopo do sistema e posteriormente o detalhamento das suas funcionalidades.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desafios&lt;/span&gt;&lt;br /&gt;Quando eu entrei no projeto, me deparei com um desafio: criar um software a partir das melhores práticas de zootecnia, estudadas e comprovadas durante anos por especialistas e que agora deveriam ser estruturadas para desenvolver um produto que trouxesse ao produtor rural todo esse conhecimento de forma acessível e que fornecesse benefícios práticos para o seu negócio.&lt;br /&gt;&lt;br /&gt;Para isso eu contava – e ainda conto – com uma equipe de especialistas que me dão suporte para esse desenvolvimento. Então eu pensei: “beleza, tenho várias pessoas que sabem tudo sobre o assunto, então construir o sistema vai ser fácil”. Mas peraí, quem vai desenvolver sou eu! Eu preciso conhecer o assunto para poder estruturar o sistema, construir a lógica executada por trás de todas as tarefas e decisões que o sistema deve tomar. Além do mais, cada especialista tem conhecimento construído durante anos sobre um determinado assunto. O que eu realmente devo aprender? Qual parte desse conhecimento deverá entrar no sistema? É preciso filtrar as informações e para isso eu preciso entender como funciona o negócio.&lt;br /&gt;&lt;br /&gt;Para responder a essas perguntas e entender como funciona o negócio, eu adotei os &lt;a href="http://pt.wikipedia.org/wiki/Mapa_conceitual"&gt;mapas conceituais&lt;/a&gt;, que me foram apresentados ainda na graduação pela minha amiga e mentora Silvana Rossy. Um mapa conceitual é uma representação do conhecimento utilizada para diversos fins, mais popularmente para potencializar o ensino e aprendizado. Através dos mapas podemos organizar nosso conhecimento. Isso é feito através de conceitos conectados por palavras de ligação, formando uma proposição. Existe muito assunto para se falar sobre mapas conceituais que não cabem a este artigo. Uma interessante representação do que são mapas conceituais pode ser encontrada &lt;a href="http://cmapskm.ihmc.us/servlet/SBReadResourceServlet?rid=1064009710027_1483270340_27090&amp;amp;partName=htmltext"&gt;no site do Cmap Tools&lt;/a&gt;, onde eles utilizaram um mapa conceitual para explicar o conceito do próprio mapa conceitual.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ferramenta&lt;/span&gt;&lt;br /&gt;Não é necessário nenhuma ferramenta para criar mapas conceituais, bastam lápis e papel. Porém o uso de uma ferramenta ajuda muito para fins de documentação e modelagem junto aos stakeholders. A ferramenta que eu uso é o &lt;a href="http://cmap.ihmc.us/"&gt;Cmap Tools&lt;/a&gt;. Ela é fácil de usar e bem prática, permite que várias pessoas modifiquem os mapas remotamente, exporta os mapas para diferentes formatos e os disponibiliza na internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Utilizando os mapas conceituais para entender o negócio&lt;/span&gt;&lt;br /&gt;A princípio eu li alguns livros e artigos sobre zootecnia de forma geral, para começar a criar alguma coisa. Escrevi minhas primeiras proposições, para então discuti-las separadamente com cada especialista, cada um responsável por uma área do negócio.&lt;br /&gt;&lt;br /&gt;Várias reuniões aconteceram, e durante cada uma delas os mapas aumentavam, se modificavam, dúvidas iam surgindo e outras eram solucionadas. O interessante dos mapas conceituais é que através deles é possível construir conhecimento de forma fácil e divertida. Tudo o que eu fiz foi criar alguns pequenos mapas no início. A partir das reuniões, eles cresceram colaborativamente e naturalmente.&lt;br /&gt;&lt;br /&gt;É muito difícil abordar um assunto desconhecido para alguém com uma pessoa que sabe muito sobre ele. Como explicar para ela o que eu quero saber? Se deixar, a pessoa fala durante meses sobre aquilo. Os mapas realizam perfeitamente essa tarefa. Foram tantas as vezes que eu entreguei um pequeno mapa para um especialista e ele começou a complementá-lo instintivamente. Cada proposição nova gerava uma conversa e outras proposições surgiam facilmente. No final eu tinha algo parecido com isso:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u2hOYB2vNrM/SJ0W7yfNJLI/AAAAAAAAAAc/uENESwCadA0/s1600-h/Manejo+Alimentar.jpg"&gt;&lt;img style="cursor: pointer; width: 339px; height: 199px;" src="http://4.bp.blogspot.com/_u2hOYB2vNrM/SJ0W7yfNJLI/AAAAAAAAAAc/uENESwCadA0/s320/Manejo+Alimentar.jpg" alt="" id="BLOGGER_PHOTO_ID_5232363558495134898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;É engraçado como diferentes formas de abordar um assunto podem fazer com que o conhecimento se desenvolva de formas tão variadas. Os mapas conceituais me permitiram entender uma área grande de forma rápida e surpreendente; permitiram orgazinar, representar e compartilhar conhecimento.&lt;br /&gt;&lt;br /&gt;Além de tudo isso os mapas são úteis para a especificação de requisitos. Através deles é possível delimitar o escopo e definir quais atividades devem compor o sistema. Foi a partir dos meus mapas conceituais que eu escrevi os casos de uso que usei para detalhar cada atividade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusão&lt;/span&gt;&lt;br /&gt;Utilizar mapas conceituais como auxílio ao entendimento das regras de negócio é uma ótima prática que eu recomendo sempre que um projeto de software abordar um assunto de difícil entendimento e/ou com altos níveis de conhecimento científico agregado. Eles ajudam a criar uma ponte entre as pessoas que detêm conhecimento e os desenvolvedores, guiando as reuniões, através de uma linguagem de fácil entendimento e que não necessida de conhecimentos de informática para ser aplicada e entendida.&lt;br /&gt;&lt;br /&gt;Peço que, se alguém utilizar os mapas conceituais do jeito que descrevi ou de qualquer outra forma que beneficie um projeto de desenvolvimento de software, poste um comentário ou me mande um e-mail contando como foi a experiência.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-5920033094929446104?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/5920033094929446104/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=5920033094929446104' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/5920033094929446104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/5920033094929446104'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2008/08/usando-mapas-conceituais-para_09.html' title='Usando mapas conceituais para entendimento das regras de negócio'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_u2hOYB2vNrM/SJ0W7yfNJLI/AAAAAAAAAAc/uENESwCadA0/s72-c/Manejo+Alimentar.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146039435150629051.post-4557598781319942694</id><published>2008-08-08T16:01:00.004-03:00</published><updated>2008-08-08T16:25:43.919-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sobre  mim'/><title type='text'>Sejam bem vindos!</title><content type='html'>Esse é o primeiro post do meu blog. Faz tempo que eu procuro tempo para escrever, mas como as coisas vão eu não iria começar tão cedo. Então resolvi configurar esse blog e começar a postar algo de imediato.&lt;br /&gt;&lt;br /&gt;Pretendo escrever desde assuntos básicos de desenvolvimento até os mais avançados. Espero escrever textos que sirvam para as pessoas do mesmo jeito que tantos já me ajudaram. Uma das melhores ferramentas para o crescimento da área de TI são os blogs e os fóruns, que disseminam informação rapidamente e permitem compartilhamento de informações. Não sei como seria desenvolver e estudar sem as ferramentas que temos hoje. Quantas vezes eu digitei no google uma exceção cabeluda que eu não conhecia e no primeiro resultado da pesquisa apareceu alguém falando sobre ela e mostrando a solução?&lt;br /&gt;&lt;br /&gt;Desejo que meu blog tenha algo de colaborativo, que as pessoas comentem meus artigos, mostrem novas informações sobre o assunto em questão e correções para meus possíveis equívocos. Através dos comentários eu também saberei se os posts estão sendo úteis para alguém.&lt;br /&gt;&lt;br /&gt;Abraços a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146039435150629051-4557598781319942694?l=jaimesch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaimesch.blogspot.com/feeds/4557598781319942694/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146039435150629051&amp;postID=4557598781319942694' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4557598781319942694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146039435150629051/posts/default/4557598781319942694'/><link rel='alternate' type='text/html' href='http://jaimesch.blogspot.com/2008/08/sejam-bem-vindos.html' title='Sejam bem vindos!'/><author><name>Jaime Schettini</name><uri>http://www.blogger.com/profile/10987573464226661841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
