<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEEHQXs5eip7ImA9WhRbF0w.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876</id><updated>2012-02-08T13:57:10.522-02:00</updated><category term="C#" /><category term="jQuery" /><category term="MVC" /><category term="WIF" /><category term="CSS" /><category term="WCF" /><category term="HTML" /><category term="Teste Unitário" /><category term="Mock" /><category term="JavaScript" /><category term="Injeção de Dependência" /><category term="Moles" /><category term=".NET" /><category term="ASP.NET" /><title>José Otávio Quaglio</title><subtitle type="html">desenvolvimento na prática</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jquaglio.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jquaglio" /><feedburner:info uri="jquaglio" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/jquaglio" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fjquaglio" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry gd:etag="W/&quot;DkIASXk-eip7ImA9WhRbFUk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-734710299704734297</id><published>2012-02-06T14:04:00.000-02:00</published><updated>2012-02-06T14:09:08.752-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T14:09:08.752-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WIF" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>WIF - Windows Identity Foundation (Configuração do Client)</title><content type="html">&lt;b&gt;O que é?&lt;/b&gt;&lt;br&gt;
De acordo com o &lt;a href="http://msdn.microsoft.com/en-us/security/aa570351"&gt;site da Microsoft&lt;/a&gt;, o WIF permite que desenvolvedores .NET terceirizem a lógica de acesso (login) em suas aplicações.&lt;br&gt;
&lt;br&gt;
Imagine que você trabalha em uma empresa que contêm milhares de sistemas .NET e que cada um tenha o seu própio controle de acesso e que todos trabalhem com o mesmo esquema de usuários atribuidos à perfis (roles).&lt;br&gt;
Nesta situação, seria um trabalho árduo realizar uma manutenção nestes sistemas caso ocorra alguma alteração na lógica do controle de acesso da empresa.&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;Porque não centralizar em um único local (&lt;i&gt;STS&lt;/i&gt;) a parte do controle de acesso e focar mais no negócio de sua aplicação?&lt;/blockquote&gt;&lt;br&gt;
Neste post, explicarei um passo a passo de como configurar o WIF em uma aplicação &lt;i&gt;ASP.NET WebForms&lt;/i&gt; (com HTTPS) e como apontá-lo para um STS (&lt;i&gt;Security Token Service&lt;/i&gt;: Serviço responsável por autenticar o usuário).&lt;a href="http://jquaglio.blogspot.com/2012/02/wif-windows-identity-foundation.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-734710299704734297?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E5e75racU3c1nSqIhmfV5t5-CTM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5e75racU3c1nSqIhmfV5t5-CTM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E5e75racU3c1nSqIhmfV5t5-CTM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5e75racU3c1nSqIhmfV5t5-CTM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/frFtJTuHozE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/734710299704734297/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2012/02/wif-windows-identity-foundation.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/734710299704734297?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/734710299704734297?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/frFtJTuHozE/wif-windows-identity-foundation.html" title="WIF - Windows Identity Foundation (Configuração do Client)" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-6ma4ZEiQenQ/TyrBJcEa7DI/AAAAAAAAAHc/fTNUKBZZAB8/s72-c/wif_referencia.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2012/02/wif-windows-identity-foundation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HRXcyfSp7ImA9WhRbEUQ.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-2103823982926631303</id><published>2012-01-05T10:56:00.002-02:00</published><updated>2012-02-02T14:23:54.995-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T14:23:54.995-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><title>Compactando Arquivos Estáticos no ASP.NET</title><content type="html">Você já se deparou com um cenário no qual utilize vários arquivos CSS e JS e eles possuem tamanhos grandes e que na sua visão possa causar uma lentidão no carregamento das páginas no cliente?
&lt;br&gt;&lt;br&gt;
Eu tive este &amp;quot;problema&amp;quot; alguns dias atrás e necessitava urgentemente compactar os arquivos estáticos do &lt;i&gt;jQuery UI&lt;/i&gt; para garantir performance no carregamento das páginas.
&lt;br&gt;&lt;br&gt;
A minha solução foi bastante simples.
Pensei em obter os arquivos estáticos e compactá-los em runtime utilizando o algoritmo do GZip (&lt;i&gt;classe GZipStream&lt;/i&gt;) e passar para o browser este conteúdo compactado identificando que este era um conteúdo com o &lt;i&gt;encoding&lt;/i&gt; do tipo GZip.
&lt;br&gt;&lt;br&gt;
Para implementar esta solução, primeiro criei um arquivo do tipo &lt;i&gt;Generic Handler&lt;/i&gt; (ziparArquivo.ashx), e em seguida alterei o método &lt;i&gt;ProcessRequest&lt;/i&gt; para que realizasse o que eu estava imaginando, conforme código comentado:
&lt;a href="http://jquaglio.blogspot.com/2012/01/compactando-arquivos-estaticos-no.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-2103823982926631303?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gpn0eqrkZA0T5XKoxlGd5npLR30/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gpn0eqrkZA0T5XKoxlGd5npLR30/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gpn0eqrkZA0T5XKoxlGd5npLR30/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gpn0eqrkZA0T5XKoxlGd5npLR30/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/Xo2VC44gk9E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/2103823982926631303/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2012/01/compactando-arquivos-estaticos-no.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2103823982926631303?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2103823982926631303?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/Xo2VC44gk9E/compactando-arquivos-estaticos-no.html" title="Compactando Arquivos Estáticos no ASP.NET" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2012/01/compactando-arquivos-estaticos-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MQH4zeip7ImA9WhRQGEo.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-513275834931133405</id><published>2011-12-14T09:32:00.001-02:00</published><updated>2011-12-14T13:34:41.082-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-14T13:34:41.082-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Retirar "X" do jQuery Dialog</title><content type="html">Em um projeto que trabalhávamos, nos foi solicitado pelo usuário que o &amp;quot;X&amp;quot; do Dialog do jQuery fosse retirado.&lt;br&gt;
Não havia um porque da retirada do &amp;quot;X&amp;quot;, dado que neste dialog só continha apenas um botão (ok), mas, para evitar conflitos junto ao usuário, resolvemos pesquisar sobre.&lt;br&gt;
&lt;br&gt;
Ao verificar a documentação do &lt;a href="http://jqueryui.com/demos/dialog/"&gt;jQuery UI Dialog&lt;/a&gt; não encontramos nenhuma informação sobre como ocultar o &amp;quot;X&amp;quot;. Refletindo um pouco mais, chegamos a conclusão de que quando invocamos o método &amp;quot;alert&amp;quot; no JavaScript, a janela exibida também contêm o &amp;quot;X&amp;quot;, conforme imagem abaixo, e não há como retirar, ou seja, o dialog tem o mesmo comportamento.&lt;br&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Rk0ktjBj6FM/TuifH8760EI/AAAAAAAAAGE/kgNwSlial4w/s1600/alert_javascript.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" src="http://4.bp.blogspot.com/-Rk0ktjBj6FM/TuifH8760EI/AAAAAAAAAGE/kgNwSlial4w/s400/alert_javascript.png" width="254"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
Diante desta análise identificamos dois modos de retirar este item.&lt;br&gt;
&lt;a href="http://jquaglio.blogspot.com/2011/12/retirar-x-do-jquery-dialog.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-513275834931133405?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hHDJd8K-AQJVQl5nJOvyXUtSMBk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hHDJd8K-AQJVQl5nJOvyXUtSMBk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hHDJd8K-AQJVQl5nJOvyXUtSMBk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hHDJd8K-AQJVQl5nJOvyXUtSMBk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/87rDI6AqUOk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/513275834931133405/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/12/retirar-x-do-jquery-dialog.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/513275834931133405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/513275834931133405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/87rDI6AqUOk/retirar-x-do-jquery-dialog.html" title="Retirar &quot;X&quot; do jQuery Dialog" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Rk0ktjBj6FM/TuifH8760EI/AAAAAAAAAGE/kgNwSlial4w/s72-c/alert_javascript.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/12/retirar-x-do-jquery-dialog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8NRHg4eyp7ImA9WhdVFk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-7241694625805930624</id><published>2011-09-20T14:28:00.003-03:00</published><updated>2011-09-21T13:51:35.633-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-21T13:51:35.633-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Utilizando corretamente o atributo MODAL do Dialog no jQuery UI</title><content type="html">Você sabia que o atributo &lt;i&gt;modal&lt;/i&gt; do &lt;i&gt;widget&lt;/i&gt; &amp;quot;&lt;a href="http://jqueryui.com/demos/dialog/"&gt;Dialog&lt;/a&gt;&amp;quot; do &lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt; ao ser habilitado, altera não só as características de visualização da tela travando o background mas também desabilita alguns elementos na página, evitando que suas ações sejam realizadas?
&lt;br&gt;&lt;br&gt;
&lt;a href="http://jquaglio.blogspot.com/2011/09/utilizando-corretamente-o-atributo.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-7241694625805930624?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4pcLAV10AQg-9SkicHMI1-aqkVo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4pcLAV10AQg-9SkicHMI1-aqkVo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4pcLAV10AQg-9SkicHMI1-aqkVo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4pcLAV10AQg-9SkicHMI1-aqkVo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/DUw9WaUcT0I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/7241694625805930624/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/09/utilizando-corretamente-o-atributo.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/7241694625805930624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/7241694625805930624?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/DUw9WaUcT0I/utilizando-corretamente-o-atributo.html" title="Utilizando corretamente o atributo MODAL do Dialog no jQuery UI" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-x_bEUxc0HY8/TnjBUBdtkoI/AAAAAAAAAFc/Hjkjlay8Ek8/s72-c/dialog1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/09/utilizando-corretamente-o-atributo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NQ30zcSp7ImA9WhdVEEQ.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-800387014950572496</id><published>2011-09-15T10:54:00.000-03:00</published><updated>2011-09-15T10:54:52.389-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T10:54:52.389-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Moles" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Teste Unitário" /><title>Testando métodos privados e estáticos (static)</title><content type="html">Vamos aproveitar o código do &lt;a href="http://jquaglio.blogspot.com/2011/01/microsoft-moles.html"&gt;post&lt;/a&gt; que explica como funciona o Microsoft Moles e incluir um método privado e um estático nele para que possamos criar os testes unitários.
&lt;br&gt;&lt;br&gt;

