<?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-7008387364889513525</id><updated>2011-11-27T15:20:37.150-08:00</updated><category term='vulnerabilidades'/><category term='Visual Studio'/><category term='ASP .net MVC 1.0 release RTW'/><category term='Microsoft'/><category term='MVC'/><category term='javascript'/><category term='Desenvolvimento Ágil'/><category term='Email'/><category term='XP'/><category term='Smartphones teste teclado virtual'/><category term='Idle'/><category term='Suporte'/><category term='.net Bugs connect DataBinding'/><category term='Wave'/><category term='Lambda Expressions'/><category term='Type Inference'/><category term='e-Ink'/><category term='Larry Page'/><category term='sharepoint'/><category term='RSS'/><category term='Chrome'/><category term='Anders Hejlsberg'/><category term='Extension Methods'/><category term='e-mail'/><category term='Futuro'/><category term='Sergey Brin'/><category term='Orientação a Objetos'/><category term='Application'/><category term='Anonymous Methods'/><category term='Operacional'/><category term='Windows Forms'/><category term='Programação'/><category term='Desenvolvimento'/><category term='jQuery'/><category term='Navegadores'/><category term='Weakly Type Languages'/><category term='Google Reader'/><category term='Excel 2007'/><category term='Google Wave'/><category term='OpenXML'/><category term='Chrome OS'/><category term='Sistema'/><category term='acesso rápido'/><category term='Extension'/><category term='erros'/><category term='String Typing'/><category term='Java'/><category term='blog'/><category term='Static'/><category term='Google'/><category term='Anonymous Types'/><category term='Delegates'/><category term='C#'/><category term='PHP'/><category term='Interfaces'/><category term='Classes'/><category term='ECMA 376'/><category term='Methods'/><category term='falha nossa'/><category term='Natal'/><category term='Bugs'/><category term='Exodus'/><category term='redes sociais'/><category term='IE'/><category term='livros'/><category term='XBOX 360'/><category term='PHPExcel'/><category term='Video game'/><category term='ASP.net'/><category term='.NET'/><category term='Indústria'/><category term='Silverlight'/><category term='Taurion'/><title type='text'>Olavo Neto</title><subtitle type='html'>Exercitando de pensamento crítico em tecnologia, mercado e política</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-3843402881753619137</id><published>2009-07-10T18:29:00.000-07:00</published><updated>2009-07-10T19:06:52.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sistema'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Operacional'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>O Sistema Operacional do Google</title><content type='html'>&lt;div&gt;Enfim, a "última barreira" para o  google iniciou sua queda. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Não me espanta a notícia de que o google esteja construindo um sistema operacional para PCs, afinal, a posição desse gigante permite reunir recursos suficientes para desenvolver um projeto de sucesso. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O modelo de negócio para o sistema operacional, sempre pautado em políticas open-source também é muito legal, assim como o Google Wave, essas duas iniciativas são duas poderosas bombas em direção a Redmond, no QG da Microsoft.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Projeto Google Chrome OS tem a finalidade de conceber um sistema operacional ideal para aqueles que vivem "na nuvem" e passam a maior parte do tempo do computador no navegador, e entendem que o computador "não tem porque ficar mais lento ao longo do tempo", "demorar 1 minuto para dar boot", ou "contrair virus".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;É o conceito de "retorno as origens" iniciado pelo Chrome na era dos browsers, agora ampliado para o próprio sistema operacional. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Estão apoiando o projeto empresas como &lt;/span&gt;&lt;span class="Apple-style-span"  style=" line-height: 16px; font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Acer, Adobe, ASUS, Freescale, Hewlett-Packard, Lenovo, Qualcomm, Texas Instruments, and Toshiba.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 16px;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 16px;font-size:13px;"&gt;Mais informações: &lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html"&gt;http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 16px; font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 16px;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&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/7008387364889513525-3843402881753619137?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/3843402881753619137/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=3843402881753619137' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3843402881753619137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3843402881753619137'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/07/o-sistema-operacional-do-google.html' title='O Sistema Operacional do Google'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-943092146296454070</id><published>2009-06-06T05:37:00.001-07:00</published><updated>2009-06-06T05:57:15.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video game'/><category scheme='http://www.blogger.com/atom/ns#' term='Futuro'/><category scheme='http://www.blogger.com/atom/ns#' term='XBOX 360'/><category scheme='http://www.blogger.com/atom/ns#' term='Indústria'/><title type='text'>XBOX 360</title><content type='html'>&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u_MQy8qr1n0&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/u_MQy8qr1n0&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Interesante observar a tendência de convergência de tudo o que temos hoje (e teremos no futuro). Antes se comprava um video-game só para jogar, depois para jogar e assitir filme (DVD), depois para jogar, assistir filme e interagir através de movimento (Wii) e esse vídeo apresenta algo que já existe hoje nos video-games e está em crescimento, que são as possibilidades de se comunicar com outras pessoas através do aparelho na internet. Ainda dá pra chamar isso de Video-game? :-D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-943092146296454070?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/943092146296454070/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=943092146296454070' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/943092146296454070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/943092146296454070'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/06/xbox-360.html' title='XBOX 360'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-7468428905946919572</id><published>2009-05-30T07:48:00.000-07:00</published><updated>2009-05-30T10:59:50.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><category scheme='http://www.blogger.com/atom/ns#' term='e-mail'/><category scheme='http://www.blogger.com/atom/ns#' term='Wave'/><title type='text'>Email 2.0?</title><content type='html'>Ontem o Google apresentou ao mundo um projeto extremamente ambicioso (e empolgante) que tem a proposta de unificar a comunicação como conhecemos hoje.&lt;br /&gt;&lt;br /&gt;Instant Messenger, Tweeter, Email, Blogger, Youtube, etc podem ser utilizados de forma integrada com essa nova e fantástica ferramenta que está sendo desenvolvida no Quartel General de Moutain View.&lt;br /&gt;&lt;br /&gt;Quando &lt;a href="http://olavorneto.blogspot.com/2008/09/e-mail-deve-ser-extinto-at-2015-diz.html"&gt;comentei o Cezar Taurion&lt;/a&gt; há algum tempo, critiquei bastante o embasamento o qual ele utilizou para chegar a conclusão de que o e-mail seria extinto até 2015. Hoje eu não discordo mais dele, mas não pelo mesmo embasamento:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/v_UyVmITiYQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=pt-br&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/v_UyVmITiYQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=pt-br&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Comentei que e-mails evoluiriam para dois própósitos, e um deles seria:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;"2- Receber notificações de todos os outros serviços descritos acima (wikis, blogs etc.). Por e-mail, você pode monitorar todos os BLOGs, ferramentas coorporativas, atualizações dos seus feeds RSS e armazenar informações de chat e até responder questionários para atualizar uma planilha. Então, sendo ele o agente concentrador, se for extinto, vamos ter que inventar outra coisa pra fazer o que ele faz e bem (o que é meio ilógico). "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois de assistir ao vídeo da pra imaginar que o Wave é essa "ilógica" invenção, até porque ele incorpora em si todas as características que o e-mail "1.0" possui e estende isso para outras fonteiras que hoje só podem ser exploradas de forma isolada, e não integrada.&lt;br /&gt;&lt;br /&gt;Mas ainda acho que a cultura de "mandar um e-mail" dar lugar para "wave-me ou me mande um wave" pode não pegar. :-) Porque? Pelo mesmo motivo que faz o &lt;a href="http://pt.wikipedia.org/wiki/SSD"&gt;SSD&lt;/a&gt; (visto como a evolução do disco rígido) continuar sendo chamado de disco(apesar de não ter absolutamente nada a vercom um).  Wave ou Gmail, acredito que vamos continuar chamando de e-mails :-D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/7008387364889513525-7468428905946919572?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/7468428905946919572/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=7468428905946919572' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7468428905946919572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7468428905946919572'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/05/email-20.html' title='Email 2.0?'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-5793023867013291394</id><published>2009-05-24T21:30:00.000-07:00</published><updated>2009-05-24T21:38:18.661-07:00</updated><title type='text'>Comercial do Chome</title><content type='html'>&lt;div&gt;Comercial que foi criado para o chrome. Criativo, não? :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Não tive tempo de me aprofundar na fonte, mas creio que a idéia partiu de um "projeto 20%*" de um "Googler". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SHZFsJKlsuA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/SHZFsJKlsuA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;* &lt;i&gt;Os "Googlers" (funcionários do Google) podem usar 20% do seu tempo para projetos pessoais e trabalhar em idéias podem se transformar em coisas como o Froogle, Google News e Google Tasks etc.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-5793023867013291394?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/5793023867013291394/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=5793023867013291394' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5793023867013291394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5793023867013291394'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/05/comercial-do-chome.html' title='Comercial do Chome'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-548727512424307337</id><published>2009-05-17T11:09:00.000-07:00</published><updated>2009-05-17T11:37:58.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='PHPExcel'/><category scheme='http://www.blogger.com/atom/ns#' term='ECMA 376'/><title type='text'>OpenXML com PHP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://phpexcel.codeplex.com/Wiki/View.aspx?title=Examples&amp;amp;referringTitle=Home"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 349px; height: 80px;" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=PHPExcel&amp;amp;DownloadId=65397&amp;amp;Build=15036" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Embora ainda exista uma richa muito grande entre Microsoft ( e seus parceiros) e IBM ( e seus parceiros) na disputa entre Open XML e ODF como padrões de formatos de documentos, aos poucos o mercado vai oferencendo soluções que ligam e se integram aos formatos, independente de ideologia.&lt;br /&gt;&lt;br /&gt;Visitando o &lt;a href="http://www.openxmldeveloper.org/"&gt;OpenXML Developer&lt;/a&gt;, encontrei um &lt;a href="http://http//download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=PHPExcel&amp;amp;DownloadId=65397&amp;amp;Build=15036"&gt;projeto interessante&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Trata-se de uma biblioteca PHP para manipular e criar documentos de planilhas que podem ser abertos pelo MS Office ou por qualquer &lt;a href="http://www.broffice.org/novell_lanca_plugin_openxml_para_ooo"&gt;outro aplicativo&lt;/a&gt; de processamento de textos e planilhas que implemente a &lt;a href="http://en.wikipedia.org/wiki/Office_Open_XML"&gt;ECMA-376&lt;/a&gt;. Gostei muito da simplicidade do código.&lt;br /&gt;&lt;br /&gt;Visitem a página e confiram!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-548727512424307337?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/548727512424307337/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=548727512424307337' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/548727512424307337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/548727512424307337'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/05/openxml-com-php.html' title='OpenXML com PHP'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-2635342882552843756</id><published>2009-04-12T18:30:00.000-07:00</published><updated>2009-05-07T05:32:43.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones teste teclado virtual'/><title type='text'>Teclado Virtual ou Teclado Tradicional</title><content type='html'>Sempre foi minha curiosidade medir o desempenho de teclados virtuais em relação a teclados tradicionais nos smartphones. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Procurando por isso,  acabei achando esse teste muito legal:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vBpjESPcYXM&amp;hl=pt-br&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vBpjESPcYXM&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;São testes com alguns smartphones do mercado. Assista o vídeo e tire suas conclusões.&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/7008387364889513525-2635342882552843756?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/2635342882552843756/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=2635342882552843756' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2635342882552843756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2635342882552843756'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/04/teclado-virtual-ou-teclado-tradicional.html' title='Teclado Virtual ou Teclado Tradicional'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8221230002167920606</id><published>2009-03-20T06:50:00.000-07:00</published><updated>2009-03-20T07:03:36.811-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP .net MVC 1.0 release RTW'/><title type='text'>ASP.NET MVC RTW 1.0!!!</title><content type='html'>Olá Pessoal,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hoje foi lançado o MVC RTW (Release to Web) 1.0!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Em breve imagino que venha o aguardado post do scott'gu apresentando os últimos ajustes em relação ao RC2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enquanto isso, como aperitivo temos o breve post do &lt;a href="http://haacked.com/archive/2009/03/18/aspnet-mvc-rtw.aspx"&gt;Phil Hack&lt;/a&gt; sobre o release.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Não cheguei a pegar a versão RTW ainda para fazer um review, mas da versão RC1 para a RTW, pelo que venho acompanhando, poucas coisas mudaram no motor do MVC, as mudanças mais significativas ficaram no processo de instalação e na distribuição dos assemblyes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Assemblyes System.Web.Abstractions.dll e System.Web.Routing.dll são embarcados no .net 3.5 SP1, portanto, foi criada uma dependência do MVC para o SP1 e de agora em diante esses dois assemblyes não acompanham mais o assembly principal System.Web.Mvc.dll&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mesmo assim ainda é possível utilizar nos servidores o .net 3.5 com os assemblyes embarcados na pasta Bin, já que não há nenhuma outra dependência do Asp.net MVC no .net 3.5 Sp1.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uma coisa que eu percebi entre o projeto ASP.net MVC e os outros projetos da Microsoft que eu acompanhei é que a aproximação da equipe de desenvolvimento com a comunidade foi muito maior, e o resultado é uma versão 1.0 bastante estável e robusta, que mudou muito pouco. Já tive a experiência de ver projetos 1.0 da Microsoft bastante atropelados, o que levou a updates e fixes poucas semanas depois. O Asp.net MVC não é o caso.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Que venha o MVC Futures!&lt;/div&gt;&lt;div&gt;&lt;br /&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;&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/7008387364889513525-8221230002167920606?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8221230002167920606/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8221230002167920606' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8221230002167920606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8221230002167920606'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/03/aspnet-mvc-rtw-10.html' title='ASP.NET MVC RTW 1.0!!!'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-9110667802321561838</id><published>2009-02-04T05:05:00.000-08:00</published><updated>2009-02-11T09:48:33.523-08:00</updated><title type='text'>Snippets</title><content type='html'>Olá Pessoal, desculpem ter passado janeiro em branco, mas os trabalhos aqui tem ficado cada vez mais pesados. :-)&lt;br /&gt;&lt;br /&gt;Semana passada saíu no blog do scott'gu o seu tão esperado &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now-available.aspx"&gt;post &lt;/a&gt;sobre o release candidate do MVC. Como eu esperava, houveram alguns breaking changes, mas a estrutura quase não foi alterada. Essa versão trouxe integrado com o visual studio uma maneira muito legal de basear a construção de views em templates que são usadas com certa frequência. Pra ficar melhor, ainda podemos criar nossas próprias views.&lt;br /&gt;&lt;br /&gt;É lógico que algumas ferramentas como o &lt;a href="http://www.codesmithtools.com/"&gt;codesmith&lt;/a&gt; há tempos faziam o mesmo trabalho. Mas a integração dessas ferramentas com o visual studio nunca foi lá grande coisa.&lt;br /&gt;&lt;br /&gt;Mas com base nessa tecnologia, fiz um comentário no blog do scott'gu sobre a possibilidade de fazer visual studio snippets atenderem a esse mesmo padrão. Pois isso é uma porta se abrindo para termos snippets que suportam parâmetros de entrada e até snippets genéricas integradas com o visual studio.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;Imaginem a classe produto:&lt;br /&gt;&lt;br /&gt;class Produto{&lt;br /&gt;&lt;br /&gt;   [IdKey] //estou chutando aqui um atributo relevante para o snippet&lt;br /&gt;   public int Id { get; set; }&lt;br /&gt;   public string Nome { get; set; }&lt;br /&gt;    public decimal Preco { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e você está escrevendo um model no MVC e decide elaborar as rotinas de validação.&lt;br /&gt;&lt;br /&gt;Então você digita dentro da classe:&lt;br /&gt;&lt;br /&gt;ModelValidation&lt;produto&gt;&lt;produto&gt; (e bate duas vezes no tab. Than!)&lt;br /&gt;&lt;br /&gt;Poderia resultar numa validação padrão baseada num template, como a classe abaixo:&lt;br /&gt;&lt;br /&gt;public class ProdutoModelValidation{&lt;br /&gt;&lt;br /&gt;   public class ValidateInput(Produto p){&lt;br /&gt;&lt;br /&gt;          //em funcao do key ID, a validacao aqui é desse jeito&lt;br /&gt;          if ( p.Id &gt; 0 &amp;amp;&amp;amp; p.Id != null ) ...&lt;br /&gt;&lt;br /&gt;          //o snippet sabe o que fazer quando trata tipos padrão string, como num template&lt;br /&gt;          if ( p.Nome != null) ...&lt;br /&gt;&lt;br /&gt;          //o snippet tem ciência dos tipos que ele está tratando, pois ele está acessando a&lt;br /&gt;          // classe produto através de reflection&lt;br /&gt;          if ( p.Preco != 0 ) ...&lt;br /&gt;&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom, fica registrada aqui a idéia :-) vou encaminhar alguma coisa pro time do VS2010&lt;/produto&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-9110667802321561838?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/9110667802321561838/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=9110667802321561838' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/9110667802321561838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/9110667802321561838'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2009/02/snippets.html' title='Snippets'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-7083005314540852175</id><published>2008-12-25T17:27:00.000-08:00</published><updated>2008-12-25T17:29:08.747-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exodus'/><category scheme='http://www.blogger.com/atom/ns#' term='Natal'/><title type='text'>Feliz Natal!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iMONJ3yZnE8/SVQzQZEf1zI/AAAAAAAAAEk/EBX8t7sjXXU/s1600-h/Cart%C3%A3o+Natal.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 290px;" src="http://3.bp.blogspot.com/_iMONJ3yZnE8/SVQzQZEf1zI/AAAAAAAAAEk/EBX8t7sjXXU/s400/Cart%C3%A3o+Natal.jpg" alt="" id="BLOGGER_PHOTO_ID_5283904619513108274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Cartão da Natal da Empresa.&lt;br /&gt;&lt;br /&gt;Desejamos feliz natal para vocês todos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-7083005314540852175?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/7083005314540852175/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=7083005314540852175' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7083005314540852175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7083005314540852175'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/12/feliz-natal.html' title='Feliz Natal!'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iMONJ3yZnE8/SVQzQZEf1zI/AAAAAAAAAEk/EBX8t7sjXXU/s72-c/Cart%C3%A3o+Natal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-6280554736630315743</id><published>2008-12-14T11:55:00.000-08:00</published><updated>2008-12-14T13:01:08.619-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sergey Brin'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Desenvolvimento Ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='Larry Page'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='livros'/><title type='text'>Recomendações de Leitura</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://altabooks.tempsite.ws/product_info.php?cPath=39&amp;amp;products_id=207&amp;amp;osCsid=ef9di520nenjsessspo6dg4264"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 122px; height: 165px;" src="http://altabooks.tempsite.ws/images/arte.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Olá pessoal,&lt;br /&gt;&lt;br /&gt;Depois das minhas pequenas férias no Rio, estou de volta com &lt;span style="font-weight: bold;"&gt;duas&lt;/span&gt; recomendações de livros que encontrei ao visitar a Siciliano no Shopping .&lt;br /&gt;&lt;br /&gt;Esse eu ainda vou comprar pra ler, mas pelo que eu já li é indispensável para gerentes e líderes de equipes que desejam implantar o desenvolvimento ágil dentro do seu modelo de desenvolvimento de software.&lt;br /&gt;&lt;br /&gt;O outro, é a história "do negócio de mídia e tecnologia de maior sucesso dos nossos tempos",  o google, que mostra a trajetória de Larry Page e Sergey Brin, dois dos mais fantásticos personagens desta década. A Internet não seria a mesma sem eles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.submarino.com.br/produto/1/1896551/google:+a+historia+do+negocio+de+midia+e+tecnologia..."&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 180px;" src="http://i.s8.com.br/images/books/cover/img1/1896551.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...esse eu comprei, e já estou terminando. Excelente!  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-6280554736630315743?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/6280554736630315743/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=6280554736630315743' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6280554736630315743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6280554736630315743'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/12/recomendaes-de-leitura.html' title='Recomendações de Leitura'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-4056532065351859780</id><published>2008-11-18T18:17:00.000-08:00</published><updated>2008-11-18T18:54:26.631-08:00</updated><title type='text'>Dica: Renderizando páginas HTML no ASP.NET MVC</title><content type='html'>Olá pessoal,&lt;br /&gt;&lt;br /&gt;Nessas últimas semanas tenho feito um mergulho profundo no ASP.net MVC Beta, e confesso que estou muito entusiasmado com o resultado. Sei que cada um tem o seu gosto por paradigmas e eu não sou diferente, e nessa semana percebi que me encontrei no MVC, e posso dizer um adeus sem remorso para os WebForms.&lt;br /&gt;&lt;br /&gt;Acho até que foi uma escolha meio tardia, tardia em função da escolha de acompanhar especificamente o MVC da Microsoft, pois talvez se tivesse experimentado o Monorail, esse adeus teria acontecido alguns meses atrás.&lt;br /&gt;&lt;br /&gt;Por fim, recomendo &lt;a href="http://samirmamude.com/2008/2/12/webforms-vs-mvc"&gt;este artigo&lt;/a&gt; do Samir Mamude . A "história" que ele conta pode representar bem o estado de espírito de uma transição.&lt;br /&gt;&lt;br /&gt;Bom, mas vamos pra nossa dica!&lt;br /&gt;&lt;br /&gt;Para desenvolver controllers, quase sempre você está enviando Dados e Submetendo Views, mas existem casos onde o que você quer enviar seja simples markup, HTML. Será que necessito mesmo enviar para uma ViewPage para ser processada? Hum, Não!&lt;br /&gt;&lt;br /&gt;Até enviei um e-mail pra equipe do MVC, vamos ver o que eles respondem. Mas o que eu gostaria de colocar é que existe uma maneira talvez um pouco mais "eficiente" de exibir esses dados casos eles sejam apenas text.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nos controllers, um dos possíveis retornos (ActionResult's) são através da propriedade Content.&lt;br /&gt;&lt;br /&gt;public ActionResult Home()&lt;br /&gt;        {&lt;br /&gt;            return Content("Olá Mundo");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Até aí, tudo bem, mas você pode enviar um arquivo HTML inteiro por ele se preferir, mas seu código poderia ficar um pouco sujo, além de enfrentar problemas na separação de competências.&lt;br /&gt;&lt;br /&gt;Então, uma alternativa interessante (O Eder achou POG :-P) , seria de criar um &lt;span style="font-weight: bold;"&gt;resource file&lt;/span&gt; e inserir nele &lt;span style="font-weight: bold;"&gt;todos os arquivos HTML&lt;/span&gt; que não necessitam de nenhum tratamento ou manipulação, ou seja, são renderizados "as is".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dessa forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public ActionResult Home()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            return Content(ContentPages.Home);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...e uma página HTML inteira é renderizada através de um Controller MVC. Obviamente o conceito é o mesmo para partes de uma página HTML. Talvez isso saia mais rápido do que fazer a ViewEngine processar o conteúdo de uma View, que, pelo que percebi, não difere muito de uma classe Page do WebForms em alguns aspectos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-4056532065351859780?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/4056532065351859780/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=4056532065351859780' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4056532065351859780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4056532065351859780'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/11/dica-renderizando-pginas-html-no-aspnet.html' title='Dica: Renderizando páginas HTML no ASP.NET MVC'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-709355788793273971</id><published>2008-10-18T04:19:00.000-07:00</published><updated>2008-11-08T18:21:14.589-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Extension Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Classes'/><title type='text'>Interfaces e Extension Methods: Uma Combinação poderosa (parte 2)</title><content type='html'>Olá Pessoal,&lt;br /&gt;&lt;br /&gt;Finalmente consegui terminar! Essa parte do post demorou um pouco porque o trabalho apertou. Espero que curtam.&lt;br /&gt;&lt;br /&gt;Agora que vocês estão familiarizados com Extension Methods, então vale a pena mostrar do que ele é capaz na prática no sentido de facilitar e viabilizar desenhos arquiteturais antes de difícil implementação.&lt;br /&gt;&lt;br /&gt;No nosso exemplo, a idéia é mostrar como se cria uma biblioteca de controles herdada da biblioteca padrão System.Web.UI.WebControls e adicionar aos controles uma propriedade chamada DataBinder do tipo IDataBinder.&lt;br /&gt;&lt;br /&gt;public interface IDataBinder&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class MeuTextBoxHerdado : System.Web.UI.WebControls.TextBox&lt;br /&gt;{&lt;br /&gt;         public IDataBinder DataBinder{ get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;A classe que implementará a propriedade nesse cenário é o que menos irá importar. O importante é que DataBinder será um ponto onde nós poderemos pendurar Extension Methods. A idéia lembra um pouco as "Interfaces de Marcação",  que são utilizada em algumas situações no ASP.NET para indicar que uma classe deve receber alguma implementação especial que será controlada por outra classe (procure saber sobre INamingContainer), só que sem a necessidade do uso de reflection.&lt;br /&gt;&lt;br /&gt;A diferença é que o ponto de marcação não é uma classe atributo, mas sim uma propriedade, e a partir dela poderemos implementar uma gama de recursos, que poderão ser facilmente portados para outros controles. Para isso, basta que os mesmos possuam uma propriedade qualquer que seja daquele tipo.&lt;br /&gt;&lt;br /&gt;Assim, podemos começar a construir nossa biblioteca de extension Methods.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static BibliotecaDataBinder{&lt;br /&gt;&lt;br /&gt;public static void BindText&lt;t&gt;(this &lt;span style="font-weight: bold;"&gt;IDataBinder &lt;/span&gt;control,  object dataSource)&lt;br /&gt;        {&lt;br /&gt;             &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;public static object Read(this &lt;span style="font-weight: bold;"&gt;IDataBinder &lt;/span&gt;control)&lt;br /&gt;        {&lt;br /&gt;             &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Para usar, basta referenciar o namespace, e finalmente:&lt;br /&gt;&lt;br /&gt;MeuTextBoxHerdado h = new MeuTextBoxHerdado();&lt;br /&gt;h.DataBinder.&lt;span style="font-weight: bold;"&gt;BindText&lt;/span&gt;&lt;string&gt;("Olá");&lt;br /&gt;&lt;br /&gt;Assim, você pode usar vários métodos úteis através da propriedade. Cabe a você como arquiteto decidir quais os métodos e propriedades que a interface deve mandar implementar para ter o trabalho feito.&lt;br /&gt;&lt;br /&gt;Nesse aspecto, dependendo do caso, sería até uma estratégia interessante manter a própria classe como implementadora da interface IDataBinder, assim, os membros da classe vão poder ser acessados diretamente pela nossa biblioteca.&lt;br /&gt;&lt;br /&gt;Reconheço que essa parte é um pouco complicada de abstrair, mas a flexibilidade do modelo faz ele valer a pena. Com essa arquitetura, recentemente migramos do modelo WebForms para MVC com uma simples adição de uma propriedade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-709355788793273971?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/709355788793273971/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=709355788793273971' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/709355788793273971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/709355788793273971'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/10/interfaces-e-extension-methods-uma_18.html' title='Interfaces e Extension Methods: Uma Combinação poderosa (parte 2)'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-983694910111694401</id><published>2008-10-15T06:31:00.000-07:00</published><updated>2008-10-15T06:37:02.572-07:00</updated><title type='text'>Silverlight 2 Released!</title><content type='html'>Olá pessoal!&lt;br /&gt;&lt;br /&gt;O recado de hoje é que o &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx"&gt;Silverlight 2 já está liberado na versão final&lt;/a&gt;. É uma ótima oportunidade de começar a experimentar novos paradigmas, desenvolvendo a próxima geração de interfaces web.&lt;br /&gt;&lt;br /&gt;[]'s!&lt;br /&gt;&lt;br /&gt;PS: Ainda estou escrevendo a segunda parte do post sobre Interfaces e Extension Methods ( muito trabalho essa semana e foi complicado de avançar)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-983694910111694401?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/983694910111694401/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=983694910111694401' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/983694910111694401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/983694910111694401'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/10/silverlight-2-released.html' title='Silverlight 2 Released!'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-5573248638291352989</id><published>2008-10-05T14:21:00.001-07:00</published><updated>2008-10-05T21:51:56.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Static'/><category scheme='http://www.blogger.com/atom/ns#' term='Extension'/><category scheme='http://www.blogger.com/atom/ns#' term='Desenvolvimento'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Interfaces e Extension Methods: uma combinação poderosa (parte 1)</title><content type='html'>Dividi esse post em três partes para que quem estiver vendo ExtensionMethods pela primeira vez possa digerir e aplicar a informação para que se siga para a segunda e terceira parte.&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold;"&gt;primeira parte &lt;/span&gt;(esse post) explica os coneitos básicos de Extension Methods.&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold;"&gt;segunda parte&lt;/span&gt; (que vou terminar de escrever ao longo da semana) vai procurar mostrar como implementar um modelo de validação de controles distintos através de interfaces comuns com extension methods.&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold;"&gt;terceira parte &lt;/span&gt;(que pretendo escrever em breve) vai mostrar a importância do uso de extension methods com interfaces na arquitetura do linq. Procurando dissecar a estratégia usada na classe IQueryable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Extension Methods&lt;/span&gt; (Vamos lá!)&lt;br /&gt;&lt;br /&gt;Se eu pudesse enumerar um motivo para não deixar o C# 3.0 por qualquer versão anterior no .net, esse motivo seria Extension Methods. Definitivamente!&lt;br /&gt;&lt;br /&gt;Extension Methods é uma maneira muito elegante de incorporar em classes métodos que não são própriamente da classe, mas sim de uma classe de "extensão".&lt;br /&gt;&lt;br /&gt;Para escrever extension Methods, devemos ter em mente algumas regrinhas básicas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Extension Methods devem contidos em classes estáticas, ou seja, uma classe que contenha apenas membros estáticos.&lt;/li&gt;&lt;li&gt;Assim, não é difícil concluir que Extension Methods são métodos estáticos. :-P&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pela natureza dessa funcionalidade, há possibilidade de colisão de identificadores, então, o compilador C# adota padrões de precedência.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pois bem, para quem nunca viu um Extension Method, funciona da seguinte forma:&lt;br /&gt;&lt;br /&gt;Se imagine no C# 2.0, onde você tem sua função "CpfValido" que faz a verificação de um CPF a partir de uma string de entrada e retorna bool (true se o CPF for válido):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;string cpf = "822.232.339-99";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; color: rgb(0, 102, 0);"&gt;if ( MinhaClasse.EhCpf(cpf) ){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; color: rgb(0, 102, 0);"&gt;    //código válido...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt; Confesse! :-) O que você realmente gostaria de usar seria:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0); font-family: verdana;"&gt;&lt;blockquote&gt;string cpf = "822.232.339-99";&lt;br /&gt;  ...&lt;br /&gt; &lt;br /&gt;  if ( &lt;span style="font-weight: bold;"&gt;cpf.EhCpf()&lt;/span&gt; ){&lt;br /&gt;      //código válido...&lt;br /&gt;  }&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;mas afinal, isso era impossível! &lt;span style="font-weight: bold;"&gt;EhCpf&lt;/span&gt; não é um método da classe string, e sim de uma classe utilitária que não tem nenhuma relação de herança com a classe string. E até esse ponto (C# 2.0) não há nenhuma forma de produzir tal efeito se não fosse através de mecanismos de herança (e no caso da classe string, que é selada, nem isso! Então como fica?). Mas o panorama mudou no C# 3.0...&lt;br /&gt;&lt;br /&gt;na sua classe utilitária, que era algo do tipo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-family: verdana;"&gt;namespace MeuNamespace{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    public static class MinhaClasse{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;        public static bool EhCpf(string cpf){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            //Trata se eh CPF&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Agora fica:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-family: verdana;"&gt;namespace MeuNamespace{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    &lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: verdana;"&gt;    public static class MinhaClasse{&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: verdana;"&gt;        public static bool EhCpf(&lt;span style="font-weight: bold;"&gt;this &lt;/span&gt;string cpf){&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: verdana;"&gt;            //Trata se eh CPF&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: verdana;"&gt;        }&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;Só isso! Agora sua classe "MinhaClasse" pode ser usada como um extension method da classe string. Mas para isso, você deve referenciar o namespace com a clausula &lt;span style="font-weight: bold;"&gt;using&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;no contexto do código, como descrito no exemplo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-5573248638291352989?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/5573248638291352989/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=5573248638291352989' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5573248638291352989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5573248638291352989'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/10/interfaces-e-extension-methods-uma.html' title='Interfaces e Extension Methods: uma combinação poderosa (parte 1)'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-6488215557664122588</id><published>2008-10-01T19:32:00.000-07:00</published><updated>2008-10-01T20:25:48.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Delegates'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Forms'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Idle'/><title type='text'>Dica: Application Idle</title><content type='html'>Quando se fala de processamento background em .net, você pode encontrar toneladas de formas diferentes de executar operações. A grande maioria delas envolvem threads diferentes da thread principal do programa (Application Pool, ThreadStart etc...).&lt;br /&gt;&lt;br /&gt;Mas uma maneira interessante realizar atividades que não demandam de tanta carga de processamento pode ser o uso do evento Application.Idle.&lt;br /&gt;&lt;br /&gt;Esse evento existe porque o .net tem como saber quando a thread principal está entrando no modo Idle (ocioso), e a execução do evento permite que se faça "alguma coisinha a mais" antes de entrar no modo idle.&lt;br /&gt;&lt;br /&gt;Tenho utilizado o idle para implementar a persistência de um buffer de log de atividades de um sistema, e o desempenho é bem satisfatório, afinal, você deixar essa operação no evento Idle significa que ela não vai ficar sendo executada toda hora, e sim quando a aplicação teoricamente "não tiver nada de mais importante pra fazer", o que já é legal:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;int contador = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;private void Form1_Load(object sender, System.EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;     Application.Idle += ( o, e) =&gt; { contador++ ; };&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Esse é só um exemplo, mas aviso que nesse caso, o "Form1" em questão é o principal e&lt;br /&gt;quando ele fecha, é porque a aplicação fecha, então tudo bem ter um lambda expression&lt;br /&gt;aí (anônimo). Mas possivelmente não será uma boa prática para outros casos.&lt;br /&gt;&lt;br /&gt;A razão disso está no fato de que como o evento Idle é estático, é muito importante que&lt;br /&gt;no momento em que você vincula um delegate do tipo EventHandler a ele, é necesário&lt;br /&gt;que você mantenha uma rotina de desvinculação preparada para retirar o evento, senão&lt;br /&gt;isso pode se tornar um memory leak.&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;int contador = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;EventHandler myHandler = new EventHandler(Contar);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;private void Contar( object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;     contador++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;private void Form1_Load(object sender, System.EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;     Application.Idle += myHandler &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;//o código de desvinculação pode ficar associado ao destrutor&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;~Form1()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;     Application.Idle -= myHandler ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-6488215557664122588?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/6488215557664122588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=6488215557664122588' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6488215557664122588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6488215557664122588'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/10/dica-application-idle.html' title='Dica: Application Idle'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-5683620526677318008</id><published>2008-09-29T05:01:00.000-07:00</published><updated>2008-09-30T07:32:29.602-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Taurion'/><category scheme='http://www.blogger.com/atom/ns#' term='redes sociais'/><title type='text'>E-mail deve ser extinto até 2015, diz especialista: Comentários</title><content type='html'>Na lista vi uma &lt;a href="http://tecnologia.terra.com.br/interna/0,,OI3207446-EI4802,00-Email+deve+ser+extinto+ate.html"&gt;profecia meio bombástica&lt;/a&gt; do respeitado Cezar Taurion.&lt;br /&gt;Posso ter entendido mal, mas realmente é um tiro que, depois de pensar pouco, na minha opnião pode não ir no alvo.&lt;br /&gt;&lt;br /&gt;Tentando me ver em 2015, acredito que e-mail será a base de dados com informações PESSOAIS (não públicas) mais vasta que alguem da nossa geração possa ter, já que sistemas como o gmail doutrinam isso: "arquive seu e-mail aqui e ache quando quiser através dos mecanismos de busca do google", e a maioria do pessoal da minha geração faz isso naturalmente.&lt;br /&gt;&lt;br /&gt;Para comunicar informações em forma de broadcast (um-pra-N) para um grupo, realmente BLOGs e redes sociais já são e devem continuar sendo a melhor ferramenta pra passar esse tipo de informação em 2015.&lt;br /&gt;&lt;br /&gt;Para colaboração, ferramentas como wiki, sharepoint são tendências, e vieram pra ficar. Principalmente no ambiente coorporativo.&lt;br /&gt;&lt;br /&gt;E os e-mails? Ao invés de serem extintos, creio eu que servirão pra dois propósitos:&lt;br /&gt;1- Estabelecer negociações tradicionais 1 a 1. Que é e sempre será uma necessidade das pessoas.&lt;br /&gt;(Afinal de contas, você vai publicar no blog uma mensagem endereçada só pra um amigo seu? E vai ser fácil de achar depois tamanha a quantidade de meios de comunicação que poderão existir?)&lt;br /&gt;&lt;br /&gt;2- Receber notificações de todos os outros serviços descritos acima. Por e-mail, você pode monitorar todos os BLOGs, ferramentas coorporativas, atualizações dos seus feeds RSS e armazenar informações de chat e até responder questionários para atualizar uma planilha. Então, sendo ele o agente concentrador, se for extinto, vamos ter que inventar outra coisa pra fazer o que ele faz e bem (o que é meio ilógico).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-5683620526677318008?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/5683620526677318008/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=5683620526677318008' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5683620526677318008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5683620526677318008'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/e-mail-deve-ser-extinto-at-2015-diz.html' title='E-mail deve ser extinto até 2015, diz especialista: Comentários'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-7879732147282337378</id><published>2008-09-28T20:23:00.000-07:00</published><updated>2008-09-28T20:42:11.105-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Microsoft anuncia suporte a jQuery</title><content type='html'>Hoje saíu uma notícia muito bacana, o time do ASP.net anunciou que o jQuery, uma biblioteca javascript open source muito popular, vai ganhar suporte da Microsoft e servirá de base para a implementação de controles para o AJAX Toolkit e helper Methods Ajax para o ASP.net MVC.&lt;br /&gt;&lt;br /&gt;Segundo o Scott Guthrie, o time do ASP.net encontrou no jQuery todas as funcionalidades que procuravam, então concluíram que não haveria a necessidade de duplicar funcionalidades, resultado: se juntaram ao time.&lt;br /&gt;&lt;br /&gt;Para os mais céticos, vale esclarecer ainda que não haverá nenhum fork do projeto, a biblioteca será distribuída com o Visual Studio e será default para projetos utilizando ASP.net MVC, e terá amplo suporte a recursos como intelisense.  A licença continuará sendo a licença MIT.&lt;br /&gt;&lt;br /&gt;Fonte: &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx"&gt;Scott'Gu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-7879732147282337378?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/7879732147282337378/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=7879732147282337378' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7879732147282337378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7879732147282337378'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/microsoft-anuncia-suporte-jquery.html' title='Microsoft anuncia suporte a jQuery'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-3551419961129285229</id><published>2008-09-28T08:04:00.000-07:00</published><updated>2008-09-30T07:38:10.003-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Orientação a Objetos'/><title type='text'>Orientação a Objetos: De religião a ferramenta</title><content type='html'>Me lembro muito bem que nos primeiros anos de faculdade, as tendências rumavam para a tecnologia J2EE da Sun, em torno de uma forte linguagem que se consolidou, naquela época, que foi o Java. Isso foi entre 2002 e 2003.&lt;br /&gt;Junto com a linguagem Java, o paradigma de orientação a objetos consolidou uma legião de adeptos, e é de uma parte desses adeptos principalmente que eu dirijo esse post.&lt;br /&gt;&lt;br /&gt;Naquela epoca, embora a OO já possuísse um conjunto de regras que a delineava, alguns grupos insistiam em seguir certas doutrinas como uma religião. Cansei de ouvir alguns gurus comentando sobre features presentes no C# (delegates, partial classes, etc..)  em seus comparativos inevitáveis algo como: "isso é uma implementação que foge os princípios da orientação a objetos. [ponto final]" (como se isso fosse algum demérito!) - na minha opnião, dane-se!&lt;br /&gt;&lt;br /&gt;Afinal de contas, quem está a serviço de quem? Não me lembro de ter assinado nenhum contrato de escravidão com a OO. Além do mais, dogmas são extremamente nocivos para a inovação, pois enquanto você para de questionar algo, como você vai evoluir?&lt;br /&gt;Design patterns? Será que só &lt;a href="http://www.industriallogic.com/patterns/ili_nyc_gof.html"&gt;Gof&lt;/a&gt; sabem pensar, se você usa o seu padrão nas suas aplicações será que só porque você produziu, ele não é bom o bastante? Para alguns desses gurus, se não é um dos padrões altamente conhecidos, então é muito provável que você seja visto como alguem que não mereça crédito.&lt;br /&gt;&lt;br /&gt;Semana passada eu li num artigo um comentário de um cidadão defendendo ferrenhamente que o Java se  mantenha como está, utilizando o argumento de que é a implementação mais fiel da OO.&lt;br /&gt;Na minha opnião, é o maior tiro no pé que o Java poderia dar (além de ser uma p... burrice). Pois isso significa parar no tempo e não se adaptar as novas tendências. Em outras palavras, suicídio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;É que tendências seriam essas?&lt;/span&gt;&lt;br /&gt;Na minha opnião, a resposta está ficando cada vez mais fácil de ver: linguagens dinâmicas.&lt;br /&gt;&lt;br /&gt;Não estou dizendo aqui que elas se tornarão a base de todo o código desenvolvido nas coorporações. O que eu acredito é que durante essa evolução dos últimos anos na tecnologia do desenvolvimento de software, apareceram alguns abismos causados principalmente por paradigmas distintos ( OO x ER e outros ) . Esses paradigmas necessitam de "pontes", e o uso de práticas de desenvolvimento advindas de linguagens dinâmicas atendem bem a esse propósito.&lt;br /&gt;&lt;br /&gt;Com esse cenário, no fim de 2006 a Microsoft apresentou o a sua estratégia dentro dessa tendência, que seriam novas implementações na sua linguagem principal, o C#. Daí tivemos a chance de conhecer implementações que "dinamizaram" a linguagem com muitos elementos que são encontrados nas linguagens dinâmicas e até nos scripts, mas a grande diferença (que continuo a batendo) é a tipagem forte e a conservação de todas as características OO não como fator restritivo, mas sim funcional.&lt;br /&gt;&lt;br /&gt;Então, se o Java tem juízo, vai acabar seguindo a tendência da mesma forma, a custo de ficar para trás na evolução das ferramentas de desenvolvimento. :-)&lt;br /&gt;A bem da verdade, andei lendo em alguns fórums que features idênticas aos delegates do C# serão finalmente implementadas na próxima versão do java, a 1.7 (já é um começo, afinal de contas, qualquer linguagem que queira implementar recursos mais complexos de interação de coleções, que é a base do "Linq", necessita começar pela base: uma estrutura como um delegate ). Não duvido muito que estruturas similares a Extension Methods e Anonymous Types também venham no pacote.&lt;br /&gt;&lt;br /&gt;Concluíndo, já estamos vendo que todas as novas funcionalidades advindas de bons feedbacks aprendidos das experiências com linguagens dinâmicas estão trazendo as linguagens de programação OO tradicionais para um novo patamar, onde a OO continua importante, mas agora sua doutrina fica em segundo plano.&lt;br /&gt;Então observamos que ao longo do tempo, o que antes era visto como dogmas de uma religião ("não romper os princípios da OO!") começou a se tornar uma ferramenta. E podemos ainda concluir que a maior resistência a evolução para as novas tendências parte de quem mais defendeu os "preceitos religiosos" aqui referidos. Em termos práticos: A comunidade java tem uma ligação muito mais forte com os princípios puros da OO e Design Patterns, acredito eu que é em função disso que até agora ainda não possuem uma ferramenta que possa concorrer com o Linq no .net.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-3551419961129285229?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/3551419961129285229/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=3551419961129285229' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3551419961129285229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3551419961129285229'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/orientao-objetos-de-religio-ferramenta.html' title='Orientação a Objetos: De religião a ferramenta'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-3893317025824084955</id><published>2008-09-27T09:42:00.000-07:00</published><updated>2008-09-27T11:00:42.220-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Suporte'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Navegadores'/><title type='text'>Chrome não abre Silverlight</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://silverlight.net/blogs/jesseliberty/WindowsLiveWriter/TheDifferenceBetweenAnEvangelistandAGeek_7315/SilverlightLogo_thumb.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 188px; height: 83px;" src="http://silverlight.net/blogs/jesseliberty/WindowsLiveWriter/TheDifferenceBetweenAnEvangelistandAGeek_7315/SilverlightLogo_thumb.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Quem resolveu baixar o Chrome e tentou abrir um site com conteúdo silverlight já percebeu: simplesmente o conteúdo ou não abre.&lt;br /&gt;&lt;br /&gt;O engraçado é que apesar de não abrir, o Chrome realmente acredita que o silverlight abre, tanto que o processo do silverlight através do Silverlight.js é executado, utilizando o pipeline de processos do Chrome, etc etc.&lt;br /&gt;&lt;br /&gt;Um ponto interessante que vale mencionar sobre a Microsoft é que o posicionamento oficial dela é de não dar suporte a produtos em beta (o que não é nada de outro mundo, e o firefox também enfrentou problemas com Silverlight quando esteve em beta, mas a versão final ficou ok).&lt;br /&gt;&lt;br /&gt;Só que o Google vem usando o termo beta em seus produtos por anos, de uma certa forma com o objetivo de dar uma idéia de que o produto está melhorando, e assim vão deixando os seus usuários mais tolerantes a possíveis falhas.&lt;p&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=248"&gt;Embora creia que essa falha específica já será corrigida na próxima versão do Chrome&lt;/a&gt;, isso de uma certa forma mostra que em termos práticos não haverá muita cooperação da MS (com uma certa legitimidade) com o Google no desenvolvimento de seus produtos, pelo menos enquanto forem "beta". :-)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-3893317025824084955?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/3893317025824084955/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=3893317025824084955' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3893317025824084955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/3893317025824084955'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/chrome-no-abre-silverlight.html' title='Chrome não abre Silverlight'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-4259333157753922536</id><published>2008-09-21T19:31:00.000-07:00</published><updated>2008-09-21T19:56:23.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Anders Hejlsberg'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Anders Hejlsberg</title><content type='html'>Procurando pelo Blog desse gênio para acrescentar na minha lista de feeds do google reader, acabei achando essas duas entrevistas super interessantes sobre o Anders Hejlsberg.&lt;br /&gt;&lt;br /&gt;Pra quem não conhece, Anders é o criador de nada menos que ferramentas como o Turbo Pascal e Delphi . Contratado pela Microsoft em 2006 por um trocado ($ 40.000.000,00) para desenvolver uma linguagem de programação totalmente nova que preparasse a Microsoft para aquilo que seria o .net, o C#.&lt;br /&gt;&lt;br /&gt;Chanel 9: &lt;a href="http://channel9.msdn.com/shows/Behind+The+Code/Life-and-Times-of-Anders-Hejlsberg/#159952"&gt;Life and Times of Anders Hejlsberg (2006)&lt;/a&gt; e &lt;a href="http://channel9.msdn.com/posts/TheChannel9Team/Anders-Hejlsberg-What-influenced-the-development-of-C/"&gt;What Influenced The Development of C# ( 2004)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahh.. Não achei o blog dele :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-4259333157753922536?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/4259333157753922536/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=4259333157753922536' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4259333157753922536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4259333157753922536'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/anders-hejlsberg.html' title='Anders Hejlsberg'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8799466504161060024</id><published>2008-09-21T18:32:00.001-07:00</published><updated>2008-09-21T19:57:42.685-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delegates'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Anonymous Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Lambda Expressions'/><title type='text'>A evolução dos delegates</title><content type='html'>Ao longo das versões do C#, uma das funcionalidades que mais me reteve atenção como desenvolvedor foram Lambda Expressions. Desta forma, resolvi fazer um artigo expondo uma abordagem evolutiva sobre o tema (nada muito didático, meramente informativo):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:130%;"  &gt;C# 1.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Quando tínhamos que escrever “ponteiros para uma função/método” no C# (óbvio que muitos não conhecem por esse nome, que é muito popular em C++, vou explicar melhor mais a frente), nós podíamos (e ainda podemos) adicioná-las em estruturas denominadas delegates da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iMONJ3yZnE8/SNZFkGEjo8I/AAAAAAAAAD0/N8UooQSd5_U/s1600-h/delegates1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 610px; height: 364px;" src="http://4.bp.blogspot.com/_iMONJ3yZnE8/SNZFkGEjo8I/AAAAAAAAAD0/N8UooQSd5_U/s400/delegates1.jpg" alt="" id="BLOGGER_PHOTO_ID_5248458902154224578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1- Se escreve o delegate, que é uma estrutura que funciona como um tipo, o qual aquele método vai ser vinculado, ou seja, se define uma referência com assinatura de método específica.&lt;br /&gt;&lt;br /&gt;2- Se cria o método o qual se quer que o ponteiro aponte.&lt;br /&gt;&lt;br /&gt;3- Com isso você pode adicionar (e remover) nessa referência qualquer método que tenha essa mesma assinatura, como se fosse uma lista de execução.&lt;br /&gt;&lt;br /&gt;A conclusão que podemos chegar com delegates é que são mecanismos que permitem o agrupamento de vários métodos de diferentes classes para um pipeline execução. E justamente por isso, ele é utilizado em várias partes do .net framework, como threading, eventos, serialização etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Eventos&lt;/span&gt;&lt;br /&gt;Como falei, no topo da estrutura de delegates está construída uma arquitetura de invocação implícita que ficou muito popular: eventos de componentes. Eventos são delegates especiais. Ele tem uma assinatura restrita que não deve retornar nada a não ser void, e só podem ser executados pela classe que os possui (classes filhas não executam diretamente eventos da classe pai). Essa especificidade é atribuída ao declarar a referência delegate a palavra chave event.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:arial;"&gt;C# 2.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As coisas ficaram um pouco mais práticas com o advento dos Anonymous Methods...&lt;br /&gt;&lt;br /&gt;1 – Em muitos casos se deseja &lt;span style="font-weight: bold;"&gt;simplesmente &lt;/span&gt;executar uma operação vinculada a um evento de um componente (ex: setar visible=false no click do botão).&lt;br /&gt;Isso significa que escrever um método unicamente pra fazer essa operação ser “burocracia demais”.&lt;br /&gt;&lt;br /&gt;Pensando nisso, na versão do C# 2.0 foi criada, entre outras funcionalidades, Anonymous Methods, que é uma forma simplificada de escrever um método no contexto de um delegate:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iMONJ3yZnE8/SNb19qKMT_I/AAAAAAAAAEU/FXOtQyeBsU0/s1600-h/anonymousMethods.jpg"&gt;&lt;img style="cursor: pointer; width: 645px; height: 490px;" src="http://3.bp.blogspot.com/_iMONJ3yZnE8/SNb19qKMT_I/AAAAAAAAAEU/FXOtQyeBsU0/s400/anonymousMethods.jpg" alt="" id="BLOGGER_PHOTO_ID_5248652855384756210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Realmente simplificou mais, mas ainda não terminou...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;C# 3.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tudo estava indo bem, até que apareceram essas tais lambda expressions, mas afinal, o que são lambda expressions? A resposta que mais gostei e a que uso é que &lt;span style="font-weight: bold;"&gt;é uma forma simplificada de escrever um delegate&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;if ( querSaberMais?) {&lt;br /&gt;&lt;br /&gt;  goto: &lt;a href="http://msdn.microsoft.com/en-us/library/ms364047%28VS.80%29.aspx#cs3spec_topic4"&gt;especificação do C# 3.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; if ( naoEntendiMuitoBem) {&lt;br /&gt;     Console.WriteLine(" Vou explicar com o nosso exemplo :-)  ");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Na versão 2.0, criar um método anônimo para isso era a possibilidade mais ágil. Mas agora é possível proceder para resolver o mesmo problema com lambda expressions. A diferença é meramente uma questão de sintaxe:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iMONJ3yZnE8/SNZFkQ5wdsI/AAAAAAAAAD8/05TQwmZNX2o/s1600-h/lambda.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 520px; height: 260px;" src="http://2.bp.blogspot.com/_iMONJ3yZnE8/SNZFkQ5wdsI/AAAAAAAAAD8/05TQwmZNX2o/s400/lambda.jpg" alt="" id="BLOGGER_PHOTO_ID_5248458905061717698" border="0" /&gt;&lt;/a&gt;Assim, assinar eventos simples como click’s de botão ficaram tão mais fáceis, que começei a inscrever muitos "onclicks" manualmente. Detalhe: a inferência de tipo é que faz o compilador procurar saber o tipo de "obj" e "e", o que é muito legal para quem tem dificuldades (como eu) de ficar decorando todos os XXXXEventArgs que tem poraí para cada evento diferente em função da vasta quantidade de XXXEventHandlers diferentes que os controles usam. :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iMONJ3yZnE8/SNZeZcKgMdI/AAAAAAAAAEM/DhupeFemxJc/s1600-h/lambdas2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 529px; height: 109px;" src="http://2.bp.blogspot.com/_iMONJ3yZnE8/SNZeZcKgMdI/AAAAAAAAAEM/DhupeFemxJc/s400/lambdas2.jpg" alt="" id="BLOGGER_PHOTO_ID_5248486206896878034" border="0" /&gt;&lt;/a&gt;Bom, é isso pessoal, no próximo post falarei sobre interfaces e Extension Methods, aguarde!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-8799466504161060024?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8799466504161060024/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8799466504161060024' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8799466504161060024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8799466504161060024'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/evoluo-dos-delegates.html' title='A evolução dos delegates'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iMONJ3yZnE8/SNZFkGEjo8I/AAAAAAAAAD0/N8UooQSd5_U/s72-c/delegates1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-1088929917520419188</id><published>2008-09-16T15:57:00.000-07:00</published><updated>2008-09-16T16:07:02.940-07:00</updated><title type='text'>Segurança no Mercado Livre</title><content type='html'>Olá pessoal, hoje recebi dois e-mails que me causaram um susto a princípio:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iMONJ3yZnE8/SNA7i0D7_mI/AAAAAAAAADk/4UpOgaIvlYA/s1600-h/Seguranca2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iMONJ3yZnE8/SNA7i0D7_mI/AAAAAAAAADk/4UpOgaIvlYA/s400/Seguranca2.jpg" alt="" id="BLOGGER_PHOTO_ID_5246759035163377250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Um ataque bem feito, por sinal. Afinal de contas, foi usado um domínio "mercadolivre.com" entre outras coisas.&lt;br /&gt;&lt;br /&gt;Muita gente deve cair, entrar com login e senha e entregar a senha para o cracker.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iMONJ3yZnE8/SNA7VRPr6TI/AAAAAAAAADc/Mp5Jrrvrvww/s1600-h/Seguranca.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iMONJ3yZnE8/SNA7VRPr6TI/AAAAAAAAADc/Mp5Jrrvrvww/s400/Seguranca.jpg" alt="" id="BLOGGER_PHOTO_ID_5246758802479114546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tomem cuidado com essa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-1088929917520419188?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/1088929917520419188/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=1088929917520419188' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1088929917520419188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1088929917520419188'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/segurana-no-mercado-livre.html' title='Segurança no Mercado Livre'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iMONJ3yZnE8/SNA7i0D7_mI/AAAAAAAAADk/4UpOgaIvlYA/s72-c/Seguranca2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-953665176419801315</id><published>2008-09-12T05:31:00.001-07:00</published><updated>2008-09-12T05:59:59.161-07:00</updated><title type='text'>Chrome usa código Open Souce da Microsoft em sua implementação</title><content type='html'>Essa semana o &lt;a href="http://www.hanselman.com/blog/" target="_blank"&gt;Scott Hanselman&lt;/a&gt; nos presenteou com um post muito legal sobre o Chrome, que faz parte do que ele chama de &lt;a href="http://www.hanselman.com/blog/ReadingToBeABetterDeveloperTheCoding4FunDevKit.aspx"&gt;"jornada de leitura de código para se tornar um programador melhor"&lt;/a&gt; e ele observou algumas coisas interessantes na implementação do Chrome.&lt;br /&gt;&lt;br /&gt;Uma delas é que o Chrome usa uma biblioteca que denominada &lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Open Source Windows Template Library&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;, para executar algumas macros e mapear algumas funcionalidades do sistema.&lt;br /&gt;&lt;br /&gt;A WTL é uma versão "lightweight" da biblioteca MFC (&lt;/span&gt;&lt;/span&gt;Microsoft Foundation Classes) escrita em C++.&lt;br /&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Além da WTL, que foi liberada como open source em 2004, o projeto "Chromium" utiliza mais de 20 outros componentes open source de terceiros.&lt;br /&gt;&lt;br /&gt;Outras coisas interessantes que foram achadas:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;"// Completely undocumented from Microsoft.&lt;strong&gt; You can find this information by       &lt;br /&gt;// disassembling Vista's SP1 kernel32.dll with your favorite disassembler.        &lt;br /&gt;&lt;/strong&gt;enum PROCESS_INFORMATION_CLASS {      &lt;br /&gt;ProcessExecuteFlags = 0x22,      &lt;br /&gt;}"&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;Mas afinal, é por uma boa causa. (Segundo Hanselman, isso permite que o browser fique mais seguro nos sistemas operacionais Windows), apesar de que a "documentação inexistente" não é tão &lt;/span&gt;&lt;a target="_blank" href="http://download.microsoft.com/download/5/b/3/5b38800c-ba6e-4023-9078-6e9ce2383e65/C06X1116607.pdf"&gt;&lt;span style="font-size:100%;"&gt;inexistente&lt;/span&gt;&lt;/a&gt; &lt;span style="font-size:100%;"&gt;assim. :-) E também tem &lt;/span&gt;&lt;a target="_blank" href="http://research.microsoft.com/workshops/FS2008/presentations/Polze_Andreas_Faculty_Summit_072808.pptx"&gt;aqui&lt;/a&gt; , e &lt;a target="_blank" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1034817&amp;amp;SiteID=1"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Se quiser ler o post na íntegra, acesse &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode33MicrosoftOpenSourceInsideGoogleChrome.aspx"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3  style="font-weight: bold;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-953665176419801315?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/953665176419801315/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=953665176419801315' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/953665176419801315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/953665176419801315'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/chrome-usa-cdigo-open-souce-da.html' title='Chrome usa código Open Souce da Microsoft em sua implementação'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-446775914605553907</id><published>2008-09-12T05:06:00.000-07:00</published><updated>2008-09-12T05:18:23.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Futuro'/><category scheme='http://www.blogger.com/atom/ns#' term='e-Ink'/><title type='text'>E-Tinta</title><content type='html'>Direto do "De volta para o Futuro 4?": e-Ink :-)&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iKS12PMdJ6w&amp;amp;hl=pt-br&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/iKS12PMdJ6w&amp;amp;hl=pt-br&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;É realidade, e é uma edição especial de aniversário de uma revista nos Estados Unidos.&lt;br /&gt;&lt;br /&gt;É gente, daqui a pouco aparecem uns carros voadores também poraí :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-446775914605553907?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/446775914605553907/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=446775914605553907' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/446775914605553907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/446775914605553907'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/e-tinta.html' title='E-Tinta'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-1180654855407600301</id><published>2008-09-11T10:26:00.001-07:00</published><updated>2008-09-16T16:24:51.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='acesso rápido'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Reader'/><title type='text'>Dica (velha) da Semana: Google Reader</title><content type='html'>Não posso ser considerado um early adopter no que se diz respeito a software (com exceção dos que eu trabalho diretamente, .net, MVC, C#, Visual Studio etc.. ), então alguns podem achar esse post meio fora do tempo.&lt;br /&gt;&lt;br /&gt;Nas últimas semanas tenho percebido que acesso muias informações que poderiam ser visualizadas através de uma ferramenta visualizadora de RSS (que eu sempre ouvia falar, mas nunca usei). Daí, já tinha lido que o Google Reader era uma boa ferramenta boa para visualizar conteúdo de blogs, mas nunca me motivei a usá-lo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img0.gmodules.com/ig/images/reader_sample.gif"&gt;&lt;img style="cursor: pointer; " src="http://img0.gmodules.com/ig/images/reader_sample.gif" alt="" align="left" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Essa semana resolvi experimentar, e não me arrependi. Exelente programa. Rapidamente inseri as minhas principas fontes de informação&lt;br /&gt;&lt;br /&gt;Pra quem não conhece, o google reader centraliza em uma interface todos os seus RSSs dentro de uma página Web. Assim, você pode ter em apenas um site todas as informações que você acessa com mais frequência em uma página.&lt;br /&gt;&lt;br /&gt;Como alguem ligado em tecnologia, me sinto na idade da pedra em descobrir isso apenas agora. Mas fazer o quê, né? :-P&lt;br /&gt;&lt;br /&gt;[]'s!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-1180654855407600301?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/1180654855407600301/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=1180654855407600301' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1180654855407600301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1180654855407600301'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/dica-velha-da-semana-google-reader.html' title='Dica (velha) da Semana: Google Reader'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-2913052229573049781</id><published>2008-09-11T07:55:00.000-07:00</published><updated>2008-09-11T16:55:35.794-07:00</updated><title type='text'>Ponto para o Google</title><content type='html'>Sobre a questão dos termos de uso dos produtos do Google, de certa forma esse gesto mostra a boa fé do pessoal de Mountain View:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/2008/09/update-to-google-chromes-terms-of.html"&gt;http://googleblog.blogspot.com/2008/09/update-to-google-chromes-terms-of.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[]'s!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-2913052229573049781?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/2913052229573049781/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=2913052229573049781' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2913052229573049781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2913052229573049781'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/ponto-para-o-google.html' title='Ponto para o Google'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8522811840487553214</id><published>2008-09-10T14:44:00.000-07:00</published><updated>2008-09-10T14:55:14.065-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erros'/><category scheme='http://www.blogger.com/atom/ns#' term='falha nossa'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Nova Série no Blog: "Falha Nossa"</title><content type='html'>Vou criar uma série "falha nossa" :)&lt;br /&gt;&lt;br /&gt;Com o post "Oops" resolvi dar continuidade e criar uma série "Falha nossa" de sites importantes na Web, divulgando indisponibilidades e falhas nos sistemas Web que todos nós usamos e conhecemos.&lt;br /&gt;&lt;br /&gt;E na segunda edição, temos o Banco do Brasil e seus servidores rodando IBM WebSphere, com um clássico Erro 500 :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iMONJ3yZnE8/SMhAz_epgtI/AAAAAAAAAB8/eYtvPlb-Lnk/s1600-h/BB+ForraDoAr.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_iMONJ3yZnE8/SMhAz_epgtI/AAAAAAAAAB8/eYtvPlb-Lnk/s400/BB+ForraDoAr.jpg" alt="" id="BLOGGER_PHOTO_ID_5244513028030431954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;É só dar o reset nesse servidor de $ 1.000.......000,00  que ele volta ao ar :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-8522811840487553214?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8522811840487553214/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8522811840487553214' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8522811840487553214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8522811840487553214'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/nova-srie-no-blog-falha-nossa.html' title='Nova Série no Blog: &quot;Falha Nossa&quot;'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iMONJ3yZnE8/SMhAz_epgtI/AAAAAAAAAB8/eYtvPlb-Lnk/s72-c/BB+ForraDoAr.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8290558120713905448</id><published>2008-09-08T06:14:00.000-07:00</published><updated>2008-09-08T06:38:51.006-07:00</updated><title type='text'>Firefox 3 - Primeiras Impressões</title><content type='html'>Recentemente baixei o FF 3 para usar definitivamente. Achei vários recursos melhorados, principalmente na barra de endereços, que ficou mais inteligente em relação ao FF 2. Mas de cara, a frequência que eu recorria ao IE7 por questão de bugs e travamentos em sites específicos diminuíram bastante.  O visual também ficou mais clean, e as abas abrem de forma smoothless com efeitos legais.&lt;br /&gt;&lt;br /&gt;Não achei (nem sei se existe) a função para abrir a aba ao lado da aba que a originou, como no IE 7 e IE 8 beta. Quando você tem mais de 10 abas abertas, explorando a primeira e tentar abrir uma nova aba,  vai ter que percorrer até a 11ª.&lt;br /&gt;&lt;br /&gt;No meu caso, a única bola na trave mesmo foi o firebug. Que não é compatível com a nova versão, e o plugin da nova versão está no beta. Aliás, se eu soubesse disso, nem teria trocado, pois como desenvolvedor web, uso bastante o firebug. Apesar do beta, preferi não arriscar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-8290558120713905448?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8290558120713905448/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8290558120713905448' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8290558120713905448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8290558120713905448'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/firefox-3-primeiras-impresses.html' title='Firefox 3 - Primeiras Impressões'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-6173663627500313624</id><published>2008-09-07T07:43:00.000-07:00</published><updated>2008-09-07T13:28:29.701-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Anonymous Types'/><category scheme='http://www.blogger.com/atom/ns#' term='Weakly Type Languages'/><category scheme='http://www.blogger.com/atom/ns#' term='String Typing'/><category scheme='http://www.blogger.com/atom/ns#' term='Type Inference'/><title type='text'>Strong typing com jeito de weak typing no C#</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Pegando o gancho no último post sobre Javascript:&lt;br /&gt;&lt;br /&gt;Acredito que o leitor deve ter percebido que uma coisa que pessoalmente não me agrada (com raríssimas exceções em casos específicos) são linguagens de programação que encorajam que seus tipos sejam "weakly typed"(fracamente tipados) .&lt;br /&gt;&lt;br /&gt;A bem da verdade, produzir &lt;span style="font-weight: bold;"&gt;scripts &lt;/span&gt;que necessitam ligar um aplicativo, passar parâmetros de datas pra lá e pra cá, tarefas que realmente não necessitam propriamente de uma linguagem de programação robusta, basicamente uma linguagem dinâmica de script é o suficiente.&lt;br /&gt;&lt;br /&gt;Agora quando você necessita de uma linguagem que, além de ser facilmente legível e ágil como as linguagens dinâmicas, mas que permita um encadeamento lógico necessário para se construir blocos de código estruturais, internos aos aplicativos, onde processo de construção necessita de uma abordagem diferenciada. Aí não há como dizer que tipagem forte não representa a opção mais sensata.&lt;br /&gt;&lt;br /&gt;Alguns argumentos em favor disso:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A gerência da memória de dados é simplificada, afinal, quem define os tipos é o programador (não estou contando com reflection). Geralmente numa linguagem dinâmica, o tipo muda de acordo com o valor da variável, e é necessária uma estrutura extra pra cuidar desse processo.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Os recursos de intelisense ficam simplificados na implementação e 100% precisos, nada de “sugestões”. O javascript e outras linguagens sofrem bastante com esse problema.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Aumenta a facilidade de leitura, pois você já consegue identificar o tipo pela declaração.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;A tipagem forte permite a você garantir que problemas inerentes ao tipo (conversões, chamadas de métodos, etc) não serão passados para a versão final do programa, uma vez que esse modelo também é efetivo contra a filtragem de erros e tempo de compilação/verificação de sintaxe.  &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;No C# 3.0 conseguiu-se um meio termo muito interessante entre os principais argumentos de quem tem preferência por tipagem fraca (principalmente referidas a escrita) mas mantendo a solidez do modelo fortemente tipado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Type Inference (Inferência de Tipo)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Observe:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_kr62UI/AAAAAAAAAB0/28jy5F-EV0E/s1600-h/typeInference+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_kr62UI/AAAAAAAAAB0/28jy5F-EV0E/s400/typeInference+1.png" alt="" id="BLOGGER_PHOTO_ID_5243376331973646658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Uma novidade no C# é a nova sintaxe para deixar que o compilador infira para você o tipo do objeto, com a palavra reservada &lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Na prática, o compilador (e o intelisense também) inferem que você inicializou o objeto com o tipo int, então o tipo daquela referência é int.&lt;br /&gt;&lt;br /&gt;Datalhe: se você for querer passar para a variável, após o momento da inicialização algum valor que não seja do tipo inferido, ocorre um erro de compilação.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_UG1LjI/AAAAAAAAABs/x6MuEfvNqV8/s1600-h/typeInference+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_UG1LjI/AAAAAAAAABs/x6MuEfvNqV8/s400/typeInference+2.png" alt="" id="BLOGGER_PHOTO_ID_5243376327523118642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Type Inference + Anonymous Types&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mas se tem alguem ainda insatisfeito porque adoram o jeito &lt;a href="http://en.wikipedia.org/wiki/JSON"&gt;"JSON"&lt;/a&gt; de programar das linguagens dinâmicas, saibam que o C# incorporou na sua versão 3.0 uma forma bastante interessante de declaração de dados:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_IYaE7I/AAAAAAAAABk/wpmVFWPIyvY/s1600-h/typeInference+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_IYaE7I/AAAAAAAAABk/wpmVFWPIyvY/s400/typeInference+3.png" alt="" id="BLOGGER_PHOTO_ID_5243376324375614386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O tipo é anônimo, mas é um tipo forte,o intelisense mostra isso: podemos acessar as variáveis internas do tipo anônimo sem delongas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conclusão &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Embora uma implementação de linguagens com tipagem fraca careçam de alguns elementos importantes para o processo de desenvolvimento de software básico, existem princípios que podem ser bem aproveitados em linguagens como C# a fim de torná-la uma linguagem completa sem aumento de complexidade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-6173663627500313624?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/6173663627500313624/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=6173663627500313624' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6173663627500313624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6173663627500313624'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/strong-typing-com-jeito-de-weak-typing.html' title='Strong typing com jeito de weak typing no C#'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iMONJ3yZnE8/SMQ2_kr62UI/AAAAAAAAAB0/28jy5F-EV0E/s72-c/typeInference+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-7775219478283147397</id><published>2008-09-05T12:27:00.000-07:00</published><updated>2008-09-05T13:44:17.244-07:00</updated><title type='text'>Javascript Engines Vs. Silverlight 2</title><content type='html'>Com o lançamento do Chrome e com o alpha da versão 3.1 do Firefox, tem se observado que as engines javascript tem feito o IE 8 comer poeira.&lt;br /&gt;&lt;br /&gt;Esse aumento de velocidade tem uma razão bem simples: o javascript começa a ter características de um programa compilado em detrimento do modelo interpretado. Podemos dizer que será o novo paradigma para engines javascript dos browsers modernos.&lt;br /&gt;&lt;br /&gt;V8 e Minefield (engines javascript do Chrome e do FF respectivamente)  são engines que encabeçam esse novo paradigma, onde código javascript é compilado. Isso é uma evolução que não existe no IE 8 , pelo menos não nos testes (o que pode fazer parecer que o IE se isolou), &lt;a href="http://blogs.msdn.com/rssteam/archive/2005/12/14/503778.aspx"&gt;não concordo,&lt;/a&gt; e estou incrédulo se ninguem na MS não acompanha a algum tempo o Minefield, afinal, não é um projeto de 10 dias atrás, é um projeto que já tem bastante história inclusive.&lt;br /&gt;&lt;br /&gt;So que no caso da MS o que uns vêem como inconpetência ou falta de criatividade, eu vejo como estratégia. Afinal você tem que ser realmente ingênuo para acreditar que a MS não focaria numa engine que consiga atingir os mesmos &lt;a href="http://macmagazine.com.br/blog/2008/09/03/google-chrome-bate-firefox-safari-e-internet-explorer-em-testes-de-javascript/"&gt;resultados&lt;/a&gt; simplesmente por "falta de criatividade" em função do isolamento. É como achar que desenvolvedores MS nunca tiveram história dentro do Open Source: balela. Desenvolveram muito mais projetos Open Source do que muitos atuantes defensores do Software Livre (não quero levantar polêmica, mas é uma verdade).&lt;br /&gt;&lt;br /&gt;Mas então porquê não focar no javascript? Vamos investigar:&lt;br /&gt;&lt;br /&gt;Olhem esse comentário:&lt;br /&gt;&lt;a href="http://www.udm4.com/forum/showthread.php?t=696"&gt;http://www.udm4.com/forum/showthread.php?t=696&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Chris Wilson, arquiteto do IE, dizendo que o javascript tem que ficar como está??&lt;br /&gt;&lt;br /&gt;Isso quer dizer que a MS está procurando meios de embarcar no browser tecnologia necessária para rodar aplicações WEB. Bingo!&lt;br /&gt;&lt;br /&gt;Ela procurou focar num subset do .net framework que terá o mesmo princípio de compilação de código, mas não de javascript APENAS (Silverlight 1), mas de qualquer linguagem do .net framework. Então, é bem simples o ponto: enquanto o Google corre pro javascript, a MS vai correr por fora com o Silverlight 2.&lt;br /&gt;&lt;br /&gt;Eu não sei sobre você, leitor, mas frequentemente sou obrigado a trabalhar em códigos javascript é visível que a linguagem carece de uma estrutura sólida para ser uma linguagem de desenvolvimento de um framework (tanto é verdade que o próprio  Brendan Eich chefe da divisão de tecnologia da Mozilla quer remodelar completamente o javascript pra próxima versão).&lt;br /&gt;&lt;br /&gt;E sejamos racionais: se eu, desenvolvedor .net,  pudesse trabalhar em C# no cliente, assim como já trabalho no servidor, seria muito melhor, e isso será feito! Programar no cliente com C#, manipulando DOM, e fazendo tudo aquilo que você faria com javascript, e com o desempenho de uma tecnologia também compilada, com o mesmo ganho de performance das novas engines javascript. Aí se vai ver aplicações cada vez mais ricas na Web.&lt;br /&gt;&lt;br /&gt;Vamos ver se essas previsões se concretizam, os dados estão rolando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-7775219478283147397?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/7775219478283147397/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=7775219478283147397' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7775219478283147397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7775219478283147397'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/javascript-engines-vs-silverlight-2.html' title='Javascript Engines Vs. Silverlight 2'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-2909474452269194576</id><published>2008-09-04T06:38:00.000-07:00</published><updated>2008-09-04T10:31:18.898-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vulnerabilidades'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Vulnerabilidades no Chrome</title><content type='html'>&lt;a href="http://ultimas-noticias.org/tecnologia/vulnerabilidade-no-google-chrome-expoe-usuarios"&gt;http://ultimas-noticias.org/tecnologia/vulnerabilidade-no-google-chrome-expoe-usuarios&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Parece que um IE ganhou um forte concorrente... em todos os sentidos :-)&lt;br /&gt;&lt;br /&gt;Brincadeiras a parte, essa vai ser uma experiência muito interessante porque vai nos permitir&lt;br /&gt;observar como as duas empresas (Google e Microsoft) se comportam com relação a tratamento de vulnerabilidades em seus aplicativos. Varrer para debaixo do tapete pode não ser mais uma opção por questão de concorrência.&lt;br /&gt;&lt;br /&gt;Outro aspecto interessante que observo é que o Chrome será muito mais visado do que o Firefox e quase tão visado quanto o IE, então será um bom laboratório para validar toda a ideologia open source sobre qualidade, etc etc etc. (Eu disse open source! Não Software Livre!).&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Minha aposta é que esse jogo vai ficar empatado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Acredito que a credibilidade de uma empresa do mercado de software depende muito pouco dos bugs (a MS teve um tempo que abusou, mas está muito melhor). O que importa mesmo é como e quão rápido a empresa reage para corrigir as falhas. Isso gera a segurança necessária para o cliente aderir uma solução. A transparência também conta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-2909474452269194576?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/2909474452269194576/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=2909474452269194576' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2909474452269194576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2909474452269194576'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/vulnerabilidades-no-chrome.html' title='Vulnerabilidades no Chrome'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8323790210158992915</id><published>2008-09-03T08:13:00.000-07:00</published><updated>2008-09-04T14:13:06.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net Bugs connect DataBinding'/><title type='text'>Como (não) lidar com DataBinding Bugs</title><content type='html'>Estudando a fundo ADO.net para windows forms, percebo algumas coisas muito chatas dentro da Microsoft. Principalmente na forma como se encara pedidos para corrigir bugs incrivelmente simples de solucionar e que poderiam estar no .net 3.5 SP1.&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Aliás, falando de Bugs, Windows Forms DataBinding no .net está infestado deles, é como um campo minado: funciona aquilo que está nos exemplos do MSDN e um pouco mais, mas se você quiser entrar a fundo, vai ter que lidar com alguns workarounds. Funciona, mas existem tweeks delicados.&lt;/p&gt;  Toda vez que vejo um link para esse site do programa connect, nunca tenho sorte, todos os bugs realmente reconhecidos pela corp ficam marcados como fechados e nao solucionados.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=263812&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=263812&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;O desenvolvedor que postou esse bug ainda se deu ao trabalho de fornecer a  solução, mas vejam a resposta do funcionário da MS. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;“Para garantir nossos releases futuros na mais alta qualidade, estabilidade e facilidade de instalação, nós estamos evitando realizar mudanças arquiteturais significativas em algumas partes do produto. Baseada em nossa investigação, a correção mais indicada requereria tais mudanças” &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;“&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;To ensure our next release is of high quality, stable and easy to install we are refraining from making significant architectural changes in some parts of the product. Based on our investigation, the most reasonable fix for this bug would require such changes.”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Arquiteturais significativas??? É só trocar um método pelo outro, pois a implementação que foi realizada não contempla interfaces, e a proposta de solução contempla.&lt;br /&gt;&lt;/p&gt;Se essa seria uma mudança "arquitetural" prometida para o próximo release que seria o .net 3.5 SP1, porque então eles não incluíram isso? Vai entender...&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-8323790210158992915?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8323790210158992915/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8323790210158992915' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8323790210158992915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8323790210158992915'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/como-no-se-lidar-com-databinding-bugs.html' title='Como (não) lidar com DataBinding Bugs'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-5973194503361600413</id><published>2008-09-02T14:05:00.000-07:00</published><updated>2008-09-02T14:23:57.583-07:00</updated><title type='text'>Oops</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iMONJ3yZnE8/SL2tkEc67UI/AAAAAAAAAAg/tC2hx6b7ZbA/s1600-h/Ops.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 568px; height: 338px;" src="http://2.bp.blogspot.com/_iMONJ3yZnE8/SL2tkEc67UI/AAAAAAAAAAg/tC2hx6b7ZbA/s320/Ops.png" alt="" id="BLOGGER_PHOTO_ID_5241536376511065410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Alguém esqueceu de setar custom errors... :-) Prato cheio para hackers...&lt;br /&gt;Será que o trace tá ligado também?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-5973194503361600413?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/5973194503361600413/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=5973194503361600413' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5973194503361600413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5973194503361600413'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/oops.html' title='Oops'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iMONJ3yZnE8/SL2tkEc67UI/AAAAAAAAAAg/tC2hx6b7ZbA/s72-c/Ops.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-4572140144204299101</id><published>2008-09-02T07:20:00.000-07:00</published><updated>2008-09-02T07:46:52.488-07:00</updated><title type='text'>ASP.NET MVC Preview 5</title><content type='html'>Saindo do forno essa semana está o Preview 5 do ASP.NET MVC.&lt;br /&gt;&lt;br /&gt;O Projeto caminha com um numero de inovações cada vez maior, embora num nível de abstração superior a dos primeiros previews. Pouca coisa mudou na estrutura. O time começa a preparar agora as funcionalidades de alto nível. Ainda não chegamos no AJAX, mas funcionalidades como validação, formas melhores de escrever código e novos auxílios necessários para o controle de estado estão contemplados.&lt;br /&gt;&lt;br /&gt;Uma coisa muito interessante é a criação de  &lt;span style="font-weight: bold;"&gt;Model Binders, &lt;/span&gt;que tornam o processo de binding de dados vindos de um formulário web bastante extensíveis, com muito pouca linha de código escrita. Abaixo está um dos três  modos (esse é inline)  que  possibilitam o controler  validar dados de entrada.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.scottgu.com/blogposts/mvcpreview5/step16.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 599px; height: 163px;" src="http://www.scottgu.com/blogposts/mvcpreview5/step16.png" alt="" border="0" /&gt;&lt;/a&gt;Fonte: Blog do Scott'Gu.&lt;br /&gt;&lt;br /&gt;Vale a pena ler o &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx"&gt;blog do Scott'Gu&lt;/a&gt; (que voltou de férias)  e conferir as últimas novidades.&lt;br /&gt;&lt;br /&gt;Um grande abraço!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-4572140144204299101?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/4572140144204299101/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=4572140144204299101' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4572140144204299101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4572140144204299101'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/09/aspnet-mvc-preview-5.html' title='ASP.NET MVC Preview 5'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-1521200571148230771</id><published>2008-08-26T13:23:00.000-07:00</published><updated>2008-08-28T11:03:24.144-07:00</updated><title type='text'>Community Zone 2008</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_iMONJ3yZnE8/SLYi-3SecxI/AAAAAAAAAAY/6QT20E1y-h0/s1600-h/CommunityZone.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239413679880827666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_iMONJ3yZnE8/SLYi-3SecxI/AAAAAAAAAAY/6QT20E1y-h0/s320/CommunityZone.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_iMONJ3yZnE8/SLSBpyU4vJI/AAAAAAAAAAQ/dihscVq1Wh0/s1600-h/CommunityZone.jpg"&gt;&lt;/a&gt;&lt;br /&gt;Olá galera.&lt;br /&gt;&lt;br /&gt;Esse fim de semana a comunidade curtiu o Community Zone. O evento foi bacana pacas, deu pra ver, conversar e trocar idéias com o pessoal que faz e acontece nas comunidades. Este ano, a realizou paralelamente o encontro dos MSPs (não sei o nome do evento).&lt;br /&gt;&lt;br /&gt;Muitas idéias rolaram nas mesas redondas sobre como ajudar a Microsoft a atingir um grau de adesão maior as tecnologias. Achei extremamente produtiva a conversa com o Danilo Boldini e o Alexandre Prado na mesa de Open Source, procurando sempre buscar alternativas para expor da melhor forma as iniciativas de interoperabilidade da Microsoft. Se nossos posicionamentos forem realmente ouvidos, muita coisa começará a mudar pelo MSDN e no TechNet. Sugerimos a utilizarem como referência o modelo de sucesso do portal http://asp.net.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conheci muita gente legal das comunidades no evento e vou mandar um abraço especial pro pessoal que eu conheci, principalmente pra "equipe 5" :-), para o André Luis Cerosi, o Bruno Velaz, Rodrigo Kono, Marco Aurélio de BH , o Gustavo de Campo Grande, Felício de Recife e o meu grande conterrâneo Emílio Mansur. Abração pra vcs!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Agora, perceberam uma coisa na Foto? Quem e o cara que mais ocupou espaço nessa foto? Tinha que ser o Jenner mesmo né? :-))))&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-1521200571148230771?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/1521200571148230771/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=1521200571148230771' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1521200571148230771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/1521200571148230771'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/08/community-zone-2008.html' title='Community Zone 2008'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iMONJ3yZnE8/SLYi-3SecxI/AAAAAAAAAAY/6QT20E1y-h0/s72-c/CommunityZone.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-2478015641074690603</id><published>2008-07-31T14:03:00.000-07:00</published><updated>2008-07-31T14:14:03.948-07:00</updated><title type='text'>Dissecando Win Forms Binding e BindingSource</title><content type='html'>Navegando pela internet procurando informações sobre o funcionamento de binding em Windows Forms (que é um pouco diferente do ASP.net) encontrei uma joia rara no code project, com direito a comentários sobre o funcionamento interno dos recursos do binding source. Para quem quer se aprofundar no assunto, é imperdível.&lt;br /&gt;&lt;br /&gt;http://www.codeproject.com/KB/miscctrl/databinding_tutorial.aspx&lt;br /&gt;&lt;br /&gt;Realmente é uma obra de um doente, deus dos nerds, mas quem disse que ele não é? Afinal, quem começa a desenvolver aos 11 anos (ele diz isso no profile dele) não pode ser considerado um cara normal! &lt;br /&gt;Eu estava jogando bola e empinando papagaio quando eu tinha 11 anos. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-2478015641074690603?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/2478015641074690603/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=2478015641074690603' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2478015641074690603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/2478015641074690603'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/07/dissecando-win-forms-binding-e.html' title='Dissecando Win Forms Binding e BindingSource'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-4106640940094292057</id><published>2008-07-19T11:12:00.000-07:00</published><updated>2008-07-19T13:03:36.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>ASP.NET MVC (Melhores momentos)</title><content type='html'>Olá pessoal!&lt;br /&gt;&lt;br /&gt;Depois de um bom tempo sem blogar, agora, formado :-)&lt;br /&gt;surgiu mais tempo para retormar alguns projetos, e um deles é o blog.&lt;br /&gt;&lt;br /&gt;Nesse post, vou mudar um pouco o foco e falar sobre desenvolvimento MVC. Que é um modelo muito usado em projetos Open-Source:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;http://en.wikipedia.org/wiki/Model-view-controller&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vendo o crescimento de plataformas como o Rubi-on-Rails baseados nesse padrão arquitetural, a Microsoft se preparou logo para a criação de um padrão de desenvolvimento Web que atendesse a esse público e criou o ASP.NET MVC. Vale atentar para o fato de que já existe um padrão MVC para .NET: o MonoRail.&lt;br /&gt;&lt;br /&gt;Como nos últimos tempos muita gente tem falado sobre MVC, resolvi preparar um guia de links para intruduzir as pessoas nessa tecnologia e apresentar blogs que falam sobre o tema:&lt;br /&gt;&lt;br /&gt;Considerações iniciais sobre o ASP.NET MVC Framework (Ricardo Oneda): &lt;a href="http://www.linhadecodigo.com.br/Artigo.aspx?id=1602"&gt;http://www.linhadecodigo.com.br/Artigo.aspx?id=1602&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Desvendando o MVC (Ricardo Oneda): &lt;br /&gt;&lt;a href="http://www.linhadecodigo.com/Artigo.aspx?id=1634"&gt;http://www.linhadecodigo.com/Artigo.aspx?id=1634&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Criando Aplicativos Web Sem WebForms (Chris Tavares):&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/pt-br/magazine/cc337884.aspx"&gt;http://msdn.microsoft.com/pt-br/magazine/cc337884.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom, depois desses artigos, muita coisa rolou no desenvolvimento do projeto ASP.NET MVC.  Vieram os Previews 2 e 3, e nos últimos dias, liberaram o preview 4, e segundo os comentários do &lt;a href="http://weblogs.asp.net/scottgu/about.aspx"&gt;Scott Guthrie &lt;/a&gt;( o Beta 1 não deve demorar muito ).&lt;br /&gt;&lt;br /&gt;Para acompanhar o que há de mais quente nessa tecnologia, o blog dos Scotts (o Guthire e o Hansellman) são as melhores fontes de informações. Um com as novidades e alguns tutoriais, e o outro com vídeos e aplicações completas.&lt;br /&gt;Scott Gu&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/search.aspx?q=MVC&amp;amp;o=Relevance"&gt;http://weblogs.asp.net/scottgu/search.aspx?q=MVC&amp;amp;o=Relevance&lt;/a&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/default.aspx"&gt;&lt;/a&gt;&lt;br /&gt;Scott Hanselman&lt;br /&gt;&lt;a href="http://www.hanselman.com/blog/"&gt;http://www.hanselman.com/blog/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vale lembrar que se você gosta de WebForms e "não quer se separar dele", não se preocupe, os dois modelos coexistirão.&lt;br /&gt;&lt;br /&gt;O que ninguem ainda sabe é se o ASP.NET vai sustentar duas bibliotecas de controles diferentes ou se os projetos MVC e WebForms convergirão nesse ponto.&lt;br /&gt;Acho complicado unir as duas tecnologias, afinal, o comportamento de um System.Web.UI.Controls.TextBox (com viewstate e tudo mais) seria um pouco diferente no MVC, já que o viewstate não é suportado, e todo o ciclo de vida de um WebForm não é seguido dentro do padrão MVC. Talvez eles mantenham as tags "asp:" por questões de portabilidade de código, mas seu funcionamento interno será distindo. Em paralelo a isso, o MVC tem implementado uma coletânea de ExtensionMethods denominados HtmlHelper methods para renderizar controles. Nesse ponto, voltamos a era ASP.&lt;br /&gt;&lt;br /&gt;Outra coisa que intriga um pouco é a forma como o time do projeto ASP.NET MVC vai lidar com AJAX, que foi uma das grandes investidas do ASP.NET 3.5 e mantém uma comunidade atuante, mas não é compatível com MVC. Acredito que o MVC vai procurar ser "plugável" nesse ponto, mas que vai passar a bola para o ASP.NET AJAX através de alguns "açúcares sintáticos". Se eu pudesse apostar, diria que eles vão utilizar um novo recurso denominado &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx"&gt;Filters Interceptor&lt;/a&gt;s para implementar funcionalidade ajax nos Controllers, mas tenho grande curiosidade em ver como as views vão tratar isso.&lt;br /&gt;&lt;br /&gt;O grande problema que envolve o AJAX é que ele pode desvirtuar a filosofia MVC se ele aproximar demais a View dos Controlers. Afinal, Em teoria, um controller deve ser "agnóstico" quanto a views. E o ajax é uma tecnologia que funciona nas views e não deveria, em tese, ter qualquer relação com os controllers clientes, mas não acredito que tenha um meio de descascar esse abacaxi facilmente.&lt;br /&gt;&lt;br /&gt;Para não dizer que tudo são flores, indico também a leitura de um artigo do Dennes torres apresentando sua análise sobre o padrão:&lt;br /&gt;&lt;a href="http://www.devaspnet.com.br/colunas/coluna0136.aspx"&gt;http://www.devaspnet.com.br/colunas/coluna0136.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eu não concordo em tudo do que ele fala, principalmente na conclusão, acredito que grandes projetos tem um potencial de serem melhor escritos em MVC do que WebForms através de TDD, mas acho uma leitura importante para manter um olhar crítico sobre a tecnologia e não se encantar apenas por ser novidade, em outras palavras, manter seus pés no chão. :-)&lt;br /&gt;&lt;br /&gt;Até a Próxima!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-4106640940094292057?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/4106640940094292057/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=4106640940094292057' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4106640940094292057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/4106640940094292057'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2008/07/aspnet-mvc-melhores-momentos.html' title='ASP.NET MVC (Melhores momentos)'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-5698615305118138214</id><published>2007-09-03T07:14:00.000-07:00</published><updated>2007-09-03T09:05:18.834-07:00</updated><title type='text'>MS(R)... ok. Windows(R)... ok. E Linux?</title><content type='html'>Em discussões MS Windows Vs. Linux já percebi que existem pessoas que fazem questão de colocar um (R) depois em tom de menospreso. Engraçado é que para defensores do software livre isso soa como uma alfinetada. Eu não consegui entender até hoje o que isso quer dizer para eles, se alguem puder me explicar eu agradeço...&lt;br /&gt;&lt;br /&gt;Um exemplo do que eu estou falando:&lt;br /&gt;&lt;a href="http://nunojsilva.wordpress.com/2007/01/06/microsoftr-windowsr/"&gt;http://nunojsilva.wordpress.com/2007/01/06/microsoftr-windowsr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fui a wikipedia buscar informações sobre o "R" e acho que essa explicação em espanhol é satisfatória:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Marca_registrada"&gt;http://es.wikipedia.org/wiki/Marca_registrada&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois, fui ao INPI (&lt;a href="http://www.inpi.gov.br/"&gt;http://www.inpi.gov.br/&lt;/a&gt;) e pesquisei por "Linux". O imaginem o que eu vi?! Ops.&lt;br /&gt;Linux é marca registrada também! Nossa, que interessante né? :-) É marca registrada da Conectiva no Brasil.&lt;br /&gt;&lt;br /&gt;Então, Linux(R) está sob as mesmas condições que Windows(R) ou Microsoft(R) (óbvio), e isso não deveria caracterizar crítica para nenhum lado. Apenas para aquelas pessoas mestres em FUD que adoram espalhar a desinformação para a massa, que a segue obediente.&lt;br /&gt;E essa massa esquece que a grande luta ideológica da fsf nunca deliberou pelo fim da propriedade intelectual, as coisas estão chegando distorcidas para as pessoas.&lt;br /&gt;&lt;br /&gt;Agora os pingos estão em todos os "i"s :-) Windows(R), MS(R) e Linux(R)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-5698615305118138214?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/5698615305118138214/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=5698615305118138214' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5698615305118138214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/5698615305118138214'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2007/09/msr-ok-windowsr-ok-e-linux.html' title='MS(R)... ok. Windows(R)... ok. E Linux?'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-7515545797509786226</id><published>2007-08-28T20:13:00.000-07:00</published><updated>2007-08-28T20:22:35.303-07:00</updated><title type='text'>Open XML : Juntando um quebra-cabeças</title><content type='html'>Dêem uma olhada nesse artigo: &lt;a href="http://www.codeproject.com/useritems/ooxml_is_defective.asp"&gt;http://www.codeproject.com/useritems/ooxml_is_defective.asp&lt;/a&gt;do senhor Stephane Rodriguez.&lt;br /&gt;Era aquilo que faltava para juntar algumas peças do quebra-cabeça sobre algumas idéias que tinha sobre Open XML.&lt;br /&gt;&lt;br /&gt;Sempre procurei agir com neutralidade quanto a essa questão delicada. Nunca achei correto a estratégia de rolo compressor para tornar Open XML um padrão de formato de documentos na ISO (mas acho válida do ponto de vista de mercado). Julgava que havia alguma coisa por traz disso na estratégia da MS, mas era necessário garimpar em uma montanha de argumentos fracos e "desculpas para não usar OXML" sem nem um senso crítico vindas do movimento anti-microsoft. Que Open XML é um padrão, isso eu não tenho dúvida.&lt;br /&gt;&lt;br /&gt;A minha dúvida é: ele deve ser um padrão ISO porque?  Qual a solidez técnica que esse padrão possui para se tornar uma norma ISO e permitir REALMENTE que se crie um acossistema sadio entre documentos escritos em OXML no mundo inteiro por diversos fornecedores? Eu acredito que o padrão até tem solidez sim para permitir interoperabilidade, mas isso não tudo, e não é motivo forte o  suficiente para ser ISO.&lt;br /&gt;&lt;br /&gt;Acho que o artigo mostra falhas estruturais sem sombra de dúvida entre onde começa o OXML e onde termina o Excel. Acho grave o fato do MS Excel exibir um número e guardar outro no arquivo (muito mais grave do que calendário de 1900 ou coisa do tipo). Provavelmente existe uma razão de projeto para isso (ou não), mas isso não pode ser posto como ISO do jeito que se encontra.&lt;br /&gt;&lt;br /&gt;Além disso, reinventar diversos padrões já existentes na ISO e tentar aprová-los na própria ISO me parece desrespeito com padrões internacionais consolidados.&lt;br /&gt;&lt;br /&gt;Ainda não dá pra chegar a essa conclusão, mas com base no artigo do Stephane Rodriguez, percebe-se ainda que a Microsoft está procurando seguir 99% o seu padrão OXML e deixar o 1% em aberto na base do "se colar colou". O que seria insuficiente para inviabilizar uma implementação de terceiros, mas suficiente para por qualquer outra implementação concorrente em desvantagem. Seria mais ou menos a repetição do jogo que o Internet Explorer jogou durante anos, driblando alguns padrões e tornando o não padrão padrão por força bruta de mercado de desenvolvimento web, fazendo com que os concorrentes demorassem para se adaptar . :-)&lt;br /&gt;&lt;br /&gt;Fico pensando às vezes..., seria tão desfavorável assim para a Microsoft fazer o OXML topo do ODF com justificativa apenas no legado? Nunca pensei que o formato do arquivo fosse a razão para que pessoas migrassem para outras ferramentas dada a ausência de competidores a altura no mercado para fazer o que essa suíte faz. Minha posição pessoal sobre isso é que se Excel tivesse implementação ODF muito pouco mudaria no market share do MS Office.&lt;br /&gt;&lt;br /&gt;E quanto ao legado? Simples! Embarcam-se as engines do legado. Hoje a virtualização está avançada o suficiente para emular um windows 3.11 no Windows Vista, porque o word 2007 não emularia um .doc (como realmente o faz)? Acho que a MS economizaria alguns milhões tentando adaptar um formato XML a imagem e semelhança de um formato legado desnecessariamente e arranharia menos sua imagem assim.&lt;br /&gt;&lt;br /&gt;É no ponto da abertura dos padrões que Open XML e CLI .net se diferem, enquanto um é isso que acabamos de ver, o outro esbanja robustez e transparência. Eis os contrastes dessa grande e confusa empresa que é a Microsoft :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-7515545797509786226?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/7515545797509786226/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=7515545797509786226' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7515545797509786226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/7515545797509786226'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2007/08/open-xml-juntando-um-quebra-cabeas.html' title='Open XML : Juntando um quebra-cabeças'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-8017549610241342585</id><published>2007-08-27T14:27:00.000-07:00</published><updated>2007-08-27T14:39:03.389-07:00</updated><title type='text'>Fear, uncertainty and doubt</title><content type='html'>Acho engraçado que falar FUD da microsoft é mel na boca dos linuxers não é mesmo?&lt;br /&gt;&lt;br /&gt;Quer saber? acho que eles estão é certos. Pois é necessário se saber a definição de FUD.&lt;br /&gt;Dê um pulo na Wikipédia agora depois volte para ler o resto.&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt"&gt;http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora, pode-se perceber que o que o Movimento SL vem definindo como FUD aquilo que a MS faz contra o Linux e pronto.&lt;br /&gt;&lt;br /&gt;Mas vamos trazer FUD de volta ao seu significado puro, olha o que podemos encontrar no mercado:&lt;br /&gt;&lt;br /&gt;Tubos Tigre ("Não troque o certo pelo duvidoso. Fuja do Mico") FUD!!&lt;br /&gt;Vivo ("Sinal de qualidade") FUD!! (Se sabe que CDMA tem um sinal com qualidade melhor que a TIM GSM apesar de diversas outras desvantagens)&lt;br /&gt;Guaraná Antártica Vs. Coca-Cola (Lembra do comercial da fruta do guaraná na fazenda?)&lt;br /&gt;Campanha presidencial do José Serra em 2002&lt;br /&gt;...&lt;br /&gt;putz, vários casos. Tudo competição, tudo mercado. (tirando o caso do JS, mas também é uma linha de FUD)&lt;br /&gt;&lt;br /&gt;Minha opnião pessoal é que isso as vezes chega a ser tão irrelevante que não passa de uma simples propaganda de produto. Procura vender um conceito. Não faria sentido cotar o valor da marca se "FUD" não existisse.&lt;br /&gt;&lt;br /&gt;Deve-se observar que isso faz parte do mercado, sempre funcionou assim, e isso não vai mudar tão cedo (ou talvez nunca mude ) :)&lt;br /&gt;&lt;br /&gt;O que me deixa realmente intrigado é porque, no caso do Software Livre não eles não conseguem se ver fazendo FUD.&lt;br /&gt;Será que é o mesmo sentimento daquela frase "o amor é cego"?&lt;br /&gt;&lt;br /&gt;Chegaram a me dizer que soava ridículo dizer que a MS é vítima de FUD, que FUD era invenção da Microsoft.&lt;br /&gt;Bom, aí está o ridículo: &lt;a href="http://www.badvista.org/"&gt;badvista.org&lt;/a&gt;&lt;br /&gt;Nunca abri o "Get the Facts", mas acho que esse site deve dar de goleada :)&lt;br /&gt;&lt;br /&gt;Para mim o movimento SL está no direito deles também, estão certos. Mas acho que um pouco menos de hipocrisia cairia bem, cairia&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-8017549610241342585?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/8017549610241342585/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=8017549610241342585' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8017549610241342585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/8017549610241342585'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2007/08/fud-fear-of-doubt.html' title='Fear, uncertainty and doubt'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-6269761276287126512</id><published>2007-08-26T13:35:00.000-07:00</published><updated>2007-08-26T21:59:34.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><title type='text'>Open XML: para pensar</title><content type='html'>Assisto a discussão acalorada sobre OpenXML se tornar um padrão ISO com muita curiosidade. Parece claro que, apesar de a Microsoft possuir a hegemonia das ferramentas de escritório, dificilmente vai reunir forças para sozinha fazer a ECMA 376 (OpenXML) se tornar ISO do jeito que está. Vejo que seria interessante para ela isso por razões simples como: facilita vender MS Office para governos e, ao mesmo tempo, polarizar o controle do padrão.&lt;br /&gt;A discussão técnica sobre o tema na sessão aberta da ABNT foi muito pobre tecnicamente falando. Mas no fim me parece que o "Não com comentários" foi inevitavelmente justo. Uma derrota plantada há muito tempo de uma estratégia errada da MS na minha opnião, um passo além das pernas. Seria muito mais fácil produzir alguma coisa em cima de uma norma ISO já consolidada do que entrar em conflito com uma norma totalmente nova.&lt;br /&gt;&lt;br /&gt;Mas acho interessante que apesar de eu concordar que uma "abstenção" ou um "não com comentários" seria benéfico para a evolução do padrão (que não deveria nunca ser posto em fast-track na ISO), vejo que algumas pessoas baseiam essa mesma opnião em argumentos muito fracos. O que resultou em uma chuva de comentários na norma aqui no Brasil.&lt;br /&gt;&lt;br /&gt;O mais fraco que eu já vi foi porque o padrão não suporta senhas em documentos protegidos utilizando caracteres em chinês. (Nossa, quanta solidariedade do Brasil) Queria saber o impacto que isso vai ter nos documentos que circulam no ocidente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Outro argumento bastante usado diz respeito ao tamanho da norma, vou me ater a este:&lt;br /&gt;&lt;br /&gt;Recentemente tive acesso a um documento informativo sobre OXML da ECMA e percebi que certas características sobre a estrutura do padrão descaracterizam esse argumento muito usado sobre a implementação do OXML. Vamos a alguns fatos:&lt;br /&gt;&lt;br /&gt;Material Normativo:&lt;br /&gt;Parte 1 - Noções Básicas: 165 páginas&lt;br /&gt;Parte 2 - Convenções para Pacotes Abertos: 125 páginas&lt;br /&gt;Parte 3 - Informações preliminares : 466 páginas&lt;br /&gt;Parte 4 - Referência da linguagem de marcação: 5.756 páginas&lt;br /&gt;Parte 5 - Compactibilidade e extensibilidade de marcação: 34 páginas&lt;br /&gt;&lt;br /&gt;Fazendo uma abordagem bem crítica e imparcial sobre o material, dá pra perceber que tirando a vastidão que é a referência (em alguns pontos até mesmo desnecessária, devo afirmar, pois a própria ISO possui definições de esquemas de representação de dados XML), a norma não chega a representar inviabilidade de implementação para nenhuma empresa. Porque? simples. Se você quiser produzir um software de processamento de planilhas, você nunca vai necessitar usar as 5756 páginas de referência, apenas um subconjunto delas, mais o conhecimento outras partes (Parte 1, 2, 3 e 5 ). Afinal, referência é referência. Não é documento para leitura linear, e sim para consulta.&lt;br /&gt;Quem leu todo o JDK antes de escrever o "Hello World" em java que atire a primeira pedra :-)&lt;br /&gt;Não que seja uma vantagem do OXML, mas acredito que não deveria ser visto como desvantagem.&lt;br /&gt;&lt;br /&gt;Então, para quem diz que nunca se vai conseguir implementar completamente toda a norma OXML, esse alguem está absolutamente correto. Mas esta mesma pessoa está esquecendo que a norma não foi feita para ser completamente implementada. Ela foi feita para ser referência com o propósito de promover interoperabilidade entre sistemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-6269761276287126512?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/6269761276287126512/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=6269761276287126512' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6269761276287126512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6269761276287126512'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2007/08/open-xml-um-fato-para-pensar.html' title='Open XML: para pensar'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7008387364889513525.post-6250063011384539067</id><published>2007-08-26T12:24:00.000-07:00</published><updated>2007-08-26T12:44:42.966-07:00</updated><title type='text'>Demorou, mas foi :-)</title><content type='html'>Olá pessoal,&lt;br /&gt;&lt;br /&gt;Finalmente hoje resolvi arranjar um tempo para preparar este blog. Aqui vou comentar as principais idéias e notícias que contróem minhas visões sobre política, sobre tecnologia e minhas paixões e hobbies, espero contribuir com boas discussões na comunidade de tecnologia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7008387364889513525-6250063011384539067?l=olavorneto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://olavorneto.blogspot.com/feeds/6250063011384539067/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7008387364889513525&amp;postID=6250063011384539067' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6250063011384539067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7008387364889513525/posts/default/6250063011384539067'/><link rel='alternate' type='text/html' href='http://olavorneto.blogspot.com/2007/08/demorou-mas-foi.html' title='Demorou, mas foi :-)'/><author><name>Olavo Rocha Neto</name><uri>http://www.blogger.com/profile/10273212595198789341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_iMONJ3yZnE8/SeNignx7-aI/AAAAAAAAAFc/De92Es0da48/S220/DSC00757.JPG'/></author><thr:total>0</thr:total></entry></feed>
