<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Frederico Policarpo  Desenvolvendo Software</title>
	<atom:link href="http://fredpolicarpo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fredpolicarpo.wordpress.com</link>
	<description>Dicas sobre desenvolvimento ágil de Software com tecnologias .Net</description>
	<lastBuildDate>Fri, 30 May 2008 01:57:51 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='fredpolicarpo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/ba892d31e774fc90bee2c825190c21c3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Frederico Policarpo  Desenvolvendo Software</title>
		<link>http://fredpolicarpo.wordpress.com</link>
	</image>
			<item>
		<title>!!!!Mudança de BLOG!!!!!</title>
		<link>http://fredpolicarpo.wordpress.com/2008/05/30/mudanca-de-blog/</link>
		<comments>http://fredpolicarpo.wordpress.com/2008/05/30/mudanca-de-blog/#comments</comments>
		<pubDate>Fri, 30 May 2008 01:57:51 +0000</pubDate>
		<dc:creator>Frederico Policarpo Martins</dc:creator>
				<category><![CDATA[Artigos]]></category>

		<guid isPermaLink="false">http://fredpolicarpo.wordpress.com/?p=33</guid>
		<description><![CDATA[
Caros leitores, devido a preferências pessoais esse blog foi migrado para o Blogger da Google. Acesse todo esse conteúdo além de todos novos posts em:
http://fredpolicarpo.blogspot.com/
Aguardo sua visita!
Abraços,
Até!
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=33&subd=fredpolicarpo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://fredpolicarpo.files.wordpress.com/2008/05/traslocco1.jpg"><img class="alignleft size-medium wp-image-35" src="http://fredpolicarpo.files.wordpress.com/2008/05/traslocco1.jpg?w=284&#038;h=300" alt="" width="284" height="300" /></a></p>
<h4>Caros leitores, devido a preferências pessoais esse blog foi migrado para o Blogger da Google. Acesse todo esse conteúdo além de todos novos posts em:</p>
<p><strong><a href="http://fredpolicarpo.blogspot.com/">http://fredpolicarpo.blogspot.com/</a></strong></p>
<p>Aguardo sua visita!</p>
<p>Abraços,</p>
<p>Até!</h4>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fredpolicarpo.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fredpolicarpo.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredpolicarpo.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredpolicarpo.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredpolicarpo.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredpolicarpo.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredpolicarpo.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredpolicarpo.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredpolicarpo.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredpolicarpo.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredpolicarpo.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredpolicarpo.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=33&subd=fredpolicarpo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fredpolicarpo.wordpress.com/2008/05/30/mudanca-de-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/95e186154ae6a4d8ee7dd6a170908784?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredpolicarpo</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/05/traslocco1.jpg?w=284" medium="image" />
	</item>
		<item>
		<title>Biblioteca de Expressões Regulares[Regex Library]</title>
		<link>http://fredpolicarpo.wordpress.com/2008/05/16/biblioteca-de-expressoes-regularesregex-library/</link>
		<comments>http://fredpolicarpo.wordpress.com/2008/05/16/biblioteca-de-expressoes-regularesregex-library/#comments</comments>
		<pubDate>Fri, 16 May 2008 01:10:05 +0000</pubDate>
		<dc:creator>Frederico Policarpo Martins</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[biblitoteca]]></category>
		<category><![CDATA[eficiência]]></category>
		<category><![CDATA[expressão regular]]></category>
		<category><![CDATA[expressões regulares]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[reconhecimento de padrões]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[validação de datas]]></category>

		<guid isPermaLink="false">http://fredpolicarpo.wordpress.com/?p=30</guid>
		<description><![CDATA[
Os modelos de programação modernos tem se preocupado principalmente com princípios de alto-nível como robustez, flexibilidade, boa arquitetura e um projeto composto de módulos com baixo acoplamento e alta coesão. E eu estou de total acordo com eles, são esses princípios que sustentam grandes softwares, principalmente aqueles que necessitam de constante alteração (isto é, 99%* [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=30&subd=fredpolicarpo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://fredpolicarpo.files.wordpress.com/2008/05/regexbuddy.gif"><img class="aligncenter size-medium wp-image-31" src="http://fredpolicarpo.files.wordpress.com/2008/05/regexbuddy.gif?w=300&#038;h=291" alt="Trabalhando com Expressões Regulares" width="300" height="291" /></a></p>
<p>Os modelos de programação modernos tem se preocupado principalmente com princípios de alto-nível como robustez, flexibilidade, boa arquitetura e um projeto composto de módulos com baixo acoplamento e alta coesão. E eu estou de total acordo com eles, são esses princípios que sustentam grandes softwares, principalmente aqueles que necessitam de constante alteração (isto é, 99%* deles <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p>Porém existem cenários em que habilidades que antes eram extremamente comuns para os programadores vôvôs, de sistemas Unix e tal, e que para nós, engenheiros de software, não são tão intuitivas, se tornam a chave para uma boa solução. Um exemplo disso são as <strong>Expressões Regulares</strong>, cujo cenário em que dominam é o <strong>reconhecimento de padrões</strong> em textos.</p>
<p>Por exemplo: Como fazer para verificar se uma string é uma data válida ? As duas opções que vejo são:</p>
<ul>
<li>Um código cheio de IFs e extremamente confuso</li>
<li>Um expressão regular, não menos confusa que a opção anterior :-p</li>
</ul>
<p>A grande vantagem da expressão regular é o desempenho, as bibliotecas que processam essas expressões são altamente eficientes, a classe <strong>Regex </strong>de .NET, por exemplo.</p>
<p>A grande dificuldade de expressões regulares é complexidade, veja por exemplo a <strong>expressão regular para</strong> <strong>validar data</strong> no formato <strong>dd/mm/aaaa:</strong></p>
<p>(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(\d{4}))|((29)(\.|-|\/)(02)([/])([02468][048]00))|((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9][0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9][13579][26])))</p>
<p>Simples né ??</p>
<p>Mas o interessante é que encontrei um site com centenas dessas expressões malucas: <a href="http://regexlib.com/" target="_blank">http://regexlib.com/</a></p>
<p>Com essa ferramenta (o site) você pode facilitar a grande dor de cabeça das expressões regulares, isto é, a confecção das mesmas, e então aproveitar do que elas tem de melhor: <strong>Eficiência</strong>!</p>
<p>Dica <strong>.NET</strong></p>
<p>Para fazer a validação de data (dd/mm/aaa) em .NET (C#) use o seguinte código:</p>
<p class="western" style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>bool</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> regex(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> data)</span></span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">{ </span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#000000;"> </span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span> string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> expressao = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>@&#8221;(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(\d{4}))|</span></span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"> (([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(\d{4}))|</span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"> ((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(\d{4}))|((29)(\.|-|\/)(02)([/])([02468][048]00))|</span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"> ((29)([/])(02)([/])([13579][26]00))|</span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"> ((29)([/])(02)([/])([0-9][0-9][0][48]))|</span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"> ((29)([/])(02)([/])([0-9][0-9][2468][048]))|</span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#800000;"> <span style="font-size:x-small;"><span> ((29)([/])(02)([/])([0-9][0-9][13579][26])))&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p><span style="color:#0000ff;"><span style="font-size:x-small;"><span> return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>Regex</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.IsMatch(data, expressao);</span></span></span></p>
<p class="western" style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span>}</span></span></span></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;">O recado é esse, se precisar de Expressões Regulares, prontinhas e esperando para serem usadas, acesse:</p>
<p class="western" style="margin-bottom:0;"><a href="http://regexlib.com/" target="_blank"><img class="alignnone size-medium wp-image-32" src="http://fredpolicarpo.files.wordpress.com/2008/05/site.png?w=296&#038;h=53" alt="" width="296" height="53" /></a></p>
<p>* Esses 99% foi um número inventado por mim mesmo, mas caso você pesquise verá que realmente se trata da grande maioria.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fredpolicarpo.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fredpolicarpo.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredpolicarpo.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredpolicarpo.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredpolicarpo.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredpolicarpo.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredpolicarpo.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredpolicarpo.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredpolicarpo.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredpolicarpo.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredpolicarpo.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredpolicarpo.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=30&subd=fredpolicarpo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fredpolicarpo.wordpress.com/2008/05/16/biblioteca-de-expressoes-regularesregex-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/95e186154ae6a4d8ee7dd6a170908784?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredpolicarpo</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/05/regexbuddy.gif?w=300" medium="image">
			<media:title type="html">Trabalhando com Expressões Regulares</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/05/site.png?w=296" medium="image" />
	</item>
		<item>
		<title>Coleções Case-Insensitive [Parte 02 - Busca em ArrayList]</title>
		<link>http://fredpolicarpo.wordpress.com/2008/05/08/colecoes-case-insensitive-parte-02-busca-em-arraylist/</link>
		<comments>http://fredpolicarpo.wordpress.com/2008/05/08/colecoes-case-insensitive-parte-02-busca-em-arraylist/#comments</comments>
		<pubDate>Thu, 08 May 2008 15:52:14 +0000</pubDate>
		<dc:creator>Frederico Policarpo Martins</dc:creator>
				<category><![CDATA[Artigos]]></category>

		<guid isPermaLink="false">http://fredpolicarpo.wordpress.com/?p=26</guid>
		<description><![CDATA[Neste artigo vou falar um pouco de como trabalhar com Case-Insensitive em Listas, como havia combinado no artigo anterior.

Antes de falar de lista gostaria de falar de um tipo de Hashtable (eu sei que Hashtable foi assunto do outro post, porém existe uma armadilha do .NET   )

Conforme apresentei anteriormente, a classe usada para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=26&subd=fredpolicarpo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="margin-bottom:0;" lang="pt-BR" align="justify"><a href="http://fredpolicarpo.files.wordpress.com/2008/05/dotnet.png"><img class="alignleft size-thumbnail wp-image-27" src="http://fredpolicarpo.files.wordpress.com/2008/05/dotnet.png?w=128&#038;h=82" alt="" width="128" height="82" /></a><span style="font-size:small;">Neste artigo vou falar um pouco de como trabalhar com Case-Insensitive em Listas, como havia combinado no <a href="http://fredpolicarpo.wordpress.com/2008/04/28/colecoes-case-insensitive-parte-01-dicionarios/">artigo anterior</a>.</span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;">Antes de falar de lista gostaria de falar de um tipo de <span style="color:#008080;">Hashtable</span> (eu sei que <span style="color:#008080;">Hashtable</span> foi assunto do outro post, porém existe uma armadilha do .NET <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  )</span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;">Conforme apresentei anteriormente, a classe usada para criar <span style="color:#008080;">Hashtable</span> Case-Insensitive é <span style="color:#008080;">CollectionsUtil</span>, com o método <span style="color:#008080;"><strong>CollectionsUtil</strong></span><span style="color:#000000;"><strong>.CreateCaseInsensitiveHashtable()</strong></span><span style="color:#000000;">. O outro método utilitário desta classe é </span><span style="color:#008080;"><strong>CollectionsUtil</strong></span><span style="color:#000000;"><strong>.CreateCaseInsensitiveSortedList()</strong></span><span style="color:#000000;">. Então ele é o usado para lista case insensitive ?? Não, ele é usado para criar um </span><span style="color:#008080;">SortedList</span><span style="color:#000000;"> que na verdade é um </span><span style="color:#008080;">Hashtable </span><span style="color:#000000;">e que ordena as entradas pelo valor das chaves :S Estranho, não!? Esse nome realmente não é sugestivo, pois não se trata de uma lista ordenada, mas </span><span style="color:#008080;">SortedList </span><span style="color:#000000;">é assunto para outro post, vamos ao que interessa!</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">Pra começar é interessante notar que Case-Insensitive é um problema natural de dicionários, e não de listas, e deve ser por isso que não existe um lista nativa em .NET que seja Case-Insensitive. </span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#000000;">Então por que estou escrevendo este post ? Pra mostar uma forma de se fazer busca Case-Insensitive em um </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;">.</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="center">
<p style="margin-bottom:0;" lang="pt-BR" align="center"><span style="font-size:small;"><strong><span style="color:#000000;">Busca Case-Insensitive em </span><span style="color:#008080;">ArrayList.</span></strong></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">Isto é, buscar uma string em uma lista sem considerar o case.</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#000000;">Vamos criar um método estático que recebe um </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;">, um string para ser buscada e então retorna true se a string existir e false se não existir, considerando a comparação Case-Insensitive:</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">static</span><span style="color:#000000;"> </span><span style="color:#0000ff;">bool</span><span style="color:#000000;"> ContemValor(</span><span style="color:#0000ff;">string</span><span style="color:#000000;"> valor, </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;"> lista)</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">{</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#008080;"> ArrayList</span><span style="color:#000000;"> aux = </span><span style="color:#0000ff;">new</span><span style="color:#000000;"> </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;">(lista);</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;"> aux.Sort();</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#0000ff;"> return</span><span style="color:#000000;"> (aux.BinarySearch(valor, </span><span style="color:#008080;">StringComparer</span><span style="color:#000000;">.InvariantCultureIgnoreCase) &gt;= 0);</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">}</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#000000;">Outra opção é estender a classe </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;"> e sobrescrever o método Contains, segue a implmentacão:</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR"><span style="font-size:small;"><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">class</span><span style="color:#000000;"> </span><span style="color:#008080;">ListaCaseInsensitive</span><span style="color:#000000;"> : </span><span style="color:#008080;">ArrayList</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="color:#000000;"><span style="font-size:small;">{</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="font-size:small;"><span style="color:#0000ff;"> public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">override</span><span style="color:#000000;"> </span><span style="color:#0000ff;">bool</span><span style="color:#000000;"> Contains(</span><span style="color:#0000ff;">object</span><span style="color:#000000;"> item)</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="color:#000000;"><span style="font-size:small;"> {<br />
</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="font-size:small;"><span style="color:#008080;"> ArrayList</span><span style="color:#000000;"> aux = </span><span style="color:#0000ff;">new</span><span style="color:#000000;"> </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;">(lista);</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="color:#000000;"><span style="font-size:small;"> aux.Sort();</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="font-size:small;"><span style="color:#0000ff;"> return</span><span style="color:#000000;"> (aux.BinarySearch(valor, </span><span style="color:#008080;">StringComparer</span><span style="color:#000000;">.InvariantCultureIgnoreCase) &gt;= 0);</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="color:#000000;"><span style="font-size:small;"> } </span></span></p>
<p style="margin-bottom:0;" lang="pt-BR"><span style="color:#000000;"><span style="font-size:small;">}</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">Para a inserção essa operação não faz sentido pois se fossémos verificar se um valor, case-insensitive ou não, existe em uma lista antes de inserí-lo na mesma essa lista passaria a ser um tipo de Conjunto, o qual, diferentemente de uma lista, não possui elementos repetidos.</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="font-size:small;"><span style="color:#000000;">É isso, como podem ver a implementação é bastante enxuta, porém pode causar dúvidas por não ser uma operação nativa de </span><span style="color:#008080;">ArrayList</span><span style="color:#000000;"> ou qualquer outro tipo de lista em .NET 2.0. Essa foi a melhor forma que encontrei de satisfazer esse requisito, caso conheça alguma outra compartilhe conosco!<br />
</span></span></p>
<p style="margin-bottom:0;" lang="pt-BR" align="justify">
<p style="margin-bottom:0;" lang="pt-BR" align="justify"><span style="color:#000000;"><span style="font-size:small;">Espero ter colaborado, se esse assunto te interessou faça um comentário!</span></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fredpolicarpo.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fredpolicarpo.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredpolicarpo.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredpolicarpo.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredpolicarpo.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredpolicarpo.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredpolicarpo.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredpolicarpo.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredpolicarpo.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredpolicarpo.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredpolicarpo.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredpolicarpo.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=26&subd=fredpolicarpo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fredpolicarpo.wordpress.com/2008/05/08/colecoes-case-insensitive-parte-02-busca-em-arraylist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/95e186154ae6a4d8ee7dd6a170908784?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredpolicarpo</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/05/dotnet.png?w=128" medium="image" />
	</item>
		<item>
		<title>MCTS: .NET Framework 2.0 Windows Applications</title>
		<link>http://fredpolicarpo.wordpress.com/2008/05/07/mcts-net-framework-20-windows-applications/</link>
		<comments>http://fredpolicarpo.wordpress.com/2008/05/07/mcts-net-framework-20-windows-applications/#comments</comments>
		<pubDate>Wed, 07 May 2008 16:17:47 +0000</pubDate>
		<dc:creator>Frederico Policarpo Martins</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Certificação]]></category>
		<category><![CDATA[Certificado]]></category>
		<category><![CDATA[Fibonacci]]></category>
		<category><![CDATA[Frederico Policarpo Martins]]></category>
		<category><![CDATA[Goiânia]]></category>
		<category><![CDATA[MCTS]]></category>
		<category><![CDATA[MCTS: .NET Framework 2.0 Windows Applications]]></category>

		<guid isPermaLink="false">http://fredpolicarpo.wordpress.com/?p=23</guid>
		<description><![CDATA[
Boas Novas! Após árduos sete meses de estudo  consegui alcançar a certificação MCTS: .NET Framework 2.0 Windows Applications. Isso significa ser aprovado nos seguintes exames:



(70-536) TS: Microsoft .NET  Framework 2.0 – Application Development Foundation
(70-526) TS: Microsoft .NET  Framework 2.0 – Windows-Based Client Development.

Não posso deixar de agradecer o apoio da empresa na [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=23&subd=fredpolicarpo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="Section1" style="text-align:center;"><a href="http://fredpolicarpo.files.wordpress.com/2008/05/mcts1.gif"><img class="size-medium wp-image-25 aligncenter" src="http://fredpolicarpo.files.wordpress.com/2008/05/mcts1.gif?w=300&#038;h=223" alt="" width="300" height="223" /></a></div>
<div class="Section1" style="text-align:justify;"><strong>Boas Novas!</strong> Após árduos sete meses de estudo  consegui alcançar a certificação <strong>MCTS<span class="GramE">: .</span>NET <span class="SpellE">Framework</span> 2.0 Windows <span class="SpellE">Applications</span></strong>. <span class="SpellE"><span>Isso</span></span><span> <span class="SpellE">significa</span> ser <span class="SpellE">aprovado</span> <span class="SpellE">nos</span> <span class="SpellE">seguintes</span> <span class="SpellE">exames</span>:</p>
<p></span></div>
<div class="Section1">
<ul style="margin-top:0;" type="disc">
<li class="MsoNormal"><span>(70-536) TS: Microsoft .NET  Framework 2.0 – Application Development Foundation</span></li>
<li class="MsoNormal"><span>(70-526) TS: Microsoft .NET  Framework 2.0 – Windows-Based Client Development.</span></li>
</ul>
<div class="Section1" style="text-align:justify;">Não posso deixar de agradecer o apoio da empresa na qual trabalho: <a title="Fibonacci - Soluções Ágeis" href="http://solucoesageis.com.br" target="_blank">Fibonacci Soluções Ágeis</a>. Sem dúvidas este apoio foi de extrema importância para que eu conseguisse alcançar essa conquista. Valeu Fibo!</div>
<p class="MsoNormal" style="text-align:justify;">É muito bom saber que existe mais um profissional MCTS em Goiânia, e além disso o conhecimento adquirido durante  esse período de treinamento (estudei sozinho, mas não deixa de ser um  treinamento) é de extrema importância para a qualidade do meu trabalho, tanto no  software que desenvolvo quanto para os artigos que escrevo neste <span class="SpellE">blog</span> e também para as futuras consultorias que <span class="GramE">ministrarei,</span> <span> </span>ás quais  estão em estágio de planejamento.</p>
<p class="MsoNormal" style="text-align:justify;">Ainda essa semana será <span class="GramE">postado</span> a continuação do artigo sobre coleções  customizadas.</p>
<p class="MsoNormal" style="text-align:justify;">Até breve.</p>
<p class="MsoNormal">
</div>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fredpolicarpo.wordpress.com/23/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fredpolicarpo.wordpress.com/23/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredpolicarpo.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredpolicarpo.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredpolicarpo.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredpolicarpo.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredpolicarpo.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredpolicarpo.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredpolicarpo.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredpolicarpo.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredpolicarpo.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredpolicarpo.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=23&subd=fredpolicarpo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fredpolicarpo.wordpress.com/2008/05/07/mcts-net-framework-20-windows-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/95e186154ae6a4d8ee7dd6a170908784?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredpolicarpo</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/05/mcts1.gif?w=300" medium="image" />
	</item>
		<item>
		<title>Coleções Case-Insensitive [Parte 01 - Dicionários]</title>
		<link>http://fredpolicarpo.wordpress.com/2008/04/28/colecoes-case-insensitive-parte-01-dicionarios/</link>
		<comments>http://fredpolicarpo.wordpress.com/2008/04/28/colecoes-case-insensitive-parte-01-dicionarios/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 02:28:46 +0000</pubDate>
		<dc:creator>Frederico Policarpo Martins</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Case-Insensitive]]></category>
		<category><![CDATA[Case-Sensitive]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classe]]></category>
		<category><![CDATA[Coleções]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[CollectionsUtil]]></category>
		<category><![CDATA[CollectionsUtil.CreateCaseInsensitiveHashtable]]></category>
		<category><![CDATA[CreateCaseInsensitiveHashtable]]></category>
		<category><![CDATA[Dicionário]]></category>
		<category><![CDATA[Dictionary]]></category>
		<category><![CDATA[Hashtable]]></category>
		<category><![CDATA[IDictionary]]></category>
		<category><![CDATA[método]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[System.Collections]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://fredpolicarpo.wordpress.com/?p=21</guid>
		<description><![CDATA[

Certa vez me deparei com o problema de criar dicionários onde as chaves fossem Case-Insensitive, isto é, dicionários onde a chave &#8220;nda&#8221; fosse considerada a mesma chave &#8220;NdA&#8221;.
Existem diversos cenários onde este comportamento é desejável. Imagine, por exemplo, um dicionário que contém o mapeamento nomeDoCampo para ObjetoCampo, que é usado para representar todos o campos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=21&subd=fredpolicarpo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="western" lang="pt-PT" align="justify"><img class="aligncenter" src="http://fredpolicarpo.files.wordpress.com/2008/04/duvida.jpg" alt="Como usar dicionários Case-Insensitive" /></p>
<p class="western" lang="pt-PT" align="justify">
<p class="western" lang="pt-PT" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Certa vez me deparei com o problema de criar dicionários onde as chaves fossem <strong>Case-Insensitive</strong>, isto é, dicionários onde a chave &#8220;nda&#8221; fosse considerada a mesma chave &#8220;NdA&#8221;.</span></span></p>
<p class="western" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Existem diversos cenários onde este comportamento <span>é</span> desejável. Imagine, por exemplo, um dicionário que contém o mapeamento <strong>nomeDoCampo</strong> para <strong>ObjetoCampo</strong>, que é usado para representar todos o campos de um objeto formulário.</span></span></p>
<p class="western" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Se nas regras de negócio o nome do campo for Case-Sensitive, isto é, o campo nomeado &#8220;Campo01&#8243; for considerado diferente do campo nomeado &#8220;CAMPO01&#8243;, não existe segredo, basta usar um Hashtable ou um Dictionary genérico que o problema estará sanado.</span></span></p>
<p class="western" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Se, pelo contrário, as regras definirem que os nomes de campo &#8220;campo01&#8243; e &#8220;CAMPO01&#8243; devem se tratar do mesmo objeto, então seu dicionário, o qual irá conter esse mapeamento, precisa de um comportamento diferenciado.</span></span></p>
<p class="western" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Vamos ver como seria o trabalho de verificar se um dado campo, supondo que no nome do campo seja case-insensitive, está presente em um dicionário normal, juntamente com a operação de adição de um novo campo.</span></span></p>
<p class="western" style="background:#ffff99 none repeat scroll 0;"><span style="font-family:Courier New,monospace;"><span style="font-size:small;"><br />
static Hashtable campos = new Hashtable();<br />
static void insiraCampo(string nome, object campo)<br />
{<br />
if (!campoExiste(nome))<br />
campos.Add(nome, campo);<br />
}<br />
static bool campoExiste(string nomeDoCampo)<br />
{<br />
foreach (DictionaryEntry entrada in campos)<br />
{<br />
if (entrada.Key.ToString().ToUpper().Equals(nomeDoCampo.ToUpper()))<br />
return true;<br />
}<br />
return false;<br />
}</span></span></p>
<p class="western" lang="pt-PT"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Veja o mesmo exemplo onde a variável campos é um dicionário Case-Insensitive</span></span></p>
<p class="western" style="background:#ffff99 none repeat scroll 0;page-break-before:auto;"><span style="font-family:Courier New,monospace;"><span style="font-size:small;">static Hashtable camposInsensitive = CollectionsUtil.CreateCaseInsensitiveHashtable();<br />
static void insiraCampoCaseInsensitive(string nome, object campo)<br />
{<br />
if (!campos.ContainsKey(nome))<br />
campos.Add(nome, campo);<br />
}<br />
/*<br />
O método campoExiste(string nomeDoCampo) não é mais necessário, basta invocar campos.ContainsKey(nomeDoCampo) para obter o resultado.<br />
*/</span></span></p>
<p class="western" lang="pt-PT" align="justify"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">O ganho não é apenas na menor quantidade de linhas de código e de um melhor aproveitamento da API .NET, uma das principais vantagens é também o desempenho.</span></span></p>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Vejam abaixo as diferenças entre os tempos de inserção usando as duas formas:</span></span></p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<col width="27*"></col>
<col width="97*"></col>
<col width="30*"></col>
<col width="26*"></col>
<col width="39*"></col>
<col width="36*"></col>
<tbody>
<tr valign="top">
<td colspan="2" width="48%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;"><strong>Quantidade 			de Itens Inseridos</strong></span></span></p>
</td>
<td width="12%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">100</span></span></p>
</td>
<td width="10%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">1000</span></span></p>
</td>
<td width="15%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">5000</span></span></p>
</td>
<td width="14%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">10000</span></span></p>
</td>
</tr>
<tr valign="top">
<td width="10%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;"><strong>Tempo</strong></span></span></p>
</td>
<td width="38%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;"><strong>Hashtable 			normal (ms)</strong></span></span></p>
</td>
<td width="12%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">156250 </span></span></p>
</td>
<td width="10%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">650000</span></span></p>
</td>
<td width="15%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">196093750 </span></span></p>
</td>
<td width="14%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">930468750</span></span></p>
</td>
</tr>
<tr valign="top">
<td width="10%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;"><strong>Tempo </strong></span></span></p>
</td>
<td width="38%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;"><strong>Hashtable 			Case-Insensitive(ms) </strong></span></span></p>
</td>
<td width="12%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">0</span></span></p>
</td>
<td width="10%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">0</span></span></p>
</td>
<td width="15%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">0</span></span></p>
</td>
<td width="14%">
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">312500</span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Baixe o código de testes <a title="Código Fonte do Teste" href="http://estudosdotnet.googlecode.com/files/TestesDicionarioCaseInsensitive.zip">clicando aqui</a>.</span></span></p>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Configurações da máquina de Testes:</span></span></p>
<ul>
<li>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">1.75 	GB de Memória RAM</span></span></p>
</li>
<li>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Processador 	AMD Athlon 64 x2 &#8211; Dual Core Processor TK-53</span></span></p>
</li>
</ul>
<p class="western" style="background:#ffff99 none repeat scroll 0;"><span style="font-family:Courier New,monospace;"><span style="font-size:small;"><br />
// Forma padrão de se criar um Hashtable Case Insensitive<br />
Hashtable insensitive = <strong>CollectionsUtil.CreateCaseInsensitiveHashtable()</strong>;<br />
/*<br />
Criação de um Hashtable Case Insensitive informando o número máximo de  entradas que o objeto suporta.<br />
*/<br />
Hashtable insensitive2 = <strong>CollectionsUtil.CreateCaseInsensitiveHashtable(1000)</strong>;<br />
/*<br />
Criação de um Hashtable Case Insensitive baseado em um Dicionário existente<br />
o dicionário recebido com argumento é não-genérico, mas caso deseje realizar essa operação com um dicionário genérico basta fazer o cast que funcionará corretamente.<br />
*/<br />
IDictionary&lt;object, string&gt; dicionario = new Dictionary&lt;object, string&gt;();<br />
dicionario.Add(&#8220;chave01&#8243;, &#8220;Qualquer coisa&#8221;);<br />
dicionario.Add(&#8220;Chave01&#8243;, &#8220;Outra Coisa&#8221;);<br />
dicionario.Add(&#8220;chave02&#8243;, &#8220;Qualquer coisa denovo&#8221;);<br />
dicionario.Add(&#8220;Chave02&#8243;, &#8220;Mais uma coisa&#8221;);<br />
// Dispara um ArgumentException<br />
Hashtable insensitive3 = <strong>CollectionsUtil.CreateCaseInsensitiveHashtable(dicionario as IDictionary)</strong>;</span></span></p>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">No próximo post irei falar um pouco sobre a manipulação Case-Insensitive de outros tipos de Coleções.</span></span></p>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Espero ter contribuído, e fiquem a vontade para comentar e questionar sobre este <span>post</span>!</span></span></p>
<p class="western"><span style="font-family:Arial,sans-serif;"><span style="font-size:small;">Abraços</span></span></p>
<p class="western" style="margin-bottom:0;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fredpolicarpo.wordpress.com/21/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fredpolicarpo.wordpress.com/21/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredpolicarpo.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredpolicarpo.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredpolicarpo.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredpolicarpo.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredpolicarpo.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredpolicarpo.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredpolicarpo.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredpolicarpo.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredpolicarpo.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredpolicarpo.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fredpolicarpo.wordpress.com&blog=3573602&post=21&subd=fredpolicarpo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fredpolicarpo.wordpress.com/2008/04/28/colecoes-case-insensitive-parte-01-dicionarios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/95e186154ae6a4d8ee7dd6a170908784?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredpolicarpo</media:title>
		</media:content>

		<media:content url="http://fredpolicarpo.files.wordpress.com/2008/04/duvida.jpg" medium="image">
			<media:title type="html">Como usar dicionários Case-Insensitive</media:title>
		</media:content>
	</item>
	</channel>
</rss>