Aqui temos a classe &lt;i&gt;Business&lt;/i&gt; com o método &amp;quot;&lt;i&gt;ValidarNome&lt;/i&gt;&amp;quot; que é privado e o método &amp;quot;Consultar&amp;quot; que é estático.

&lt;pre name="code" class="csharp"&gt;//Classe de Negôcio
public class PessoaBusiness
{
    public bool Incluir(PessoaEntity pessoa)
    {
        ValidarNome(pessoa);

        ValidarIdade(pessoa);

        PessoaDAL pessoaDAL = new PessoaDAL();
        return pessoaDAL.Incluir(pessoa);
    }

    private void ValidarNome(PessoaEntity pessoa)
    {
        if (pessoa.Nome.Trim().Length == 0)
        {
            throw (new ArgumentException(&amp;quot;O nome deve ser preenchido!&amp;quot;));
        }
    }

    private void ValidarIdade(PessoaEntity pessoa)
    {
        if (pessoa.Idade &amp;lt;= 0)
        {
            throw (new Exception(&amp;quot;A idade deve ser maior que zero!&amp;quot;));
        }
    }

    public static bool Existe(PessoaEntity pessoa)
    {
        if (pessoa != null)
        {
            PessoaDAL pessoaDAL = new PessoaDAL();
            return pessoaDAL.Existe(pessoa);
        }
        return false;
    }
}&lt;/pre&gt;
&lt;a href="http://jquaglio.blogspot.com/2011/09/testando-metodos-privados-e-estaticos.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-800387014950572496?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S-dAGiZ33QzgTvJA5vMQ5tNdqOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-dAGiZ33QzgTvJA5vMQ5tNdqOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S-dAGiZ33QzgTvJA5vMQ5tNdqOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-dAGiZ33QzgTvJA5vMQ5tNdqOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/ORd9sEcMywA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/800387014950572496/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/09/testando-metodos-privados-e-estaticos.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/800387014950572496?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/800387014950572496?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/ORd9sEcMywA/testando-metodos-privados-e-estaticos.html" title="Testando métodos privados e estáticos (static)" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/09/testando-metodos-privados-e-estaticos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4ERX84fCp7ImA9WhdVEEQ.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-5340772888552031314</id><published>2011-09-15T10:37:00.002-03:00</published><updated>2011-09-15T10:55:04.134-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T10:55:04.134-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Teste Unitário" /><title>Testando um método que retorna uma Exception</title><content type="html">Muitas pessoas utilizam do &lt;i&gt;try catch&lt;/i&gt; para poder testar um método que em algum determinado caso retorna uma &lt;i&gt;exception&lt;/i&gt;. Eu já fiz isso (quem não fez não é?), mas depois me corrigiram dizendo que existia um atributo para a &lt;i&gt;exception&lt;/i&gt; esperada.
&lt;br&gt;&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/09/testando-um-metodo-que-retorna-uma.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-5340772888552031314?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FtejWNgTlYwI4HxzvE7NPKmkhKw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtejWNgTlYwI4HxzvE7NPKmkhKw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FtejWNgTlYwI4HxzvE7NPKmkhKw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtejWNgTlYwI4HxzvE7NPKmkhKw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/oQ21sOywL8Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/5340772888552031314/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/09/testando-um-metodo-que-retorna-uma.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5340772888552031314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5340772888552031314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/oQ21sOywL8Y/testando-um-metodo-que-retorna-uma.html" title="Testando um método que retorna uma Exception" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/09/testando-um-metodo-que-retorna-uma.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4NSHYzcCp7ImA9WhdWE0w.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-3538209930824496820</id><published>2011-09-06T07:30:00.000-03:00</published><updated>2011-09-06T09:09:59.888-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T09:09:59.888-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Mito sobre declaração de variável com VAR</title><content type="html">Já ouvi de muitas pessoas que ao utilizar a declaração de variável &amp;quot;&lt;b&gt;var&lt;/b&gt;&amp;quot; o código fica mais lento pois o CLR fica com a responsabilidade de identificar qual é o tipo definido na instrução.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;&lt;i&gt;Isto é mentira!&lt;/i&gt;&lt;/b&gt; Vamos ao código abaixo que demonstra que isto não ocorre.&lt;br&gt;
Ao compilar a aplicação &lt;i&gt;o compilador é responsável por transformar&lt;/i&gt; a declaração &amp;quot;var&amp;quot; em uma variável conhecida.
&lt;br&gt;&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/09/mito-sobre-declaracao-de-variavel-com.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-3538209930824496820?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fx3vZCfwRphzMxAFOITvoJmRK0g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fx3vZCfwRphzMxAFOITvoJmRK0g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fx3vZCfwRphzMxAFOITvoJmRK0g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fx3vZCfwRphzMxAFOITvoJmRK0g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/walMLCjlRXE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/3538209930824496820/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/09/mito-sobre-declaracao-de-variavel-com.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3538209930824496820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3538209930824496820?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/walMLCjlRXE/mito-sobre-declaracao-de-variavel-com.html" title="Mito sobre declaração de variável com VAR" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-3BICrXGcLGo/TmUDdnb8D2I/AAAAAAAAAFQ/PrbT-SETeEc/s72-c/reflector.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/09/mito-sobre-declaracao-de-variavel-com.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAMRnw6eCp7ImA9WhdWEkk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-8109724236600215083</id><published>2011-09-05T11:39:00.001-03:00</published><updated>2011-09-05T14:13:07.210-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-05T14:13:07.210-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Distribuindo Transação no WCF</title><content type="html">Existem cenários em que é necessário realizar transações distribuídas e, ainda mais onde a arquitetura da solução foi desenvolvida utilizando o conceito de serviços. Para isto o WCF (Windows Communication Foundation) permite que você controle a transação contida no método através da chamada no &lt;i&gt;client&lt;/i&gt; (isto, somente se no server estiver habilitado).
&lt;br&gt;&lt;br&gt;
A implementação é bem simples e requer que o MSDTC das máquinas estejam habilitados e configurados corretamente, isto garantirá que as máquinas tenham uma comunicação eficaz e garanta o conceito &lt;a href="http://pt.wikipedia.org/wiki/ACID"&gt;ACID&lt;/a&gt; na ação.
&lt;br&gt;&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/09/distribuindo-transacao-no-wcf.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-8109724236600215083?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vIlS63qLzlH3LbbVzv34MhePWlQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vIlS63qLzlH3LbbVzv34MhePWlQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vIlS63qLzlH3LbbVzv34MhePWlQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vIlS63qLzlH3LbbVzv34MhePWlQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/1JcAugTULAw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/8109724236600215083/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/09/distribuindo-transacao-no-wcf.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/8109724236600215083?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/8109724236600215083?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/1JcAugTULAw/distribuindo-transacao-no-wcf.html" title="Distribuindo Transação no WCF" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-BPMDzvH6Bfk/TmE-umspx0I/AAAAAAAAAE4/QR0kZ4vpjeU/s72-c/msdtc_tela.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/09/distribuindo-transacao-no-wcf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcGQHY4eCp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-5775226363314310058</id><published>2011-08-25T11:26:00.001-03:00</published><updated>2011-08-31T23:27:01.830-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:27:01.830-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Interceptando Chamadas no WCF</title><content type="html">Em um projeto que estava atuando existia um cenário no qual haviam vários endpoints e necessitávamos efetuar o log das chamadas realizadas à todos eles.&lt;br&gt;
&lt;br&gt;
Para isto, utilizei uma solução que está disponível no framework 4.0 do .NET que tem o nome de &lt;i&gt;Message Inspector&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Esta solução, permite interceptar chamadas ao WCF da aplicação resgatando a chamada depois do recebimento da requisição e antes de enviar o retorno.&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/08/interceptando-chamadas-no-wcf.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-5775226363314310058?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/THc8qgIH8yPvj603jcJ3d8WNb0I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/THc8qgIH8yPvj603jcJ3d8WNb0I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/THc8qgIH8yPvj603jcJ3d8WNb0I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/THc8qgIH8yPvj603jcJ3d8WNb0I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/spzLB3NYG40" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/5775226363314310058/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/08/interceptando-chamadas-no-wcf.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5775226363314310058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5775226363314310058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/spzLB3NYG40/interceptando-chamadas-no-wcf.html" title="Interceptando Chamadas no WCF" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/08/interceptando-chamadas-no-wcf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcNQHg7eip7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-7350852469600913134</id><published>2011-05-17T10:42:00.000-03:00</published><updated>2011-08-31T23:28:11.602-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:28:11.602-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Habilitar Trace no WCF (System.Diagnostics)</title><content type="html">Muitas vezes nos deparamos com alguns problemas no WCF que de primeira não conseguimos entender ou diagnosticar e acabamos demorando horas e horas pesquisando por um erro que na verdade não é o REAL erro.&lt;br&gt;
&lt;br&gt;
Diante de minha experiência, percebi que O WCF tem o comportamento de encapsular (se é assim que posso dizer) o erro original e nos enviar um erro genérico.&lt;br&gt;
&lt;br&gt;
Mas com a ajuda do &lt;i&gt;System.Diagnostics&lt;/i&gt;, podemos realizar o &lt;i&gt;trace&lt;/i&gt; das chamadas do serviço e identificar o real problema. (Esta configuração pode ser adicionada tanto no client como no host do WCF.)&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/05/habilitar-trace-no-wcf.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-7350852469600913134?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sXa4V_LFLbrVIg9duCAVxg-kMlo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sXa4V_LFLbrVIg9duCAVxg-kMlo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sXa4V_LFLbrVIg9duCAVxg-kMlo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sXa4V_LFLbrVIg9duCAVxg-kMlo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/IpizQ99Ihig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/7350852469600913134/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/05/habilitar-trace-no-wcf.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/7350852469600913134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/7350852469600913134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/IpizQ99Ihig/habilitar-trace-no-wcf.html" title="Habilitar Trace no WCF (System.Diagnostics)" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-CTqTbFEC6yk/TdJ5Lz7h-cI/AAAAAAAAADU/tA0z8ZpcMfo/s72-c/trace_viewer1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/05/habilitar-trace-no-wcf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYHQH4yfSp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-6406907789710278715</id><published>2011-04-01T09:06:00.002-03:00</published><updated>2011-08-31T23:28:51.095-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:28:51.095-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Interface ICloneable</title><content type="html">&lt;b&gt;O que é?&lt;/b&gt;&lt;br&gt;
A interface &lt;i&gt;ICloneable&lt;/i&gt; contém o método &lt;i&gt;Clone&lt;/i&gt;, responsável por clonar (criar uma cópia) de uma classe.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Porque utilizar&lt;/b&gt;&lt;br&gt;
Se ao desenvolver você se depara com um cenário que necessita criar um objeto a partir de outro, mas não quer que ele aponte para o mesmo endereço de memôria do original, você precisará clonar este objeto.&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/04/interface-icloneable.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-6406907789710278715?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WxikHIpYXiiZFHChpBOjpp6eFEo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxikHIpYXiiZFHChpBOjpp6eFEo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WxikHIpYXiiZFHChpBOjpp6eFEo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxikHIpYXiiZFHChpBOjpp6eFEo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/4TDz-X_0-Ts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/6406907789710278715/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/04/interface-icloneable.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6406907789710278715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6406907789710278715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/4TDz-X_0-Ts/interface-icloneable.html" title="Interface ICloneable" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-gRybwiRGgw0/TZUqiSPzi7I/AAAAAAAAACU/_8KJeu04lNc/s72-c/saida_clone.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/04/interface-icloneable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08MRXczfSp7ImA9WhRbEUQ.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-5640063291598901952</id><published>2011-03-23T16:48:00.000-03:00</published><updated>2012-02-02T14:24:44.985-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T14:24:44.985-02:00</app:edited><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="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Session.SessionID é alterado a cada request</title><content type="html">Em meu estudos com o ASP.NET MVC 3 me deparei com um problema relacionado ao objeto &lt;i&gt;Session&lt;/i&gt; do ASP.NET.&lt;br&gt;
&lt;br&gt;
Na teoria, a propriedade &lt;i&gt;SessionID&lt;/i&gt; deste objeto deveria ter o mesmo valor para a sessão. Mas não é o que estava acontecendo com os meus testes no ASP.NET MVC 3.&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/03/sessionsessionid-e-alterado-cada.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-5640063291598901952?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oVPMQWqM6h3otPpq3EwiYs3W3fk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oVPMQWqM6h3otPpq3EwiYs3W3fk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oVPMQWqM6h3otPpq3EwiYs3W3fk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oVPMQWqM6h3otPpq3EwiYs3W3fk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/TtfaB7TZ-x4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/5640063291598901952/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/03/sessionsessionid-e-alterado-cada.html#comment-form" title="5 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5640063291598901952?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5640063291598901952?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/TtfaB7TZ-x4/sessionsessionid-e-alterado-cada.html" title="Session.SessionID é alterado a cada request" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/03/sessionsessionid-e-alterado-cada.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYMSH47fip7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-5730923319158885220</id><published>2011-03-17T09:30:00.001-03:00</published><updated>2011-08-31T23:29:49.006-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:29:49.006-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Ordenando com auxílio de RegEx</title><content type="html">Outro dia o &lt;a href="http://www.twitter.com/gustavobergamim" target="_blank"&gt;Gustavo Bergamim&lt;/a&gt; perguntou ao &lt;a href="http://www.twitter.com/frenezabr" target="_blank"&gt;Fabrício Doi&lt;/a&gt; e eu como realizar a ordenação da seguinte lista utilizando Regular Expression.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;1.3.5 - TESTE&lt;/li&gt;
&lt;li&gt;1.3.42 - TESTE&lt;/li&gt;
&lt;li&gt;2.1.4 - TESTE&lt;/li&gt;
&lt;li&gt;1 - TESTE&lt;/li&gt;
&lt;li&gt;10.1 - TESTE&lt;/li&gt;
&lt;li&gt;1.1 - TESTE&lt;/li&gt;
&lt;li&gt;2.1 - TESTE&lt;/li&gt;
&lt;li&gt;20.3 - TESTE&lt;/li&gt;
&lt;li&gt;2.5 - TESTE&lt;/li&gt;
&lt;li&gt;1.3 - TESTE&lt;/li&gt;
&lt;li&gt;XYZ&lt;/li&gt;
&lt;li&gt;Abc&lt;/li&gt;
&lt;li&gt;Comparer&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
Se você adicionar estes itens em uma lista genérica de string e tentar realizar uma ordenação simples utilizando o método &lt;i&gt;Sort&lt;/i&gt;, o resultado sairá errado, por isso utilizamos RegEx para facilitar a ordenação.&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/03/ordenando-com-auxilio-de-regex.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-5730923319158885220?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W6H19YtAXVoWLsoadJf7-e7f7Z8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W6H19YtAXVoWLsoadJf7-e7f7Z8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W6H19YtAXVoWLsoadJf7-e7f7Z8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W6H19YtAXVoWLsoadJf7-e7f7Z8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/-Y4M0rA3QBU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/5730923319158885220/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/03/ordenando-com-auxilio-de-regex.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5730923319158885220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/5730923319158885220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/-Y4M0rA3QBU/ordenando-com-auxilio-de-regex.html" title="Ordenando com auxílio de RegEx" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-_dQ2CZLGGlA/TYD16fTIzjI/AAAAAAAAACM/idz_MnoC26g/s72-c/resultado_icomparer.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/03/ordenando-com-auxilio-de-regex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUNRnY_fyp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-6468521121075567871</id><published>2011-03-16T15:05:00.000-03:00</published><updated>2011-08-31T23:31:37.847-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:31:37.847-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Ordenação no DataGridView</title><content type="html">Não é tão simples fazer uma ordenação em um &lt;i&gt;DataGridView&lt;/i&gt; no &lt;i&gt;Windows Form&lt;/i&gt; programaticamente, quanto é no &lt;i&gt;GridView&lt;/i&gt; do &lt;i&gt;Web Form&lt;/i&gt;!&lt;br&gt;
&lt;br&gt;
No &lt;i&gt;Web Form&lt;/i&gt; é simples, basta atribuir a propriedade &lt;i&gt;AllowSorting&lt;/i&gt; para &lt;i&gt;true&lt;/i&gt; e implementar o evento &lt;i&gt;Sorting&lt;/i&gt; do &lt;i&gt;GridView&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Agora no &lt;i&gt;Windows Form&lt;/i&gt; é um pouco diferente, pois no &lt;i&gt;DataGridView&lt;/i&gt; não existe a propriedade e nem o evento dito anteriormente.&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;(Obs.: Se você criar um DataGridView e não populá-lo programaticamente (utilizando a propriedade DataSource), a ordenação funcionará automaticame sem a necessidade de utilizar o código abaixo.)&lt;/blockquote&gt;&lt;br&gt;
Então como fazer a ordenação!?&lt;br&gt;
E se utilizarmos a interface &lt;i&gt;IComparer&lt;/i&gt;?&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/03/ordenacao-no-datagridview.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-6468521121075567871?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pbCyBIcF_RyYhensNxNUA32ChPA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pbCyBIcF_RyYhensNxNUA32ChPA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pbCyBIcF_RyYhensNxNUA32ChPA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pbCyBIcF_RyYhensNxNUA32ChPA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/XYdZ0sl8Cj4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/6468521121075567871/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/03/ordenacao-no-datagridview.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6468521121075567871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6468521121075567871?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/XYdZ0sl8Cj4/ordenacao-no-datagridview.html" title="Ordenação no DataGridView" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/03/ordenacao-no-datagridview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQGSHgycCp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-6552410676906620718</id><published>2011-01-20T09:17:00.007-02:00</published><updated>2011-08-31T23:32:09.698-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:32:09.698-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mock" /><category scheme="http://www.blogger.com/atom/ns#" term="Moles" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Teste Unitário" /><title>Microsoft Moles</title><content type="html">Esta semana o &lt;a href="http://www.cavalcante.net/"&gt;Victor Cavalcante&lt;/a&gt; estava me mostrando como criar um teste unitário com Moles ao invés de Moq. Achei interessante e resolvi pesquisar mais sobre.&lt;br&gt;
&lt;br&gt;
Microsoft Moles é um framework de Mock, mas com um paradigma diferente do que é implementado no Moq devido ao Moles realizar instrumentação no seu código.&lt;br&gt;
&lt;br&gt;
Vamos a prática!!! Vamos imaginar o mesmo cenário do &lt;a href="http://jquaglio.blogspot.com/2011/01/mock.html"&gt;post anterior&lt;/a&gt; onde temos uma camada Business com dependência da camada de dados (DAL), mas sem utilizar conceitos de injeção de dependência.&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/01/microsoft-moles.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-6552410676906620718?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Ru-s73BBNFbVU_Jsk-eXeRJn2A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Ru-s73BBNFbVU_Jsk-eXeRJn2A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7Ru-s73BBNFbVU_Jsk-eXeRJn2A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Ru-s73BBNFbVU_Jsk-eXeRJn2A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/QHgo6WMMrl0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/6552410676906620718/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/01/microsoft-moles.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6552410676906620718?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6552410676906620718?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/QHgo6WMMrl0/microsoft-moles.html" title="Microsoft Moles" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_8Hl64YfVvmI/TTcK591QpZI/AAAAAAAAABw/NmunCoSNaZ4/s72-c/AddMoles.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/01/microsoft-moles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQCRHo6fSp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-4541203776144458446</id><published>2011-01-13T09:28:00.011-02:00</published><updated>2011-08-31T23:32:45.415-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:32:45.415-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mock" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Teste Unitário" /><category scheme="http://www.blogger.com/atom/ns#" term="Injeção de Dependência" /><title>Mock</title><content type="html">&lt;strong&gt;O que são Mocks?&lt;/strong&gt; &lt;br&gt;
Mocks são objetos que simulam o comportamento de outros objetos (como se fossem dublês).&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Finalidade&lt;/strong&gt;&lt;br&gt;
Mocks são geralmente utilizados em testes unitários.&lt;br&gt;
Conforme meu post sobre &lt;a href="http://jquaglio.blogspot.com/2010/09/conceito-de-teste-unitario.html"&gt;conceito de teste unitário&lt;/a&gt;, um teste unitário é um código que testa UMA unidade de código, ou seja, se estou testando uma única unidade de código, eu não quero que meu código teste uma outra unidade de código que não seja a que eu estou querendo.&lt;br&gt;
&lt;br&gt;
Vamos imaginar a situação mais comum, no qual temos uma camada &lt;i&gt;Business&lt;/i&gt; e esta camada realiza chamadas para a camada de &lt;i&gt;DAL&lt;/i&gt; (Data Access Layer).&lt;br&gt;
&lt;br&gt;
Se meus testes estão cobrindo somente os códigos da minha camada de negôcio, então teoricamente eu não deveria deixar a camada Business chamar a camada DAL, pois neste caso eu estaria testando também o código contido nesta camada. Eu quero somente testar a regra de negôcio contida na camada Business. Quero garantir que meus testes cubram somente as regras de negôcio ali desenvolvidas e não o acesso a base de dados.&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2011/01/mock.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-4541203776144458446?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JOhQJhjJJsaLCwoBRgOdbOIzYrw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOhQJhjJJsaLCwoBRgOdbOIzYrw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JOhQJhjJJsaLCwoBRgOdbOIzYrw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOhQJhjJJsaLCwoBRgOdbOIzYrw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/NgcF780LsN4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/4541203776144458446/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2011/01/mock.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4541203776144458446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4541203776144458446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/NgcF780LsN4/mock.html" title="Mock" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2011/01/mock.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMERH04eCp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-3804073260297078542</id><published>2010-09-23T13:28:00.019-03:00</published><updated>2011-08-31T23:33:25.330-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:33:25.330-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Teste Unitário" /><title>Conceito de Teste Unitário</title><content type="html">Há algum tempo, eu possuía um conceito errado sobre teste unitário. Pensava que se resumia em realizar um teste manual daquilo que você havia desenvolvido.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;br&gt;
Em uma atividade como &amp;quot;Desenvolver uma tela que insere uma informação X&amp;quot;, o meu antigo pensamento seria: &amp;quot;Vou adicionar uma sub-atividade chamada de &lt;em&gt;Teste Unitário&lt;/em&gt;, para testar manualmente a inserção desta informação!&amp;quot;. &lt;br&gt;
&lt;br&gt;
Este teste unitário era, simplesmente, acessar a tela, preencher o campo e clicar em um botão para que a informação fosse inserida. Mas, a cada leitura/experiência, pude verificar que o meu entendimento sobre teste unitário estava incorreto. O que eu fazia antes é considerado como um teste integrado e NÃO teste unitário.&lt;br&gt;
&lt;br&gt;
Antes pensava que fosse preciso apenas testar manualmente uma tela, mas após alguns estudos, notei que teste unitário é um código que testa código!&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2010/09/conceito-de-teste-unitario.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-3804073260297078542?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xw9epMHOMuqX0KrJp6eMLXuWTZU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xw9epMHOMuqX0KrJp6eMLXuWTZU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xw9epMHOMuqX0KrJp6eMLXuWTZU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xw9epMHOMuqX0KrJp6eMLXuWTZU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/Ug87YyDs0u8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/3804073260297078542/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2010/09/conceito-de-teste-unitario.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3804073260297078542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3804073260297078542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/Ug87YyDs0u8/conceito-de-teste-unitario.html" title="Conceito de Teste Unitário" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2010/09/conceito-de-teste-unitario.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFRng6eip7ImA9Wx9VEk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-2806987752561649066</id><published>2008-11-04T15:41:00.011-02:00</published><updated>2011-01-28T13:15:17.612-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T13:15:17.612-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title>Ctrl+C</title><content type="html">Função que faz uma cópia (copy) do conteúdo de um textbox para o clipboard.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;input type="text" id="txt"&amp;gt;

