<?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/"
	>

<channel>
	<title>Flávio Silveira &#187; Programação em geral</title>
	<atom:link href="http://flaviosilveira.com/tag/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://flaviosilveira.com</link>
	<description>Programação &#38; Desenvolvimento</description>
	<lastBuildDate>Sun, 23 May 2010 01:33:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Formatando CPF no SQL com Expressões Regulares &#8211; RegexReplace</title>
		<link>http://flaviosilveira.com/2010/formatando-cpf-no-sql-com-expressoes-regulares-regexreplace/</link>
		<comments>http://flaviosilveira.com/2010/formatando-cpf-no-sql-com-expressoes-regulares-regexreplace/#comments</comments>
		<pubDate>Fri, 21 May 2010 15:22:32 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Programação SQL]]></category>
		<category><![CDATA[Programação em geral]]></category>
		<category><![CDATA[Regex Replace]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://flaviosilveira.com/?p=209</guid>
		<description><![CDATA[Que as expressões regulares são bacanas e divertidas todo mundo já sabe.
Elas estão presentes em várias linguagens e no SQL Server não poderia ser diferente.
Se você é programador e ainda não sabe sobre as expressões regulares, não perca tempo.
Você precisa se emocionar com o uso delas em seus códigos.
Consulte os links abaixo para iniciar já [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/tratando-cpf-cnpj-primeiro-nome-e-data-pelo-sql-postgre/' rel='bookmark' title='Permanent Link: Tratando CPF, CNPJ, Primeiro nome e Data pelo SQL (Postgre)'>Tratando CPF, CNPJ, Primeiro nome e Data pelo SQL (Postgre)</a></li>
<li><a href='http://flaviosilveira.com/2009/funcao-para-contar-palavras-padrao-de-caracteres-em-uma-string-microsoft-sql-server/' rel='bookmark' title='Permanent Link: Função para contar Palavras (Padrão de caracteres) em uma String Microsoft SQL Server'>Função para contar Palavras (Padrão de caracteres) em uma String Microsoft SQL Server</a></li>
<li><a href='http://flaviosilveira.com/2009/limitando-o-select-do-sql-em-diferentes-bancos-de-dados/' rel='bookmark' title='Permanent Link: Limitando o SELECT do SQL em diferentes Bancos de Dados'>Limitando o SELECT do SQL em diferentes Bancos de Dados</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Que as expressões regulares são bacanas e divertidas todo mundo já sabe.<br />
Elas estão presentes em várias linguagens e no SQL Server não poderia ser diferente.</p>
<p>Se você é programador e ainda não sabe sobre as expressões regulares, não perca tempo.<br />
Você precisa se emocionar com o uso delas em seus códigos.</p>
<p>Consulte os links abaixo para iniciar já esse aprendizado:<br />
Wikipedia &#8211; <a href="http://pt.wikipedia.org/wiki/Express%C3%A3o_regular">http://pt.wikipedia.org/wiki/Express%C3%A3o_regular</a><br />
Um excelente tutorial para começar do Rafael Jaques- <a href="http://www.phpit.com.br/artigos/entendendo-as-expressoes-regulares.phpit">http://www.phpit.com.br/artigos/entendendo-as-expressoes-regulares.phpit</a><br />
Aurélio Marinho Jargas &#8211; O guru das expressões regulares &#8211; <a href="http://aurelio.net/er/">http://aurelio.net/er/</a></p>
<p>Certo mas e o SQL Server ? Vamos voltar para ele..</p>
<p>Em um post antigo eu mostro como fazer a formatação de campos como CPF direto pelo SQL.</p>
<p>Mas digamos que alguns campos do CPF estejam com formatação correta com pontuação e dígitos e outras não.<br />
E ainda outras mais ou menos. Ex: <em>161.364.708-53, 16136470853, 161364708-53</em>.<br />
Você tem um problema e nesse caso um SubString não iria funcionar corretamente.</p>
<p>Solução? RegexReplace. Vamos ver como usar isso.<br />
<span id="more-209"></span><br />
Primeiro vamos montar a expressão regular.<br />
Vamos montar ela de maneira clara pensando apenas em como o CPF tem de ser exibido.<br />
Não vamos pensar no cálculo do dígito verificador nem nada desse tipo.</p>
<p>Bom o que queremos ?</p>
<ul>
<li>3 números seguidos de um ponto. Vamos lembrar que esse ponto pode existir ou não. Não sabemos como o dado foi salvo no banco.</li>
<li>Mais 3 números seguidos de outro ponto. Novamente não sabemos se esse ponto estará presente ou não.</li>
<li>Precisamos agora de 3 números seguidos por um hífen, que também não temos certeza se estará lá ou não.</li>
<li>Para fechar, dois números.</li>
</ul>
<p>Legal! Já sabemos o que queremos vamos agora começar a brincadeira.</p>
<p>Não vou explicar aqui cada operador e caracter. Isso é demorado e também não é meu objetivo aqui.<br />
Para começar com Expressões Regulares consulte os links que passei logo no início desse post.</p>
<p>Para trazer numerais na expressão regular usamos o seguinte</p>
<pre class="brush: bash;">
[0-9]
</pre>
<p>Mas isso vai me trazer apenas um numero, mas na verdade queremos 3 então fazemos da seguinte maneira</p>
<pre class="brush: bash;">
[0-9]{3}
</pre>
<p>Se você quisesse 2 números, bastava substituir o 3 pelo 2.</p>
<p>Legal, para pegar os números já temos todas as armas na mão.<br />
E agora os caracteres, o ponto e o hífen opcionais ??<br />
Vamos lá&#8230;</p>
<p>O ponto é um operador em expressão regular e não é o operador que vai trazer o que queremos.<br />
Nós precisamos de um ponto literalmente.<br />
Para isso vamos escapar o ponto, assim como escapamos aspas ou caracteres especiais em programação.<br />
Ficando assim:</p>
<pre class="brush: php;">
\\.
/*Desconsidere umas das barras, acima
coloquei duas por conta do plugin de sintaxe do wordpress.*/
</pre>
<p>Agora para deixar isso opcional, basta colocar uma interrogação depois disso.</p>
<pre class="brush: bash;">
\.?
</pre>
<p>Para o hífen, não é obrigatório escapar pois ele não é um operador em expressões regulares.<br />
Entretanto eu gosto de escapar ele. Para mim facilita a leitura.</p>
<pre class="brush: bash;">
\-?
</pre>
<p>Certo. Temos como pegar os numerais, como pegar hífen e pontos. Agora é juntar tudo.<br />
Vamos usar parênteses para deixar tudo organizado e também para facilitar a nossa formatação mais para frente.</p>
<pre class="brush: bash;">
^([0-9]{3})\.?([0-9]{3})\.?([0-9]{3})\-?([0-9]{2})$
</pre>
<p>Repare que coloquei um circunflexo(<em>^</em>) no início da expressão e um cifrão(<em>$</em>) no final.<br />
Isso indica que a String tem que ter um começo e um fim.<br />
Caso não tivesse isso poderia haver qualquer caractere antes ou depois do CPF.</p>
<p>Vejamos por partes então:</p>
<ul>
<li>^ &#8211; Inicia a string</li>
<li>([0-9]{3}) &#8211; 3 números</li>
<li>\.? &#8211; Um ponto, que pode ter ou não, por isso a interrogação.</li>
<li>([0-9]{3}) &#8211; Novamente 3 números</li>
<li>\.? &#8211; Mais um ponto, que pode ter ou não.</li>
<li>([0-9]{3}) &#8211; Mais 3 números</li>
<li>\-? &#8211; Um hífen, que pode ter ou não. Não é obrigatório o escape nele.</li>
<li>([0-9]{2}) &#8211; Dois números.</li>
<li>$ &#8211; Finaliza a String.</li>
</ul>
<p>Agora vamos para a segunda parte, o RegexReplace do Sql Server.</p>
<p>A função RegexReplace tem 3 parâmetros obrigatórios.<br />
O primeiro é o seu campo, CPF nesse caso. O Segundo a expressão regular, e o terceiro o como queremos exibir.</p>
<p>Os dois primeiros parâmetros já temos.<br />
Para o modo de exibição funciona da seguinte forma.<br />
Quando usamos os parênteses em nossa expressão regular, elas se tornam variáveis que resgatamos com um cifrão e a ordem em que ela aparece na expressão. Então o primeiro parênteses seria o $1, o segundo o $2 e assim por diante.</p>
<p>Agora é só montar a função no Select.<br />
Ficando assim.</p>
<pre class="brush: sql;">
Select dbo.RegexReplace('161364.70853',
'^([0-9]{3})\.?([0-9]{3})\.?([0-9]{3})\-?([0-9]{2})',
'$1.$2.$3-$4')
</pre>
<p>Entre as variáveis você pode colocar os caracteres para exibição como pontos, hífens, underline e qualquer coisa que queira.</p>
<p>Reparem que coloquei o CPF no primeiro parâmetro da função formatado de maneira errada propositalmente.<br />
Experimente modificar essa formatação, deixar só os números, só os pontos, enfim&#8230;<br />
Modifique também a exibição da formatação para ver o funcionamento.</p>
<p>É isso galera.</p>
<p>Agradeço ao meu grande brother Anderson Orso por me mostrar possível aprender expressões regulares facilmente.</p>
<p>Espero que tenham curtido.<br />
Qualquer dúvida só mandar.</p>
<p>Abraços!!</p>
<p><strong>UPDATE &#8211; 22 de maio</strong></p>
<p>Fala pessoal,<br />
não me dei conta ontem que esqueci um detalhe importantíssimo de todo essa papo aqui.</p>
<p>O RegexReplace e outras funções similares não são nativas no SQL Server ao contrário de outros bancos de dados. Para ter isso disponível nos seus Selects, Updates e etc, você deve compilar um assembly .NET e subir para o banco.</p>
<p>O código para compilar você pode <a title="User Defined Functions" href="http://flaviosilveira.com/wp-content/UserDefinedFunctions.cs.rar">baixar aqui</a>.<br />
Mais detalhes de como fazer e usar tudo isso você encontra <a href="http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html">nesse link</a>.</p>
<p>Abraço!</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/tratando-cpf-cnpj-primeiro-nome-e-data-pelo-sql-postgre/' rel='bookmark' title='Permanent Link: Tratando CPF, CNPJ, Primeiro nome e Data pelo SQL (Postgre)'>Tratando CPF, CNPJ, Primeiro nome e Data pelo SQL (Postgre)</a></li>
<li><a href='http://flaviosilveira.com/2009/funcao-para-contar-palavras-padrao-de-caracteres-em-uma-string-microsoft-sql-server/' rel='bookmark' title='Permanent Link: Função para contar Palavras (Padrão de caracteres) em uma String Microsoft SQL Server'>Função para contar Palavras (Padrão de caracteres) em uma String Microsoft SQL Server</a></li>
<li><a href='http://flaviosilveira.com/2009/limitando-o-select-do-sql-em-diferentes-bancos-de-dados/' rel='bookmark' title='Permanent Link: Limitando o SELECT do SQL em diferentes Bancos de Dados'>Limitando o SELECT do SQL em diferentes Bancos de Dados</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2010/formatando-cpf-no-sql-com-expressoes-regulares-regexreplace/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox ajudando no seu dia de trabalho&#8230;</title>
		<link>http://flaviosilveira.com/2009/firefox-ajudando-no-seu-dia-de-trabalho/</link>
		<comments>http://flaviosilveira.com/2009/firefox-ajudando-no-seu-dia-de-trabalho/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 03:05:14 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Programação em geral]]></category>
		<category><![CDATA[add-ons]]></category>
		<category><![CDATA[complementos]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[mozilla firefox]]></category>

		<guid isPermaLink="false">http://www.flaviosilveira.com/?p=22</guid>
		<description><![CDATA[Fui à casa do meu amigo Jean há alguns dias, ajudar com algumas soluções de programação para o seu site. E no vai e vem da programação comecei a apresentar e adicionar umas ferramentas no firefox dele. Ele ficou completamente maravilhado com a coisa toda, e isso me deixou pensando. Porra! A galera que está [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/redirecionando-para-versao-mobil/' rel='bookmark' title='Permanent Link: Redirecionando usuários do IPhone para a versão mobile do seu site &#8211; JavaScript'>Redirecionando usuários do IPhone para a versão mobile do seu site &#8211; JavaScript</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Fui à casa do meu amigo Jean há alguns dias, ajudar com algumas soluções de programação para o seu site. E no vai e vem da programação comecei a apresentar e adicionar umas ferramentas no firefox dele. Ele ficou completamente maravilhado com a coisa toda, e isso me deixou pensando. Porra! A galera que está começando ou quem já programa e não conheçe, precisa saber dessas ferramentas.  <strong></strong></p>
<p><strong>Muitas vezes algumas coisas por serem tão naturais para nós, faz parecer que todo mundo conhece aquilo.</strong></p>
<p>A maioria de programadores e desenvolvedores gostam de Firefox, fato!<br />
Talvez em primeiro lugar para ir de encontro com a Microsoft. Segundo porque o Firefox geralmente obedece o que está no seu código, e terceiro, porque ele ajuda muito quando você tem umas ferramentas bacanas adicionadas a ele.</p>
<p>Para adionar complementos no seu firefox duas opções:<br />
- Você pode ir no Menu: <em>Ferramentas &gt;&gt; Complementos e procurar por ele na aba Adicionar. </em><br />
- Ou ir direto no <a href="https://addons.mozilla.org/pt-BR/firefox/">site de plugins da Mozilla</a>, e baixá-los para sua máquina. Para posteriormente instalar as extensões que você baixou, vá no Menu: <em>Arquivo&gt;&gt;Abrir Arquivo</em>.</p>
<p>Eis alguns complemetos que uso: <span id="more-22"></span><br />
<strong>WEB DEVELOPER</strong></p>
<p>A web developer é uma barra de ferramentas com várias coisas que vão te auxiliar. Logo que você reinicia o firefox após instalar a extensão, ela vem aparecendo abaixo da barra de navegação. <a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post0.jpg"><img class="alignnone size-full wp-image-23" title="post0" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post0.jpg" alt="" width="627" height="79" /></a> Existem muitas coisa legais na web developer onde só mexendo você vai descobrindo. Vou mostrar as que mais uso.  <em><strong></strong></em></p>
<p><em><strong>Cache</strong> </em>- Quem nunca ficou de cara com o cache de browser e aquele alert ou print que não aparecia ? Pois é. Resolva esse problema indo em <em>Disable &gt;&gt; Disable Cache</em>.<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post.jpg"><img class="alignnone size-full wp-image-24" title="post" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post.jpg" alt="" width="149" height="244" /></a><br style='clear: both;'/></p>
<p><em><strong>CSS</strong></em> &#8211; Quer ver como a página que está visitando fica sem o css ? Vá na Aba <em>CSS &gt;&gt; Disable Styles &gt;&gt; All Styles</em><br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post1.jpg"><img class="alignnone size-full wp-image-25" title="post1" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post1.jpg" alt="" width="500" height="163" /></a><br style='clear: both;'/></p>
<p><em><strong>IMAGES</strong> </em>- Quer limpar as imagens do site ? <em>Images&gt;&gt; Disable Images &gt;&gt; All Images</em> <em><strong><br />
INFORMATION</strong></em> &#8211; Quer ver como está a divisão do site ? <em>Information &gt;&gt; Display Block Size </em></p>
<p>São inúmeras coisas que você pode fazer, basta vasculhar a barra. Desabilitar javaScripts e MetaTags, Limpar os cookies ou todos os dados gravados, Manipular a dimensão do browser, Mostrar campos hidden de formulários, Validar css, Validar Html&#8230;</p>
<p>Enjoy Yourself&#8230;Have a fun&#8230;.</p>
<p>Você pode desabilitar a barra caso queira indo no menu do firefox: <em>Exibir &gt;&gt; Barra de ferramentas &gt;&gt; Web Developer &gt;&gt; ToolBar</em></p>
<p><strong>FIREBUG </strong></p>
<p>O firebug é uma ferramenta para facilitar o debug de scripts e códigos web em geral.<br />
Após instalar essa extensão e reiniciar o seu Firefox, Você vê uma pequena barata no canto inferior direito, ao clicar nela um painel se abre.<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post2.jpg"><img class="alignnone size-full wp-image-26" title="post2" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post2.jpg" alt="" width="604" height="201" /></a><br style='clear: both;'/></p>
<p>Logo ao lado do ícone da barata no painel, você tem a ferramenta Inspecionar. Com ela você pode achar Objetos Html facilmente pelos sites.<br />
Basta clicar em inspecionar e depois partir para cima do site. Experimente!</p>
<p>Abaixo, no console, geralmente aparecem os erros de javaScript, e você também pode ver algumas informações quando está trabalhando com ajax.<br />
Veja abaixo um exemplo de retorno via ajax de uma consulta no banco aparecendo no console&#8230;<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post4.jpg"><img class="alignnone size-full wp-image-27" title="post4" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post4.jpg" alt="" width="632" height="121" /></a><br style='clear: both;'/></p>
<p>Na aba HTML, você pode editar  o html e o css, fazendo assim uma prévia do que você precisa alterar nos seus arquivos para deixar as coisas como você quer.<br />
No exemplo abaixo adicionei a cor vermelha no body do google pelo firebug.<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post5.jpg"><img class="alignnone size-full wp-image-28" title="post5" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post5.jpg" alt="" width="636" height="233" /></a><br style='clear: both;'/></p>
<p>O resultado<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post6.jpg"><img class="alignnone size-medium wp-image-29" title="post6" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post6-300x173.jpg" alt="" width="300" height="173" /></a><br style='clear: both;'/></p>
<p>Descubra as maravilhas do Firebug, onde por exemplo, você pode ver um mapa completo dos elementos HTML para pegá-los via JavaScript na Aba DOM</p>
<p>Para finalizar duas extensões simples e fáceis de usar.</p>
<p><strong>MEASURE IT </strong></p>
<p>A measure It é uma régua, que ajuda quando você quer medir espaçamentos ou coisas do gênero.<br />
Logo após instalar, ela aparece no canto inferior esquerdo. Basta Clicar e usar.</p>
<p><a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post7.jpg"><img class="alignnone size-full wp-image-30" title="post7" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post7.jpg" alt="" width="197" height="214" /></a> <strong></strong><br style='clear: both;'/></p>
<p><strong>COLORZILLA</strong></p>
<p>A colorzilla funciona meio que da mesma maneira. Ela serve para caçar o RGB ou o Hexadecimal daquelas cores que você gostou internet a fora.<br />
Ela também aparece no canto inferior esquerdo após ser instalada.</p>
<p>Clique na ferramenta. Clica na cor que você quer. Depois selecione uma das opções no painel da ferramenta, clicando com o botão de opções do mouse (vulgo botão direito) no ícone dela.<br />
<a href="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post8.jpg"><img class="alignnone size-full wp-image-31" title="post8" src="http://www.flaviosilveira.com/wp-content/uploads/2009/01/post8.jpg" alt="" width="207" height="141" /></a><br style='clear: both;'/></p>
<p><strong>DICA</strong></p>
<p>Essas duas últimas extensões, a measure It e a ColorZilla, eu usei muito quando transformava PSD&#8217;s em HTML e CSS.<br />
Eu exportava um arquivo JPG do Photoshop. Abria com o Firefox. E então media os containers e pegava as cores certinhas do Layout.</p>
<p><strong>CONCLUSÃO</strong><br />
Esses são os Complementos do Firefox que mais uso para programar, debugar e desenvolver.<br />
Claro, não listei aqui tudo que se pode fazer com elas, cabe a você ir experimentando e estudando.</p>
<p>Alguns outros Browsers também disponibilizam complementos, alguns que até são similares aos vistos aqui, dê uma pesquisada.</p>
<p>Hoje é isso.<br />
Valeu !<br />
Até mais !<br />
Qualquer coisa estamos na área !</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/redirecionando-para-versao-mobil/' rel='bookmark' title='Permanent Link: Redirecionando usuários do IPhone para a versão mobile do seu site &#8211; JavaScript'>Redirecionando usuários do IPhone para a versão mobile do seu site &#8211; JavaScript</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2009/firefox-ajudando-no-seu-dia-de-trabalho/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
