<?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-8502211885661668982</id><updated>2011-11-27T16:33:31.633-08:00</updated><category term='sites'/><category term='windows seven'/><category term='boas práticas'/><category term='xml'/><category term='play framework'/><category term='negócios'/><category term='postgres'/><category term='net'/><category term='seven'/><category term='java'/><category term='seam'/><category term='engenharia'/><category term='web'/><category term='dica'/><category term='restful'/><category term='dot.net'/><category term='tecnologia'/><category term='expomoney'/><category term='django'/><category term='MIT'/><category term='economia'/><category term='windows 7'/><category term='rest'/><category term='android'/><category term='win7'/><category term='python'/><category term='richfaces'/><category term='jboss'/><category term='design'/><category term='finanças'/><category term='asp.net mvc'/><category term='web design'/><title type='text'>Assis jr. Tecnologia, programação.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-2943280219405795140</id><published>2011-09-08T04:04:00.000-07:00</published><updated>2011-09-08T04:04:53.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sites'/><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Links sobre webdesign</title><content type='html'>&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: black; font-family: arial, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;Segue a lista de alguns links interessantes para web design:&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.iconfinder.com/" style="color: #0000cc;" target="_blank"&gt;Iconfinder | Download free icons&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://quince.infragistics.com/#/Main" style="color: #0000cc;" target="_blank"&gt;Quince - UX patterns&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.slideshare.net/theresaneil/ria-screen-layouts?from=ss_embed" style="color: #0000cc;" target="_blank"&gt;Padrões de Layout&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://wigflip.com/cornershop/" style="color: #0000cc;" target="_blank"&gt;Cornershop - Rounded Graphics for CSS Box Corners&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jotform.com/" style="color: #0000cc;" target="_blank"&gt;JotForm · Easiest Form Builder&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://wufoo.com/" style="color: #0000cc;" target="_blank"&gt;Wufoo: Online Form Builder&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://wufoo.com/gallery/designs/" style="color: #0000cc;" target="_blank"&gt;Wufoo - Esquema de Cores&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://smoothgallery.jondesign.net/" style="color: #0000cc;" target="_blank"&gt;SmoothGallery 2.0&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox2/" style="color: #0000cc;" target="_blank"&gt;Galeria CSS&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.uie.com/articles/web_forms/" style="color: #0000cc;" target="_blank"&gt;Form Design&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.cameronmoll.com/archives/001220.html" style="color: #0000cc;" target="_blank"&gt;Optimal width for 1024px resolution?&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://tableless.com.br/html5/" style="color: #0000cc;" target="_blank"&gt;Guia de Referência - Apostila sobre HTML 5&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://tools.lymas.com.br/regexp_br.php" style="color: #0000cc;" target="_blank"&gt;Testador de Expressao Regular&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://graffletopia.com/stencils/566" style="color: #0000cc;" target="_blank"&gt;UX Forms PDF&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.smashingmagazine.com/2009/06/02/fixed-vs-fluid-vs-elastic-layout-whats-the-right-one-for-you/" style="color: #0000cc;" target="_blank"&gt;Fixed vs. Fluid vs. Elastic Layout: What’s The Right One For You? - Smashing Magazine&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://layouts.ironmyers.com/" style="color: #0000cc;" target="_blank"&gt;CSS Layout: A collection of 224 Grid and CSS Layouts&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://simplebits.com/" style="color: #0000cc;" target="_blank"&gt;SimpleBits&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.noupe.com/php/beautiful-forms.html" style="color: #0000cc;" target="_blank"&gt;Beautiful Forms – Design, Style, &amp;amp; make it work with PHP &amp;amp; Ajax - Noupe Design Blog&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.insideria.com/2009/09/50-most-usable-rias.html" style="color: #0000cc;" target="_blank"&gt;50 Most Usable RIAs - InsideRIA&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.w3schools.com/browsers/browsers_display.asp" style="color: #0000cc;" target="_blank"&gt;Browser Display Statistics&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.dyn-web.com/code/scroll/horiz.php" style="color: #0000cc;" target="_blank"&gt;Horizontal Scrolling&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://ogordo.com/faux-column-com-css/" style="color: #0000cc;" target="_blank"&gt;Faux Column com CSS | OGordo.com //Um blog de peso&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://designingwebinterfaces.com/designing-web-interfaces-12-screen-patterns" style="color: #0000cc;" target="_blank"&gt;12 Standard Screen Patterns&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://pencil.evolus.vn/en-US/Home.aspx" style="color: #0000cc;" target="_blank"&gt;Pencil Project (Wireframe)&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-2943280219405795140?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/2943280219405795140/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=2943280219405795140' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2943280219405795140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2943280219405795140'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2011/09/links-sobre-webdesign.html' title='Links sobre webdesign'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-8659564386903235845</id><published>2011-05-10T15:16:00.000-07:00</published><updated>2011-05-10T15:16:48.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sites'/><category scheme='http://www.blogger.com/atom/ns#' term='restful'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Trabalhando com XML no android</title><content type='html'>Fica a dica de site sobre como trabalhar com xml em android o site abaixo dá a dica para ler e criar arquivos xml. Ele também dá exemplos com sax e dom.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/library/x-android/"&gt;http://www.ibm.com/developerworks/opensource/library/x-android/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-8659564386903235845?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/8659564386903235845/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=8659564386903235845' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/8659564386903235845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/8659564386903235845'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2011/05/trabalhando-com-xml-no-android.html' title='Trabalhando com XML no android'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-5394727629572584598</id><published>2011-03-16T03:55:00.000-07:00</published><updated>2011-03-16T03:55:04.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sites'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Dica de site/tutorial sobre Django.</title><content type='html'>&lt;h1 style="background-color: #f2f2f2; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; color: #20435c; font-family: 'Trebuchet MS', sans-serif; font-size: 32px; font-weight: normal; margin-bottom: 10px; margin-left: -20px; margin-right: -20px; margin-top: 0px; padding-bottom: 3px; padding-left: 10px; padding-right: 0px; padding-top: 3px;"&gt;Django by Example: Django Tutorials&lt;/h1&gt;&lt;div&gt;Dica para um site que contém vários exemplos de 'como fazer' em python/django. Ótima fonte de pesquisa para iniciantes e veteranos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acessem o link:&amp;nbsp;&lt;a href="http://www.lightbird.net/dbe/intro.html"&gt;http://www.lightbird.net/dbe/intro.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-5394727629572584598?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/5394727629572584598/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=5394727629572584598' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5394727629572584598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5394727629572584598'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2011/03/dica-de-sitetutorial-sobre-django.html' title='Dica de site/tutorial sobre Django.'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-4963813480528400983</id><published>2010-09-02T09:41:00.000-07:00</published><updated>2010-09-02T09:41:30.608-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sites'/><category scheme='http://www.blogger.com/atom/ns#' term='MIT'/><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Dica de site: Curso de Python no M.I.T.</title><content type='html'>Fica ai um post de dica de site, um curso online do M.I.T sobre python.&lt;br /&gt;&lt;br /&gt;http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/lecture-videos/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-4963813480528400983?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/4963813480528400983/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=4963813480528400983' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4963813480528400983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4963813480528400983'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2010/09/dica-de-site-curso-de-python-no-mit.html' title='Dica de site: Curso de Python no M.I.T.'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-5225807325832794555</id><published>2010-07-26T10:19:00.000-07:00</published><updated>2010-07-26T10:19:06.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sites'/><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Dica de site: Learn Python in 10 minutes</title><content type='html'>Dica de site para quem quer aprender a sintaxe do python.&lt;br /&gt;http://www.korokithakis.net/tutorials/python&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-5225807325832794555?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/5225807325832794555/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=5225807325832794555' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5225807325832794555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5225807325832794555'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2010/07/dica-de-site-learn-python-in-10-minutes.html' title='Dica de site: Learn Python in 10 minutes'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-4204660869308789761</id><published>2010-07-10T03:24:00.000-07:00</published><updated>2010-07-10T03:24:39.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Aprendendo Django</title><content type='html'>Estou estudando django para ampliar meus conhecimentos sobre linguagens de programação.&lt;br /&gt;&lt;br /&gt;Segue os links para instalação do django em windows e linux:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.djangoproject.com/wiki/TutorialDjangoStack"&gt;http://code.djangoproject.com/wiki/TutorialDjangoStack&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mariochaves.blogspot.com/2009/07/download-e-configuracao-da-versao-em.html"&gt;http://mariochaves.blogspot.com/2009/07/download-e-configuracao-da-versao-em.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Link para o livro online 'aprendendo django'&lt;br /&gt;&lt;a href="http://www.aprendendodjango.com/"&gt;http://www.aprendendodjango.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-4204660869308789761?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/4204660869308789761/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=4204660869308789761' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4204660869308789761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4204660869308789761'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2010/07/aprendendo-django.html' title='Aprendendo Django'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-5158601384623171039</id><published>2010-06-06T06:42:00.000-07:00</published><updated>2010-06-06T06:42:16.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='boas práticas'/><category scheme='http://www.blogger.com/atom/ns#' term='engenharia'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Strings um utilitário mão na roda!</title><content type='html'>Quando precisamos saber se uma string é nula ou vazia utilizamos sempre um código muito parecido e fica monótono escrever o mesmo código por todo o aplicativo.&lt;br /&gt;Ex.:&lt;br /&gt;&lt;br /&gt;String teste = "";&lt;br /&gt;&lt;br /&gt;if(teste == null || teste.trim().isEmpty()){&lt;br /&gt;//faz qualquer coisa...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Muitos de nós ainda criam utilitários para resolver esse problema, então ao mudar de projeto (e/ou empresa) é necessário criar outro utilitário parecido.&lt;br /&gt;Ex.:&lt;br /&gt;&lt;br /&gt;public final class Util{&lt;br /&gt;&amp;nbsp;&amp;nbsp; private Util(){}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static boolean isBlankOrNull(String str){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return str == null || str.trim().isEmpty();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;É bem chato ter que reescrever os mesmos utilitários. Então 'seus problemas se acabaram!' O Seam framework vem com um utilitário bastante mão na roda que é o Strings.&lt;br /&gt;&lt;br /&gt;O Caminho completo do utilitário é:&amp;nbsp;org.jboss.seam.util.Strings&lt;br /&gt;Ele possui vários métodos que nós costumamos a ter que recriá-los a cada novo projeto.&lt;br /&gt;&lt;br /&gt;Para usá-lo é bastante simples:&lt;br /&gt;Ex.:&lt;br /&gt;&lt;br /&gt;String teste = "";&lt;br /&gt;&lt;br /&gt;if(Strings.isEmpty(teste)){&lt;br /&gt;//Faz qualquer coisa...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Lista de Métodos do Strings:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String unqualify(String name)&lt;/b&gt;&lt;br /&gt;Retorna o nome de uma classe dentro de um pacote.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String unqualify(String name, char sep)&lt;/b&gt;&lt;br /&gt;Retorna o último elemento de uma string usando o separador informado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static boolean isEmpty(String string)&lt;/b&gt;&lt;br /&gt;Checa se a string é null or espaços vazios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String nullIfEmpty(String string)&lt;/b&gt;&lt;br /&gt;Retorna null se a string for vazia, caso contrário retorna a própria string.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String emptyIfNull(String string)&lt;/b&gt;&lt;br /&gt;Retorna empty ("") se a string for null, caso contrário retorna a própria string.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toString(Object component)&lt;/b&gt;&lt;br /&gt;Retorna uma descrição de todos os campos (fields) do objeto usando a introspecção.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String[] split(String strings, String delims)&lt;/b&gt;&lt;br /&gt;Quebra uma string em várias outras usando a string de delimitadores como token. Caso o parametro 'strings' seja null retorna um array vazio.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toString(Object... objects)&lt;/b&gt;&lt;br /&gt;Retorna a descrição de todos os objetos usando a introspecção e separa as descrições entre os objetos por um espaço (" ").&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toString(String sep, Object... objects)&lt;/b&gt;&lt;br /&gt;Retorna a descrição dos objetos usando o separador informado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toClassNameString(String sep, Object... objects)&lt;/b&gt;&lt;br /&gt;Retorna o nome das classes dos objetos informados usando o separador informado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toString(String sep, Class... classes)&lt;/b&gt;&lt;br /&gt;Retorna o nome das classes informadas usando o separador informado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public static String toString(InputStream in) throws IOException&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Retorna a descrição do fluxo informado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-5158601384623171039?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/5158601384623171039/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=5158601384623171039' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5158601384623171039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/5158601384623171039'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2010/06/strings-um-utilitario-mao-na-roda.html' title='Strings um utilitário mão na roda!'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-6379468299300939762</id><published>2009-11-28T02:08:00.000-08:00</published><updated>2009-11-28T04:16:29.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restful'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><category scheme='http://www.blogger.com/atom/ns#' term='play framework'/><title type='text'>Play Framework. Um Framework java que promete fazer a diferença para web.</title><content type='html'>Navegando por algumas listas de discussão encontrei o link para o Play framework (&lt;a href="http://www.playframework.org/"&gt;http://www.playframework.org/&lt;/a&gt;). Segundo os desenvolvedores este framework promete ser uma alternativa simples para web e restful. O próprio site do framework já é apresentado de forma simples e objetiva. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Play segue idéias vindas do LAMP (Linux Apache Mysql Php) e rails. Edite seu arquivo, refresh seu browser, voilà, seu código java já foi compilado e sua aplicação já está rodando.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O próprio site tem um helloworld bem explicativo, objetivo e fácil de acompanhar (&lt;a href="http://www.playframework.org/documentation/1.0/firstapp"&gt;http://www.playframework.org/documentation/1.0/firstapp&lt;/a&gt;). Um ponto interessante é notar que o framework é como um starterkit + build tool + server app. Ele possui recursos de scafolding para criar/manter o aplicativo que lembra o ruby on rails ou mesmo jboss seam. Outro ponto interessante é notar que ele não utiliza o Java web de forma tradicional, ou seja, não há WEB-INF, nem mesmo deploy para servidores web.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Algumas características do framework:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Framework com foco Action Like.&lt;/li&gt;&lt;li&gt;Código java compilado em tempo de execução.&lt;/li&gt;&lt;li&gt;Ferramenta de scafolding com estruturas de pastas já definidas (Algo como asp.mvc ou ruby on rails).&lt;/li&gt;&lt;li&gt;Não é uma app JEE tradicional.&lt;/li&gt;&lt;li&gt;Uso massivo de métodos estáticos para criar as ações.&lt;/li&gt;&lt;li&gt;Uso de annotations Java 5.&lt;/li&gt;&lt;li&gt;Gerencia de rotas http simplificada.&lt;/li&gt;&lt;li&gt;Parâmetros http passados como parâmetros nas ações para os métodos.&lt;/li&gt;&lt;li&gt;Engine de template, para a view, usando linguagem inspirada no groovy.&lt;/li&gt;&lt;li&gt;Stateless model, as classes de controller não são instanciadas.&lt;/li&gt;&lt;li&gt;Suporte a Test Driven Development com JUnit e Sellenium nativo ao framework.&lt;/li&gt;&lt;li&gt;Captcha suporte nativo.&lt;/li&gt;&lt;li&gt;Suporte a scheduling e gerenciamento de Jobs. Os jobs podem permanecer processando enquanto a requisição aguarda o termino do processamento.&lt;/li&gt;&lt;li&gt;CRUD com templates próprios e personalização dos Controladores e Views.&lt;/li&gt;&lt;li&gt;Segurança com uso de annotations ou herança.&lt;/li&gt;&lt;li&gt;Uso de propriedades nas classes de domínio. Cria get/set automaticamente e acessa beans com propriedades.&lt;/li&gt;&lt;li&gt;Suporte ao Spring e ao GWT.&lt;/li&gt;&lt;li&gt;Entre outras funcionalidades.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Para baixar o framework siga o link: &lt;a href="http://download.playframework.org/releases/play-1.0.zip"&gt;http://download.playframework.org/releases/play-1.0.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este framework parece ser bem simples e interessante. Os usuários de outras linguagens como PHP, Ruby poderão se sentir mais a vontade com este framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hoje em dia temos a necessidade de aplicações web com alta disponibilidade, escalabilidade e com requisitos de usabilidade cada vez mais complexos será que esse framework vai atender a essas necessidades? Em um mundo java, onde, jsf e Seam ditam as regras será que o play vai conseguir visibilidade? É esperar para ver!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;fontes: &lt;a href="http://www.playframework.org/"&gt;http://www.playframework.org/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/8502211885661668982-6379468299300939762?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/6379468299300939762/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=6379468299300939762' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/6379468299300939762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/6379468299300939762'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/11/play-framework-framework-java-que.html' title='Play Framework. Um Framework java que promete fazer a diferença para web.'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-4257318663431652465</id><published>2009-10-25T07:43:00.001-07:00</published><updated>2009-11-21T02:50:25.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='win7'/><category scheme='http://www.blogger.com/atom/ns#' term='seven'/><category scheme='http://www.blogger.com/atom/ns#' term='windows seven'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Problemas de instalação de Postgres no Windows Seven</title><content type='html'>&lt;p&gt;Esta semana instalei o Windows Seven em meu computador. Ao tentar instalar o Postgres 8.3.4-1, obtive um erro de instalação e não pude prosseguir com a instalação do banco de dados.   &lt;br /&gt;Uma possíbilidade seria instalar o modo de compatibilidade para o Windows XP. Ao verificar o tamanho do arquivo necessário para baixar procurei outra solução na internet e uma das soluções encontradas foi realizar o downgrade da versão do postgres para 8.2.    &lt;br /&gt;A solução encontrada foi realizar o upgrade para a versão 8.4.1-1 (&lt;a href="http://wwwmaster.postgresql.org/download/mirrors-ftp/binary/v8.2.14/win32/postgresql-8.2.14-1.zip"&gt;http://wwwmaster.postgresql.org/download/mirrors-ftp/binary/v8.2.14/win32/postgresql-8.2.14-1.zip&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Fontes: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://forumserver.twoplustwo.com/48/computer-technical-help/unable-install-postgresql-windows-7-a-385182/"&gt;http://forumserver.twoplustwo.com/48/computer-technical-help/unable-install-postgresql-windows-7-a-385182/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.enterprisedb.com/products/pgdownload.do#windows"&gt;http://www.enterprisedb.com/products/pgdownload.do#windows&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.postgresql.org/download/windows"&gt;http://www.postgresql.org/download/windows&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-4257318663431652465?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/4257318663431652465/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=4257318663431652465' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4257318663431652465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4257318663431652465'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/10/problemas-de-instalacao-de-postgres-no.html' title='Problemas de instalação de Postgres no Windows Seven'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-4609878404576995833</id><published>2009-09-24T10:11:00.001-07:00</published><updated>2009-09-24T10:14:09.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='boas práticas'/><category scheme='http://www.blogger.com/atom/ns#' term='engenharia'/><category scheme='http://www.blogger.com/atom/ns#' term='richfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Link sobre otimizações no Richfaces</title><content type='html'>Segue uma lista com vários links sobre otimizações no Richfaces.&lt;br /&gt;&lt;br /&gt;http://www.javaplex.com/blog/optimizing-jsf-richfaces-applications/&lt;br /&gt;http://freshmeat.net/projects/nekohtml/&lt;br /&gt;http://sourceforge.net/projects/nekohtml/files/&lt;br /&gt;http://stackoverflow.com/questions/891597/jsf-richfaces-frontend-performance-tuning&lt;br /&gt;http://javablog.be/java/fix-your-richfaces-ajax-performance-problems/&lt;br /&gt;http://www.javaplex.com/blog/optimizing-jsf-richfaces-applications/&lt;br /&gt;http://www.jboss.org/index.html?module=bb&amp;amp;op=viewtopic&amp;amp;t=120610&amp;amp;start=-10&lt;br /&gt;http://www.guj.com.br/posts/list/104495.java&lt;br /&gt;http://jsfcentral.com/articles/speed_up_your_jsf_app_1-2.html&lt;br /&gt;http://stackoverflow.com/questions/86171/how-can-i-improve-the-performance-of-the-richfaces-scrollabledatatable-control&lt;br /&gt;http://wiki.apache.org/myfaces/Performance&lt;br /&gt;http://www.jroller.com/wesleyhales/entry/jsf_component_library_integration_and&lt;br /&gt;http://jsfuser.blogspot.com/&lt;br /&gt;http://markmail.org/message/op2ick3ujlcfkh4e#query:related%3Aop2ick3ujlcfkh4e+page:1+mid:op2ick3ujlcfkh4e+state:results&lt;br /&gt;http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/ArchitectureOverview.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-4609878404576995833?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/4609878404576995833/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=4609878404576995833' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4609878404576995833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4609878404576995833'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/09/link-sobre-otimizacoes-no-richfaces.html' title='Link sobre otimizações no Richfaces'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-4829927846097068018</id><published>2009-09-10T10:17:00.001-07:00</published><updated>2009-09-10T10:17:59.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Links interessantes sobre JBoss</title><content type='html'>Integração JBoss(Como servico) IIS&lt;br /&gt;&lt;a href="http://markmail.org/message/dzhcsml5wky5w5mf" target="_blank"&gt;http://markmail.org/message/&lt;wbr&gt;dzhcsml5wky5w5mf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Configuração Log JBoss&lt;br /&gt;&lt;a href="http://www.theserverside.com/discussions/thread.tss?thread_id=29870" target="_blank"&gt;http://www.theserverside.com/&lt;wbr&gt;discussions/thread.tss?thread_&lt;wbr&gt;id=29870&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Adm e Config JBoss&lt;br /&gt;&lt;a href="http://books.google.com.br/books?id=mUwXExxGUW4C&amp;amp;pg=PT212&amp;amp;lpg=PT212&amp;amp;dq=jboss+lentidao&amp;amp;source=bl&amp;amp;ots=qLF5QHSWdR&amp;amp;sig=HvzrJeFes7qx_x-1NVLOSVpRrXE&amp;amp;hl=pt-BR&amp;amp;ei=vY9xSqaWAYKitgfF06WNBA&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=9" target="_blank"&gt;http://books.google.com.br/&lt;wbr&gt;books?id=mUwXExxGUW4C&amp;amp;pg=&lt;wbr&gt;PT212&amp;amp;lpg=PT212&amp;amp;dq=jboss+&lt;wbr&gt;lentidao&amp;amp;source=bl&amp;amp;ots=&lt;wbr&gt;qLF5QHSWdR&amp;amp;sig=HvzrJeFes7qx_x-&lt;wbr&gt;1NVLOSVpRrXE&amp;amp;hl=pt-BR&amp;amp;ei=&lt;wbr&gt;vY9xSqaWAYKitgfF06WNBA&amp;amp;sa=X&amp;amp;&lt;wbr&gt;oi=book_result&amp;amp;ct=result&amp;amp;&lt;wbr&gt;resnum=9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Acumulo de memória JBoss e java&lt;br /&gt;&lt;a href="http://jbossbrasil.ning.com/forum/topics/jboss-as-acumulo-de-memoria" target="_blank"&gt;http://jbossbrasil.ning.com/&lt;wbr&gt;forum/topics/jboss-as-acumulo-&lt;wbr&gt;de-memoria&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FastLane Pattern&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2EE/J2EEpatterns/" target="_blank"&gt;http://java.sun.com/developer/&lt;wbr&gt;technicalArticles/J2EE/&lt;wbr&gt;J2EEpatterns/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tratamento de arquivos JBoss&lt;br /&gt;&lt;a href="http://www.nabble.com/Lentid%C3%A3o-gera%C3%A7%C3%A3o-arquivo-texto-sugest%C3%A3o-estrutura-td21981107.html" target="_blank"&gt;http://www.nabble.com/Lentid%&lt;wbr&gt;C3%A3o-gera%C3%A7%C3%A3o-&lt;wbr&gt;arquivo-texto-sugest%C3%A3o-&lt;wbr&gt;estrutura-td21981107.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using mod_jk JBoss&lt;br /&gt;&lt;a href="http://www.jboss.org/community/wiki/UsingModjk12WithJBossAndIIS" target="_blank"&gt;http://www.jboss.org/&lt;wbr&gt;community/wiki/&lt;wbr&gt;UsingModjk12WithJBossAndIIS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-4829927846097068018?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/4829927846097068018/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=4829927846097068018' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4829927846097068018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/4829927846097068018'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/09/links-interessantes-sobre-jboss.html' title='Links interessantes sobre JBoss'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-6257682534455044172</id><published>2009-09-01T08:47:00.000-07:00</published><updated>2009-09-01T08:59:19.762-07:00</updated><title type='text'>Rest com Jersey, Maven2, Testes e Spring</title><content type='html'>Esses dias tive contato com o Jersey para usar o Rest.&lt;br /&gt;   Várias estratégia foram usadas a mais interessante foi a utilização do Jersey integrado com o Spring usando o maven e Testes unitários do próprio JerseyTest.&lt;br /&gt;&lt;br /&gt;Segue os links para usarem esses recursos do Java.&lt;br /&gt;&lt;br /&gt;Em um próximo post coloco um exemplo prático sobre o assunto.&lt;br /&gt;&lt;br /&gt;Testes usando um cliente web.&lt;br /&gt;&lt;a href="http://brunopereira.org/webservicesrest-criacao-de-clientes-java-para-os-servicos-rest/"&gt;http://brunopereira.org/webservicesrest-criacao-de-clientes-java-para-os-servicos-rest/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jersey Test Framework + Maven2&lt;br /&gt;&lt;a href="http://blogs.sun.com/naresh/entry/jersey_test_framework_makes_it"&gt;http://blogs.sun.com/naresh/entry/jersey_test_framework_makes_it&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HttpUnit&lt;br /&gt;&lt;a href="http://httpunit.sourceforge.net/"&gt;http://httpunit.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HttpUnit + Maven2 + Jetty&lt;br /&gt;&lt;a href="http://zenoconsulting.wikidot.com/blog:1"&gt;http://zenoconsulting.wikidot.com/blog:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Integração Jersey + Spring + Maven2&lt;br /&gt;&lt;a href="http://blogs.sun.com/enterprisetechtips/entry/jersey_and_spring"&gt;http://blogs.sun.com/enterprisetechtips/entry/jersey_and_spring&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-6257682534455044172?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/6257682534455044172/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=6257682534455044172' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/6257682534455044172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/6257682534455044172'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/09/rest-com-jersey-maven2-testes-e-spring.html' title='Rest com Jersey, Maven2, Testes e Spring'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-7583448939233291614</id><published>2009-08-26T09:21:00.000-07:00</published><updated>2009-09-01T09:38:24.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='boas práticas'/><category scheme='http://www.blogger.com/atom/ns#' term='engenharia'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Efetividade em Java</title><content type='html'>Esses dias estava navegando na internet e descobri uma apresentação do Joshua Bloch sobre o Effective Java 2ª Edição. Sem dúvida alguma um dos livros que todos os desenvolvedores java deveriam ler. Este livro demonstra como usar o Java de forma elegante, fácil manutenção, eficiente e efetiva! Ao ler esse livro você realmente muda o modo de pensar em Java.&lt;br /&gt;Dos muitos tópicos que o livro indica eu considero alguns fundamentais para OO e Java como:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Evite Criar objetos duplicados:&lt;/span&gt;&lt;/li&gt;&lt;blockquote&gt;O uso clássico desta técnica é quando você pode usar:&lt;br /&gt;&lt;code&gt;String s = "faça assim";&lt;br /&gt;ao inves de&lt;br /&gt;&lt;/code&gt;&lt;code&gt;String s = new String("evite isso");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Outros exemplos podem ser observados quando são utilizados objetos Wrappers.&lt;br /&gt;Ex.:&lt;br /&gt;&lt;code&gt;Integer i = Integer.valueOf(10);&lt;/code&gt;&lt;br /&gt;ao invés de&lt;br /&gt;&lt;code&gt;Integer i = new Integer(10);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Para todos os Wrappers você tem métodos similiares.&lt;br /&gt;&lt;br /&gt;O post abaixo explica melhor sobre isso:&lt;br /&gt;&lt;a href="http://www.guj.com.br/posts/list/120688.java"&gt;http://www.guj.com.br/posts/list/120688.java&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Obedeça o contrato geral sobre equals e hashCode:&lt;/span&gt;&lt;/li&gt;&lt;blockquote&gt;    O Equals e HashCode padrão são implementados para que toda instância seja única porém é muito comum você precisar sobrescrever o Equals/HashCode, principalmente para auxiliar frameworks como: Jpa, Hibernate, Collections, etc.&lt;br /&gt;Ex.: O Id de uma entidade representa a unicidade da mesma.&lt;br /&gt;&lt;br /&gt;Caso sua classe herde o equals que seja adequado a ela não é necessário re-escrever na classe filha, pois a classe base já garantiu isso para você!&lt;br /&gt;&lt;br /&gt;Um erro muito comum ao utilizar jpa é esquecer de sobrescrever o equals e hashCode de suas entidades. Isto pode ocasionar problemas ao realizar consultas/alterações no banco de dados ou problemas ao utilizar estes objetos em Collections. Ex.: Objetos duplicados dentro de Set´s.&lt;br /&gt;&lt;br /&gt;Ao sobrescrever o equals sem sobrescrever o hashCode você viola o contrato de uso. Diversas api´s, como Collections,  se utilizam dessa premissa serão afetadas e você poderá ter comportamentos instáveis e difíceis de serem detectados e corrigidos. Não esqueça de sempre que sobrescrever o equals, sobrescrever o  hashCode assim você garante a igualdade lógica.&lt;br /&gt;&lt;br /&gt;Como exemplo de não obedecer ao contrato do Equals e HashCode existe a classe Timestamp: (&lt;a href="http://www.docjar.com/html/api/java/sql/Timestamp.java.html"&gt;http://www.docjar.com/html/api/java/sql/Timestamp.java.html&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Existe algumas ferramentas e plugins para eclipse e netbeans que já auxiliam a sobrescrita do equals e hashCode procure sempre usar estes recursos.&lt;br /&gt;&lt;br /&gt;Nos projetos java modernos a operação de equals é realizada inumeras vezes  tanto pelo código do usuário quanto por código em suas api´s então é uma boa prática realizar a checagem do equals apartir dos objetos que tenham mais probabilidade de estarem diferentes na comparação, pois quanto antes for detectado a diferença menos código será executado. Outra boa estratégia é implementar o equals usando apenas recursos da própria classe sem depender de outros recursos custosos ou incertos como rede, banco, reflections, frameworks de terceiros, etc.&lt;br /&gt;&lt;/blockquote&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Sobrescreva o toString:&lt;/span&gt;&lt;/li&gt;&lt;blockquote&gt;O Método toString() é herdado por todos os Objetos do Java. Este método por padrão não exibe informações úteis para o desenvolvedor no dia-a-dia, sobrescrever o toString com um resumo do objeto representando uma informação clara e concisa sobre o mesmo pode facilitar o logging e debug da aplicação.&lt;br /&gt;&lt;br /&gt;É muito melhor escrever:&lt;br /&gt;&lt;code&gt;System.out.println("Loja: " +loja); ou log.debug("Loja: {0}", loja);&lt;/code&gt;&lt;br /&gt;      do que escrever&lt;br /&gt;&lt;code&gt;System.out.println("Loja: [ID: " +loja.id +", Nome: " +loja.nome +"]"); ou log.debug("Loja: [ID: {0}, Nome: {1}]", loja.id, loja.nome);&lt;/code&gt;&lt;/blockquote&gt;&lt;li&gt;Minimize a acessibilidade de classes e membros:&lt;/li&gt;&lt;li&gt;Prefira a composição ao invés da herança:&lt;/li&gt;&lt;li&gt;Prefira interfaces a classes abstratas:&lt;/li&gt;&lt;li&gt;Planeja a assinatura de um método cuidadosamente:&lt;/li&gt;&lt;li&gt;Retorne Arrays de tamanho Zero não nulls. Eu incluiria também Collections e Maps:&lt;/li&gt;&lt;li&gt;Minimize o escopo de variáveis locais:&lt;/li&gt;&lt;li&gt;Conheça e utilize as bibliotecas. Eu incluiria 'Frameworks' que você está utilizando:&lt;/li&gt;&lt;li&gt;Evite float e double quando você precisa de respostas exatas:&lt;/li&gt;&lt;li&gt;Evite String quando outros tipos forem mais apropriados:&lt;/li&gt;&lt;li&gt;Cuidado com a performance em concatenação de Strings:&lt;/li&gt;&lt;li&gt;Refira aos objetos através de suas interfaces:&lt;/li&gt;&lt;li&gt;Prefira interfaces ao invés de Reflection:&lt;/li&gt;&lt;li&gt;Siga as convenções de nomes:&lt;/li&gt;&lt;li&gt;Use exceções apenas para condições excepcionais:&lt;/li&gt;&lt;li&gt;Evite o uso desnecessário de checked exceptions:&lt;/li&gt;&lt;li&gt;Prefira o uso de exceções padrão:&lt;/li&gt;&lt;li&gt;Inclua informações na exceção sobre a falha na mensagem enviada:&lt;/li&gt;&lt;li&gt;Não ignore exceções:&lt;/li&gt;&lt;/ul&gt;Estarei comentando cada um dos tópicos que coloquei acima neste post.&lt;br /&gt;&lt;br /&gt;fontes:&lt;br /&gt;Apresentação do Effective Java por Joshua Bloch:&lt;br /&gt;&lt;a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-1512&amp;amp;yr=2006&amp;amp;track=coreplatform"&gt;http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-1512&amp;amp;yr=2006&amp;amp;track=coreplatform&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Blog Caelum:&lt;br /&gt;&lt;a href="http://blog.caelum.com.br/2008/07/25/effective-java-segunda-edicao/"&gt;http://blog.caelum.com.br/2008/07/25/effective-java-segunda-edicao/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resumo, Effective Java, por Vanessa Sabino:&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej1.html"&gt;http://br.geocities.com/vanessasabino/java/ej1.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej2.html"&gt;http://br.geocities.com/vanessasabino/java/ej2.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej3.html"&gt;http://br.geocities.com/vanessasabino/java/ej3.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej4.html"&gt;http://br.geocities.com/vanessasabino/java/ej4.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej5.html"&gt;http://br.geocities.com/vanessasabino/java/ej5.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej6.html"&gt;http://br.geocities.com/vanessasabino/java/ej6.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/vanessasabino/java/ej7.html"&gt;http://br.geocities.com/vanessasabino/java/ej7.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-7583448939233291614?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/7583448939233291614/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=7583448939233291614' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/7583448939233291614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/7583448939233291614'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/08/efetividade-em-java.html' title='Efetividade em Java'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-8091559689479344219</id><published>2009-06-06T03:49:00.000-07:00</published><updated>2009-06-06T04:13:20.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dot.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>C# 4.0</title><content type='html'>O Visual Studio 2010 e o dot net framework 4.0 estarão em breve na versão beta. Nesta versão já irá conter a versão 4.0 do C#.&lt;br /&gt;&lt;br /&gt;No passado as liguagens de programação eram projetadas com alguns paradigmas particulares em mente. Hoje em dia porém as liguagens são projetadas com vários paradigmas em mente. Na versão 3.0 do C# foram introduzidos vários paradigmas associados com programação funcional para poder tornar possível o LINQ (Language Integrated Query).&lt;br /&gt;&lt;br /&gt;A versão 4.0 do C# continua com esse envolvimento, entretanto desta vez o time de desenvolvimento do C# estão sendo inspirados por linguagens dinamicas como Python, Ruby e Pearl.&lt;br /&gt;&lt;br /&gt;Outro paradigma abrangido pelo dotnet 4.0 é a concorrência e esse paradigma influenciou bastante o vs2010 e o dot.net 4.0.&lt;br /&gt;&lt;br /&gt;Essencialmente o C# 4.0 inclue:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Objetos de tipagem dinamica&lt;/li&gt;&lt;li&gt;Opcional e parametros nomeados&lt;/li&gt;&lt;li&gt;Melhorias na interoperabilidade com COM&lt;/li&gt;&lt;li&gt;Co e contravariance com segurança&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;fonte: http://software.intel.com/en-us/blogs/2009/03/30/the-c-programming-language-version-40/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-8091559689479344219?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/8091559689479344219/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=8091559689479344219' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/8091559689479344219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/8091559689479344219'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/06/c-40.html' title='C# 4.0'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-1525680938352497976</id><published>2009-05-28T14:08:00.000-07:00</published><updated>2009-09-01T09:37:09.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Criar um converter para cnpj usando o JBoss-seam.</title><content type='html'>&lt;div&gt;Criar um converter usando o seam é realmente muito fácil. A tecnologia de orientação à componentes do seam permite criar o converter sem burocracia nem dificuldades.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Código abaixo demonstra a criação de um converter para CNPJ.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;package net.ajsoft.sccappweb.converter;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import javax.faces.component.UIComponent;&lt;/div&gt;&lt;div&gt;import javax.faces.context.FacesContext;&lt;/div&gt;&lt;div&gt;import javax.faces.convert.Converter;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/**&lt;/div&gt;&lt;div&gt; * @author F. Assis V. M. Júnior $13/05/2009 - 07:05:13$&lt;/div&gt;&lt;div&gt; * &lt;/div&gt;&lt;div&gt; */&lt;/div&gt;&lt;div&gt;&lt;b&gt;@Name("cnpjConverter")&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;@BypassInterceptors&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;@org.jboss.seam.annotations.faces.Converter()&lt;/b&gt;&lt;/div&gt;&lt;div&gt;public class CnpjConverter implements &lt;b&gt;Converter &lt;/b&gt;{&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;    public Object getAsObject(final FacesContext arg0, final UIComponent arg1,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;    final String value) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if (value == null)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;    return null;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return value.replace('.', '\u0000').replace('-', '\u0000').replace(&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;'\\', '\u0000').replace('/', '\u0000');&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;    public String getAsString(final FacesContext arg0, final UIComponent arg1,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;    final Object value) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if (value == null)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;    return null;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strValue = value.toString();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strParcela1 = strValue.substring(0, 2);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strParcela2 = strValue.substring(2, 5);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strParcela3 = strValue.substring(5, 8);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strParcela4 = strValue.substring(8, 12);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;final String strParcela5 = strValue.substring(12, 14);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return strParcela1 + '.' + strParcela2 + '.' + strParcela3 + '/'&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;+ strParcela4 + '-' + strParcela5;&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O seu converter deve implementar a interface Converter do jsf normalmente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Você deve registrar seu converter como um componente do seam. Para isso deve usar a annotation &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;@Name("cnpjConverter")&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;A annotation &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;@BypassInterceptors &lt;/span&gt;informa ao seam que o conversor deve passar direto pelos interceptadores, ou seja, não deverá ser interceptado.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para completar a annotation &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;@org.jboss.seam.annotations.faces.Converter() &lt;/span&gt;informa ao seam que a classe é um Conversor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Os métodos getAsString e getAsObject são os mesmo de um converter comum e servem para transformar o objeto em string e a string em objeto respectivamente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bom agora basta usar a imaginação e criar um conversor para Cpf.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/8502211885661668982-1525680938352497976?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/1525680938352497976/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=1525680938352497976' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/1525680938352497976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/1525680938352497976'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/05/criar-um-converter-para-cnpj-usando-o.html' title='Criar um converter para cnpj usando o JBoss-seam.'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-2191200805642251137</id><published>2009-04-20T15:07:00.000-07:00</published><updated>2009-04-20T15:21:07.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Livro: Professional Asp.net mvc gratuito</title><content type='html'>&lt;div&gt;Os autores do asp.net mvc estão disponibilizando gratuitamente o 1º capítulo de seu livro "Professional Asp.net mvc" o capítulo se chama NerdDinner que é a criação de um site para um restaurante de eventos nerd :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Capítulo inicial é excelente e serve de base para quem quer aprender ou se aprofundar no novo framework web da ms o asp mvc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Os autores do livro são:&lt;span&gt;&lt;span&gt; &lt;a href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt;, &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt;, &lt;a href="http://haacked.com/"&gt;Phil Haack&lt;/a&gt; e &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.wrox.com/WileyCDA/Section/id-321793.html"&gt;http://www.wrox.com/WileyCDA/Section/id-321793.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-2191200805642251137?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/2191200805642251137/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=2191200805642251137' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2191200805642251137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2191200805642251137'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/04/livro-professional-aspnet-mvc-gratuito.html' title='Livro: Professional Asp.net mvc gratuito'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-3529247801537238882</id><published>2009-04-17T03:35:00.000-07:00</published><updated>2009-04-17T08:48:34.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finanças'/><category scheme='http://www.blogger.com/atom/ns#' term='expomoney'/><title type='text'>Expomoney 2009</title><content type='html'>&lt;div&gt;Aconteceu neste dias 14 e 15 de abril a expomoney 2009 aqui em Fortaleza.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Evento contou com grandes celebridades do mundo das finanças pessoais como: Gustavo Cerbasi, Fabiano Calil, Augusto Saboia entre outros.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esse ano o evento contou com poucos participantes se comparado ao evento do ano passado, mas a qualidade do evento continua excelente. As palestras foram muito gratificantes muitas das palestras tiveram o tema 'crise' e compra da casa própria discutidos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No primeiro dia do evento tivemos como destaque o painel sobre independencia financeira com Gustavo Cerbasi e Fabiano Calil. Já no segundo uma das palestras mais aguardadas foi a palestra do Augusto Sabóia.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uyHXoo4x1Qo/SeikIlkHMtI/AAAAAAAAAAc/kzEQzimRt_s/s1600-h/DSC02072.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_uyHXoo4x1Qo/SeikIlkHMtI/AAAAAAAAAAc/kzEQzimRt_s/s320/DSC02072.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5325687026795098834" /&gt;&lt;/a&gt;&lt;div&gt;Augusto Sabóia e Eu.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uyHXoo4x1Qo/SeikIi8TMdI/AAAAAAAAAAU/3y4vZ2PW5Ds/s1600-h/DSC02070.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_uyHXoo4x1Qo/SeikIi8TMdI/AAAAAAAAAAU/3y4vZ2PW5Ds/s320/DSC02070.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5325687026091241938" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Luciano Tôrres, Fabiano Calil, Assis jr. e Wilson Filho&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uyHXoo4x1Qo/SeikIR1DfJI/AAAAAAAAAAM/fisbitasbr4/s1600-h/DSC02069.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_uyHXoo4x1Qo/SeikIR1DfJI/AAAAAAAAAAM/fisbitasbr4/s320/DSC02069.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5325687021497449618" /&gt;&lt;/a&gt;&lt;br /&gt;Luciano Tôrres, Gustavo Cerbasi, Assis jr. e Wilson Filho&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Em breve posto algumas palestras gravadas em audio.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;fontes: &lt;a href="http://www.expomoney.com.br/09/pal_for.asp"&gt;http://www.expomoney.com.br/09/pal_for.asp&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.expomoney.com.br/09/?evt=for"&gt;http://www.expomoney.com.br/09/?evt=for&lt;/a&gt;&lt;br /&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/8502211885661668982-3529247801537238882?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/3529247801537238882/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=3529247801537238882' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/3529247801537238882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/3529247801537238882'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2009/04/aconteceu-neste-dias-14-e-15-de-abril.html' title='Expomoney 2009'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uyHXoo4x1Qo/SeikIlkHMtI/AAAAAAAAAAc/kzEQzimRt_s/s72-c/DSC02072.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-595493644140820998</id><published>2008-05-07T20:15:00.000-07:00</published><updated>2008-05-07T20:27:25.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finanças'/><category scheme='http://www.blogger.com/atom/ns#' term='economia'/><category scheme='http://www.blogger.com/atom/ns#' term='negócios'/><title type='text'>Expomoney em Fortaleza</title><content type='html'>Nos dias 13 e 14 de maio chega à Fortaleza o Expomoney 2008, feira de exposições e palestras sobre negócios e investimentos. O Expomoney é considerado o maior circuito de educação financeira e investimentos do país.&lt;br /&gt;&lt;br /&gt;O Evento conta com a participação de grandes nomes (e autores) sobre finanças pessoais e afins como: Gustavo Cerbasi, Augusto Sabóia, entre outros.&lt;br /&gt;&lt;br /&gt;O Expomoney será realizado no hotel Vila Galé, Av. Dioguinho - 4189 nos dias 13 e 14 de maio das 14h às 22h e será gratúito.&lt;br /&gt;&lt;br /&gt;Maiores informações: http://www.expomoney.com.br/08%5Ffor/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-595493644140820998?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/595493644140820998/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=595493644140820998' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/595493644140820998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/595493644140820998'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2008/05/expomoney-em-fortaleza.html' title='Expomoney em Fortaleza'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8502211885661668982.post-2890271547435883889</id><published>2008-04-10T07:35:00.000-07:00</published><updated>2009-11-21T03:10:49.869-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Dez boas razões para usar o Seam Framework.</title><content type='html'>&lt;p&gt;Olá pessoal, como meu primeiro post vou postar aqui a tradução do artigo &amp;quot;Ten good reasons to use seam&amp;quot;, postado no próprio site do seam framework (&lt;a href="http://www.seamframework.org/Home/WhySeam)"&gt;http://www.seamframework.org/Home/WhySeam)&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;O seam framework vem sendo usado por muitas pessoas ao redor do mundo e é considerado como de idéias inovadoras. &lt;/p&gt;  &lt;h1&gt;Dez boas razões para usar o Seam Framework &lt;/h1&gt;  &lt;h4&gt;É o modo mais rápido de ser &amp;quot;rich&amp;quot; &lt;/h4&gt;  &lt;p&gt;Ajax fundamentalmente mudou o modelo de interação da web. O método sincrono de requisições de grandes granularidades, normal nos clientes web tradicionais, deixam muitas aplicações &amp;quot;server-side&amp;quot;(aplicações que são executadas no lado do servidor) enviar dados com um minimo de &amp;quot;cache&amp;quot; e nenhum nível de concorrência de sessão. A arquitetura &amp;quot;stateless&amp;quot; (sem guardar estado entre as requisições, algo como simples pergunta e resposta) é em muitos casos uma solução viável. Mas não mais! Clientes AJAX (acrônimo em língua inglesa de Asynchronous Javascript And XML) interagem com os servidores com muitas requisições assincronas, concurrentes e de granularidades pequenas que poderiam por seu banco de dados no chão. Quando o estado é mantido na memória entre as requisições, É altamente possível de ocorrer bugs e tornar vulnerável a concorrência, desde que o Java EE não provê estruturas para lidar com a concorrência de nível de sessão. &lt;/p&gt;  &lt;p&gt;Seam é o único totalmente concebido e projetado com AJAX em mente e modelos de concorrência e gerenciamento de estado. &lt;/p&gt;  &lt;p&gt;Seam 1.1 integra soluções &amp;quot;open-source&amp;quot; JSF (JavaServer Faces Technology) e AJAX como ICEFaces e Ajax4JSF com a &amp;quot;engine&amp;quot; de gerenciamento de estado e concorrência do Seam. Você pode adicionar AJAX em suas aplicações com facilidade, sem precisar aprender javascript e ainda se protege contra potenciais bugs e problemas de performance associados com a mudança para o AJAX. &lt;/p&gt;  &lt;h4&gt;É o modo mais fácil de se integrar com o EJB3 &lt;/h4&gt;  &lt;p&gt;EJB3 é um ótimo modelo de componentes e componentes de negócios transacionais, o destaque fica a cargo da nova arquitetura de persistência do java JPA (Java Persistence Api). Mas o java para web e frameworks para aplicações lançados antes do EJB3, não dão suporte ao novo modelo de componentes deixando você com o cargo de escrever seu próprio codigo de integração, e em muitos casos forçando você a escrever uma arquitetura com muitas camadas que pode não ser a mais correta para sua aplicação. &lt;/p&gt;  &lt;p&gt;Seam foi projetado para trabalhar com EJB3 e deixar você usar o modelo de componentes em todos os lugares. Desde que qualquer classe, em uma aplicação feita em Seam, pode ser um componente EJB, não há necessidade de introduzir camadas extras, que não são esperadas, apenas para manter seu framework feliz. E, de fato, não há necessidade de escrever código para integrar o EJB3 com seu framework web, porque o Seam já tem isso. &lt;/p&gt;  &lt;p&gt;Note que você não precisa usar EJB3 para usar o Seam. Se você está desenvolvendo em um ambiente que não suporta EJB3, O Seam provê alternativas. &lt;/p&gt;  &lt;h4&gt;É a melhor forma de alavancar o JSF &lt;/h4&gt;  &lt;p&gt;Jsf criou um vibrante ecosistema de biblioteca de componentes e outros adicionais, que fazem dele facilmente o mais interessante framework web para Java. Mas JSF puro tem muito XML e esquece de um numero importante de características, especialmente para pessoas contruíndo aplicações de frente para internet. Seam substitui o tedioso XML por um punhado de Annotations (Java 5), reduzindo o código e fazendo você mais produtivo. Seam amplia o JSF com funcionalidades extras como operações de multiplas janelas e gerenciamento de &amp;quot;workspace&amp;quot; (área de trabalho do aplicativo), validação baseada em modelos, page-flow (fluxo de páginas) baseado em jBPM, internationalization, cache para fragmentos de páginas. Seam adiciona facilidades para a manipulação de bookmarks (favoritos), estilo REST (Representational State Transfer), queixa número 1 de usuários contra JSF. &lt;/p&gt;  &lt;p&gt;Desde que JSF não endereça o acesso à recursos transacionais, A integração do Seam com JPA, JTA (Java Transaction Api) e EJB3 para a maioria dos usuários JSF é algo que se deve ter. &lt;/p&gt;  &lt;h4&gt;O modo mais fácil para usar o BPM&lt;/h4&gt;  &lt;p&gt;jBPM é um intuitivo e poderosa solução para aplicações empresariais com colaborações humanas complexas ou aplicações web com interações de usuários complexas. A tecnologia BPM (Business process management) não apenas torna mais fácil para analistas e desenvolvedores modelar, implementar e otimizar os processos do negócio como também torna possível operações e gerenciamento, para analisar a eficiencia do processo de negócio e estar informado de problemas. &lt;/p&gt;  &lt;p&gt;O Seam está profundamente integrado com o jBPM e torna incrivelmente fácil de usar jBPM para tarefas de gerenciamento e page-flow e é um ótimo meio de iniciar com a tecnologia de jBPM. A combinação entre Seam e jBPM pode reduzir literalmente por meses o tempo de desenvolvimento em alguns tipos de projetos. &lt;/p&gt;  &lt;h4&gt;Mas o CRUD é fácil também &lt;/h4&gt;  &lt;p&gt;Seam aja nos problemas difíceis afetando aplicações empresariais complexas. Mas isso não significa que as coisas fáceis são mais dificeis do que deveriam ser. Seam é tão produtivo quanto qualquer framework CRUD (Create, Read, Update, Delete) atual quando se trata em construir aplicações guiada pelos seus dados. Seam combina um framework (construído em volta de JPA e Hibernate) simples de acesso aos dados com uma geração de código através de linha de comando e uma ferramenta de engenharia reversa de banco de dados que podem te deixar apto para começar em minutos. &lt;/p&gt;  &lt;h4&gt;Isso faz a persistência uma brisa&lt;/h4&gt;  &lt;p&gt;Seam cresceu pela comunidade do Hibernate e foi projetado e implementado por pessoas que cunharam o termo &amp;quot;Contexto de persistência&amp;quot;. O modelo de 'conversa' do Seam resolve uma grande quantidade de problemas programação de persistência já identificados, causados pelas arquiteturas tradicionais de aplicações web &amp;quot;stateless&amp;quot;. Se você usa Hibernate ou JPA, Seam deixa isso fácil e natural para usar o contexto de persistência extendido e ajuda à você evitar replicação de estado não necessária, quando você usa um contexto de persistência extendido em ambiente clustered (distribuído). &lt;/p&gt;  &lt;h4&gt;Annotations&lt;/h4&gt;  &lt;p&gt;Seam é o primeiro modelo de programação que deixa você usar as annotations do Java5 de ponta-a-ponta, da camada de persistência até a UI (User Interface). Você nunca vai se encontrar lutando contra não necessário e bagunçado XML. Isso não significa que o Seam não use XML apenas quando apropriado (O Seam possuí um sofisticado sistema para facilitar a configuração de componentes por XML), você não vai se perder nos reinos do XML para programações comuns. &lt;/p&gt;  &lt;h4&gt;Esteja em dia com os testes automatizados&lt;/h4&gt;  &lt;p&gt;Testes unitários automatizados certamente têm seu lugar em qualquer em qualquer projeto. Mas é tão ruim quanto perigoso confiar apenas nos testes unitários. A maioria dos bugs estão entre as integrações dos componentes e a integração entre o componente e o container. Testes unitários são incapazes de capturar adequadamente o comportamento do container e normalmente não conseguem capturar corretamente as complexas interações dos componentes internos. Seam apresenta uma inovativa proposta para a integração de testes unitários, onde você pode simular todo o fluxo de requisição ou conversa, testando todas as camadas de código Java da aplicação, da apresentação até a persistência. &lt;/p&gt;  &lt;h4&gt;Casamento entre &amp;quot;open-source&amp;quot; e padrões abertos&lt;/h4&gt;  &lt;p&gt;Seam é baseado em implementações &amp;quot;open-source&amp;quot; e de padrões abertos como JSF e EJB3, ao longo de &amp;quot;open-source&amp;quot; inovadores como: Hibernate, jBPM, Facelets, Drools, ICEfaces e Ajax4JSF. Os criadores do Seam são ativos em grupos de especialistas em: EJB, JPA, Bean Validation e JSF e lideram o Web Beans (JSR-299) que têm como metas trazer idéias do Seam para dentro do padrão JavaEE. &lt;/p&gt;  &lt;p&gt;O projeto Seam é totalmente destinado para a idéia inovadora do &amp;quot;open-source&amp;quot;, guiando novas idéias e inovações para dentro da plataforma Java. &lt;/p&gt;  &lt;h4&gt;Ele funciona &lt;/h4&gt;  &lt;p&gt;Você vai adorá-lo, se você testá-lo. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8502211885661668982-2890271547435883889?l=assisprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assisprog.blogspot.com/feeds/2890271547435883889/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8502211885661668982&amp;postID=2890271547435883889' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2890271547435883889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8502211885661668982/posts/default/2890271547435883889'/><link rel='alternate' type='text/html' href='http://assisprog.blogspot.com/2008/04/dez-boas-razes-para-usar-o-seam.html' title='Dez boas razões para usar o Seam Framework.'/><author><name>Assis jr</name><uri>http://www.blogger.com/profile/11373863005434079791</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-skqWTMrsmtE/Tg5wrIF9orI/AAAAAAAAACA/G7m2dxUsZqE/s220/2011-04-26%2B21.37.00%2B-%2BC%25C3%25B3pia.jpg'/></author><thr:total>0</thr:total></entry></feed>