&amp;lt;input type="button" onClick="Copiar('txt')"&amp;gt;

&amp;lt;script language="JavaScript"&amp;gt;
function Copiar(pCmp)
{
 var valor = document.getElementById(pCmp).value;
 window.clipboardData.setData("Text", valor);
}
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-2806987752561649066?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5ZiHY__8u25bsk0ueYG8Bm1FPhs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ZiHY__8u25bsk0ueYG8Bm1FPhs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5ZiHY__8u25bsk0ueYG8Bm1FPhs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ZiHY__8u25bsk0ueYG8Bm1FPhs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/uwqC45EYslw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/2806987752561649066/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2008/11/ctrlc.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2806987752561649066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2806987752561649066?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/uwqC45EYslw/ctrlc.html" title="Ctrl+C" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2008/11/ctrlc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMDR3Y8fSp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-2413204550466445228</id><published>2008-10-28T20:13:00.018-02:00</published><updated>2011-08-31T23:34:36.875-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:34:36.875-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><title>DOCTYPE!</title><content type="html">Estes dias alguns webcontrols (ASP.NET) que eu havia feito estavam com comportamentos estranhos após inserir no html o elemento DOCTYPE, que é requerido pelos controles do &lt;a href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/" target="_blank"&gt;AjaxToolkit&lt;/a&gt;. Alguns elementos da página estavam incorretos.&lt;br&gt;
&lt;br&gt;
Não tinha como opção retirar o DOCTYPE da página, pois eu necessitava utilizar um controle do AjaxControlToolkit. Diante disto, resolvi entender o que exatamente é este elemento.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&lt;u&gt;O que é um DOCTYPE?&lt;/u&gt;&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
DOCTYPE (Document Type Declaration ou DTD) é utilizado pelo browser para interpretar a versão do html corrente.&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2008/10/doctype.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-2413204550466445228?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r-TkRIKe2mfXIL2-vAHI5sSDOzU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r-TkRIKe2mfXIL2-vAHI5sSDOzU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r-TkRIKe2mfXIL2-vAHI5sSDOzU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r-TkRIKe2mfXIL2-vAHI5sSDOzU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/QMu8s2MTC6E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/2413204550466445228/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2008/10/doctype.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2413204550466445228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/2413204550466445228?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/QMu8s2MTC6E/doctype.html" title="DOCTYPE!" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2008/10/doctype.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ERnw9eSp7ImA9Wx9VEk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-3405268960521888231</id><published>2008-10-27T09:59:00.020-02:00</published><updated>2011-01-28T13:16:47.261-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T13:16:47.261-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><title>To Upper/Lower Case</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Outro dia estava querendo fazer com que um TextBox ficasse com as letras maíusculas no momento em que eu fosse inserindo cada caracter.&lt;br /&gt;
&lt;br /&gt;
Fiz o código abaixo utilizando o evento OnKeyUp, no qual ele altera os caracteres para maíusculo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;input type="text" OnKeyUp="ToUpper(this)"&amp;gt;
&amp;lt;script language="JavaScript"&amp;gt;
function ToUpper(el)
{
 el.value = el.value.toUpperCase(); //.toLowerCase()
}
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Não gostei muito do efeito, pois quando eu adicionava um caracter novo, o mesmo entrava em minúsculo e depois ele era alterado para maiúsculo.&lt;br /&gt;
&lt;br /&gt;
Em uma busca na internet, encontrei um CSS que altera a aparência do valor do TextBox. É, eu disse que altera a aparência porque este CSS não mantém o valor em maíusculo, ou seja, se você digitar sem utilizar um caps lock ou um shift (para que o caracter fique maiúsculo), os caracteres continuarão minúsculos, e somente a aparência será de maíusculo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS:&lt;/b&gt; text-transform: uppercase; (ou lowercase)&lt;br /&gt;
&lt;br /&gt;
Conclusão, juntei o JavaScript com o CSS!&lt;br /&gt;
&lt;br /&gt;
Acredito que existem outras formas de transformar um caracter em maísculo/minúsculo utilizando JavaScript. Se alguem quiser contribuir, fique à vontade!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;English&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
An other day i wanted to transform a character from lowercase to uppercase in a TextBox.&lt;br /&gt;
&lt;br /&gt;
I made the code below using the OnKeyUp event, in which it modifies the characters to uppercase:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;input type="text" OnKeyUp="ToUpper(this)"&amp;gt;
&amp;lt;script language="JavaScript"&amp;gt;
function ToUpper(el)
{
 el.value = el.value.toUpperCase(); //.toLowerCase()
}
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
I don´t like the effect, therefore when i added a new character, it appears in lowercase and them changed to uppercase.&lt;br /&gt;
&lt;br /&gt;
In a search over internet, i found a CSS that change the TextBox value appearance. I said that changes the value appearance because this CSS doesn´t keep the uppercase value. I you type without use the caps lock or shift (for character to be uppercase), the characters will be lowercase, and only the appearance will be uppercase.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS:&lt;/b&gt; text-transform: uppercase; (or lowercase)&lt;br /&gt;
&lt;br /&gt;
Conclusion, i put the JavaScript and CSS together!&lt;br /&gt;
&lt;br /&gt;
I believe that has many ways to transform a character to uppercase/lowercase using JavaScript. Feel free to contribute.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-3405268960521888231?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c5yxIksU7cXgwN52_r3sZvz9oPA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c5yxIksU7cXgwN52_r3sZvz9oPA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c5yxIksU7cXgwN52_r3sZvz9oPA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c5yxIksU7cXgwN52_r3sZvz9oPA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/Qm-gTdO2Fdo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/3405268960521888231/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2008/10/to-upperlower-case.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3405268960521888231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3405268960521888231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/Qm-gTdO2Fdo/to-upperlower-case.html" title="To Upper/Lower Case" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2008/10/to-upperlower-case.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUACSX88eSp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-3448285707318109603</id><published>2008-03-30T16:40:00.005-03:00</published><updated>2011-08-31T23:22:48.171-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:22:48.171-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>O elemento é undefined?</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br /&gt;
Abaixo está um código que verifica se um determinado elemento não está definido no html, ou seja, se ele é &lt;i&gt;undefined&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;English&lt;/b&gt;&lt;br /&gt;
Below there is a code that verifies if a element is not defined in HTML code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;if(eval("document.getElementById('idElemento')==undefined"))
{
 alert('Elemento = undefined');
}
&lt;/pre&gt;

&lt;b&gt;jQuery:&lt;/b&gt;
&lt;pre name="code" class="javascript"&gt;
var existe = $('#idElemento').length;
if(existe == 0)
{
 alert('Elemento = undefined');
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-3448285707318109603?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pgjx_tMYZIIrm3WCgs1N9i-_9-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pgjx_tMYZIIrm3WCgs1N9i-_9-E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pgjx_tMYZIIrm3WCgs1N9i-_9-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pgjx_tMYZIIrm3WCgs1N9i-_9-E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/458p30lLjU8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/3448285707318109603/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2008/03/o-elemento-undefined.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3448285707318109603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/3448285707318109603?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/458p30lLjU8/o-elemento-undefined.html" title="O elemento é undefined?" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2008/03/o-elemento-undefined.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ERnw9eip7ImA9Wx9VEk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-8736557301782051682</id><published>2008-01-27T21:59:00.003-02:00</published><updated>2011-01-28T13:16:47.262-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T13:16:47.262-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><title>Exibir imagem em tamanho maior clicando no thumbnail</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br /&gt;
Este script realiza a exibição de imagens grandes à partir de um click sobre os seus respectivos thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;English&lt;/b&gt;&lt;br /&gt;
This script show big images when the user clicks on its thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;var screenGrd = document.getElementById('Screen');
var imgGrande = document.getElementById('imgGrande');

//Exibe a imagem grande, passando por parâmetro o caminho da imagem
function ShowScreen(imgGrd)
{
 img = new Image();
 img.src = imgGrd;

 imgGrande.src = img.src;

 //Exibe e centraliza a imagem grande no browser
 screenGrd.style.visibility = 'visible';
 screenGrd.style.display = 'inline';
 screenGrd.style.top = (document.body.offsetHeight/2) - (screenGrd.offsetHeight/2);
 screenGrd.style.left = (document.body.offsetWidth/2) - (screenGrd.offsetWidth/2);
}

//Fecha a imagem grande
function HideScreen()
{
 screenGrd.style.visibility = 'hidden';
 screenGrd.style.display = 'none';
}
&lt;/pre&gt;&lt;br /&gt;
&lt;strong&gt;HTML&lt;/strong&gt;&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;a href="javascript:void(ShowScreen('imagem_grande.jpg'));"&amp;gt;&amp;lt;img src="imagem_pequena.jpg" border="0"&amp;gt;&amp;lt;/a&amp;gt;

&amp;lt;div id="Screen" style="visibility:hidden;display:none;position:absolute;"&amp;gt;
&amp;lt;table bordercolor="#9999FF" border="2" cellspacing="0" cellpadding="0"&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td bgcolor="#9999FF" align="right"&amp;gt;&amp;lt;a href="javascript:void(HideScreen());"&gt;[X]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td&amp;gt;&amp;lt;img id="imgGrande"&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;strong&gt;Exemplo (Example)&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://bp0.blogger.com/_8Hl64YfVvmI/R50dTwzK8tI/AAAAAAAAAAU/GmS3ABfjj3M/s1600-h/print.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_8Hl64YfVvmI/R50dTwzK8tI/AAAAAAAAAAU/GmS3ABfjj3M/s320/print.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5160312973390705362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-8736557301782051682?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0HA4OFuCO2C8g1KVZAtXAQwGQIQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0HA4OFuCO2C8g1KVZAtXAQwGQIQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0HA4OFuCO2C8g1KVZAtXAQwGQIQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0HA4OFuCO2C8g1KVZAtXAQwGQIQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/sSgSGcGq4lY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/8736557301782051682/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2008/01/exibir-imagem-em-tamanho-maior-clicando.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/8736557301782051682?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/8736557301782051682?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/sSgSGcGq4lY/exibir-imagem-em-tamanho-maior-clicando.html" title="Exibir imagem em tamanho maior clicando no thumbnail" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_8Hl64YfVvmI/R50dTwzK8tI/AAAAAAAAAAU/GmS3ABfjj3M/s72-c/print.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2008/01/exibir-imagem-em-tamanho-maior-clicando.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIEQXY9fCp7ImA9WhdXGEk.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-4609596461122193</id><published>2007-11-21T17:46:00.003-02:00</published><updated>2011-08-31T23:35:00.864-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T23:35:00.864-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title>AJAX - Asynchronous Javascript And XML</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br&gt;
O AJAX é utilizado para fazer requisições em background das informações, sem que haja uma atualização de toda a página, ou seja, sem que a página faça um &lt;em&gt;postback&lt;/em&gt; e atualize a página como um todo.&lt;br&gt;
&lt;br&gt;
Com o AJAX, as páginas ficaram mais rápidas de ser carregadas, pois não precisamos mais carregar a página toda para cada link clicado, diminuindo assim o download de informações desnecessárias (como: imagens, flash, etc).&lt;br&gt;
&lt;br&gt;&lt;a href="http://jquaglio.blogspot.com/2007/11/ajax-asynchronous-javascript-and-xml.html#more"&gt;Mais informações »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-4609596461122193?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ekdCqWOOuX0MtJZaKsJ10gEEV_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ekdCqWOOuX0MtJZaKsJ10gEEV_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ekdCqWOOuX0MtJZaKsJ10gEEV_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ekdCqWOOuX0MtJZaKsJ10gEEV_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/QiEoyCEcBWg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/4609596461122193/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2007/11/ajax-asynchronous-javascript-and-xml.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4609596461122193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4609596461122193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/QiEoyCEcBWg/ajax-asynchronous-javascript-and-xml.html" title="AJAX - Asynchronous Javascript And XML" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2007/11/ajax-asynchronous-javascript-and-xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ERnw9eip7ImA9Wx9VEk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-4965035723910521669</id><published>2007-11-14T19:09:00.003-02:00</published><updated>2011-01-28T13:16:47.262-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T13:16:47.262-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><title>Colocando DIV por cima do DropDownList</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br /&gt;
Por muitas vezes tentei colocar um DIV por cima de um DropDownList, mas o mesmo sempre ficava por traz; Tentava utilizar o style &lt;em&gt;z-index&lt;/em&gt;, mas mesmo assim não dava.&lt;br /&gt;
&lt;br /&gt;
Fiz uma vasta pesquisa pela internet (google) e acabei encontrando um work around que solucionava tal problema, pois o problema em si é um bug encontrado no Internet Explorer 6 e inferior.&lt;br /&gt;
&lt;br /&gt;
Para resolver tal bug, tive que colocar um IFRAME invisível na mesma posição e tamanho que o DIV.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;English&lt;/b&gt;&lt;br /&gt;
For many times i try to put a DIV in front of a DropDownList, but it always staied behind; I tried to use a style &lt;em&gt;z-index&lt;/em&gt;, but it not worked.&lt;br /&gt;
&lt;br /&gt;
I made a search on the internet (google) and i found a work around that resolve the problem, because the problem is a bug found on Internet Explorer 6 and inferior.&lt;br /&gt;
&lt;br /&gt;
To resolve this bug, i need to put a hidden IFRAME in the same position and size of the DIV.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Segue abaixo o código (Code below):&lt;/strong&gt;&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;select&amp;gt;&amp;lt;option&amp;gt;Zeh JS&amp;lt;/option&amp;gt;&amp;lt;/select&amp;gt;&lt;/pre&gt;&lt;pre name="code" class="javascript"&gt;&amp;lt;div style="position:absolute; top:0px; left:0px; width:100px; height:100px; background-color:#C6C6C6;z-index:2;"&amp;gt;DIV&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;pre name="code" class="javascript"&gt;&amp;lt;iframe src="javascript:false;" frameborder="0" style="position:absolute; top:0px; left:0px; width:100px; height:100px; filter:Alpha(opacity=0); z-index:1;"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-4965035723910521669?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GCDPb-Nfy-zrvJYdMagvGCsuhV4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GCDPb-Nfy-zrvJYdMagvGCsuhV4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GCDPb-Nfy-zrvJYdMagvGCsuhV4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GCDPb-Nfy-zrvJYdMagvGCsuhV4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/TT-VnVkjgXg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/4965035723910521669/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2007/11/colocando-div-por-cima-do-dropdownlist.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4965035723910521669?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/4965035723910521669?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/TT-VnVkjgXg/colocando-div-por-cima-do-dropdownlist.html" title="Colocando DIV por cima do DropDownList" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2007/11/colocando-div-por-cima-do-dropdownlist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ERnw9eyp7ImA9Wx9VEk8.&quot;"><id>tag:blogger.com,1999:blog-7155703776680464876.post-6591663355478072586</id><published>2007-11-11T14:18:00.003-02:00</published><updated>2011-01-28T13:16:47.263-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T13:16:47.263-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><title>ToolTip</title><content type="html">&lt;b&gt;Português&lt;/b&gt;&lt;br /&gt;
Fiz uma função para exibir um tooltip personalizado em qualquer elemento HTML.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;English&lt;/b&gt;&lt;br /&gt;
I made a funcion to show a personalized tooltip in any HTML element.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;function ShowToolTip(elemento, texto)
{
 var d = document.getElementById('tt');
 d.innerHTML = texto;
 d.style.top = posY;
 d.style.left = posX;
 d.style.visibility = 'visible';
 d.style.display = 'inline';
}

function HideToolTip()
{
 var d = document.getElementById('tt');
 d.style.visibility = 'hidden';
 d.style.display = 'none';
}

//Início - Posição X, Y do Mouse
var posX, posY;
function getXY()
{
 posX = event.clientX;
 posY = event.clientY;
}
document.onmousemove = getXY;
//Fim - Posição X, Y do Mouse
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CSS&lt;/strong&gt;&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;.stilo
{
 position: absolute;
 visibility: hidden;
 display: none;
 font-size: 9px;
 font-family: Tahoma;
 background-color: #FFFF00;
 border-style: solid;
 border-width: 1px;
 padding: 3px;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;HTML&lt;/strong&gt;&lt;br /&gt;
&lt;pre name="code" class="javascript"&gt;&amp;lt;span onMouseOver="ShowToolTip(this, 'Item Número 1');" onMouseOut="HideToolTip();"&amp;gt;Item 1&amp;lt;/span&amp;gt;

&amp;lt;div id="tt" class="stilo"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;a href="http://bp0.blogger.com/_8Hl64YfVvmI/Rzct1d0uJXI/AAAAAAAAAAM/zmAonJjap98/s1600-h/tooltip.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_8Hl64YfVvmI/Rzct1d0uJXI/AAAAAAAAAAM/zmAonJjap98/s320/tooltip.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5131620696974042482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7155703776680464876-6591663355478072586?l=jquaglio.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Sm2ESoXqiNt03Z5FuZcAbBGnz7U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Sm2ESoXqiNt03Z5FuZcAbBGnz7U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Sm2ESoXqiNt03Z5FuZcAbBGnz7U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Sm2ESoXqiNt03Z5FuZcAbBGnz7U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jquaglio/~4/qo9LibyUi-M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jquaglio.blogspot.com/feeds/6591663355478072586/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://jquaglio.blogspot.com/2007/11/tooltip.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6591663355478072586?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7155703776680464876/posts/default/6591663355478072586?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jquaglio/~3/qo9LibyUi-M/tooltip.html" title="ToolTip" /><author><name>José Otávio Quaglio</name><uri>http://www.blogger.com/profile/03851173305040410249</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_8Hl64YfVvmI/Rzct1d0uJXI/AAAAAAAAAAM/zmAonJjap98/s72-c/tooltip.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://jquaglio.blogspot.com/2007/11/tooltip.html</feedburner:origLink></entry></feed>

