<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1670392906171868672</id><updated>2012-02-16T10:46:24.800-08:00</updated><category term='microsoft'/><category term='administração'/><category term='tecnologia'/><category term='primeiro post'/><category term='ms'/><category term='sqlexpress'/><category term='sql'/><category term='programação'/><title type='text'>Elton José</title><subtitle type='html'>Seja bem vindo ao meu blog.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1670392906171868672.post-8219568008955447726</id><published>2009-11-30T15:04:00.000-08:00</published><updated>2009-11-30T15:06:25.063-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='administração'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlexpress'/><category scheme='http://www.blogger.com/atom/ns#' term='ms'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Criar usuário no SQLEXPRESS</title><content type='html'>&lt;p class="style6"&gt;No prompt de comando digite:&lt;br /&gt;&lt;/p&gt; &lt;p class="style5"&gt;SQLCMD -S.\SQLEXPRESS -E&lt;/p&gt; &lt;p class="style5"&gt;sp_addLogin ‘username’, ‘pass’&lt;br /&gt;GO&lt;br /&gt;sp_addsrvrolemember ‘username’, ’sysadmin’&lt;br /&gt;GO&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1670392906171868672-8219568008955447726?l=diario.eltonjose.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/8219568008955447726/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://diario.eltonjose.com.br/2009/11/criar-usuario-no-sqlexpress.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/8219568008955447726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/8219568008955447726'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/2009/11/criar-usuario-no-sqlexpress.html' title='Criar usuário no SQLEXPRESS'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1670392906171868672.post-4488437734336095156</id><published>2009-09-22T10:55:00.000-07:00</published><updated>2009-09-22T19:21:07.999-07:00</updated><title type='text'>Escrevendo uma expressão regular</title><content type='html'>&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;O que é &lt;/span&gt;&lt;/span&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;em&gt;&lt;strong&gt; expressão regular?&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Uma expressão regular é um padrão que pode combinar vários strings de texto, usado para validações.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;em&gt;&lt;strong&gt;Onde e quando usar a expressão regular?&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Pode ser usado em linguagens de programação que suporta ou tem a classe de expressões regulares ou que aceite de terceiros que suporta bibliotecas de expressões regulares.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; As expressões regulares podem ser usadas para diferentes tipos de dados, sem aumentar o código com as condições do caso.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Sendo que uma série de condições,  pode ser omitido, com uma única linha de verificação de expressão regular.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;em&gt;&lt;strong&gt;Benefícios de expressão regular:&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Apenas alguns benefícios &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; do uso de expressões regulares.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;a) O&lt;/span&gt; código pode ser reduzido.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;b) A&lt;/span&gt; velocidade de codificação.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;c) Fácil manutenção (não é necessário alterar os critérios de validação se as alterações, basta verificar a seqüência de expressão regular).&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;d)&lt;/span&gt; Fácil de entender (você não precisa entender a lógica do programador se em grandes declarações e demonstrações de casos).&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;em&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;em&gt;&lt;strong&gt;Elementos de expressão regular:&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;Aqui estão os elementos básicos de caracteres de expressão regular / literais, que pode ser usado para construir grandes expressões regulares:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;^ ----&gt; Inicio da sequência.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$ ----&gt;&lt;/span&gt; Fim da sequência.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; ----&gt; Qualquer caractere (exceto \n "nova linha")&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;{...}&lt;/span&gt; ----&gt; Notação explícita de quantidade.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;[...] ----&gt; &lt;/span&gt;Conjunto de caracteres explícita com combinação.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;(...) ----&gt;&lt;/span&gt; Agrupamento lógico de uma parte de uma expressão.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;* ----&gt; &lt;/span&gt;0 ou mais da expressão anterior.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;+ ----&gt;&lt;/span&gt; 1 ou mais da expressão anterior.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;?&lt;/span&gt; ?&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;----&gt;&lt;/span&gt; 0 ou 1 da expressão anterior, correspondência mínima quando uma expressão pode combinar várias strings dentro de uma seqüência de pesquisa.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\ ----&gt;&lt;/span&gt; Colocando antes de algumas  strings citadas  acima, torna-se um literal em vez de um carácter especial.&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Precedendo uma combinação de caracteres especiais, veja abaixo.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\w ----&gt; &lt;/span&gt;corresponde a qualquer carácter de palavra, equivalente a [a-zA-Z0-9]&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\W ----&gt;&lt;/span&gt; corresponde a qualquer caractere que não seja palavra, equivalente a [^ a-zA-Z0-9].&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\s ----&gt; &lt;/span&gt;corresponde a qualquer caractere espaço em branco, equivalente a &lt;/span&gt;[\f\n\r\v]&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\S----&gt; &lt;/span&gt;encontrados quaisquer caracteres não-espaço em branco, o que equivale a [^ &lt;/span&gt;\f\n\r\v&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\d ----&gt; &lt;/span&gt;corresponde a qualquer dígitos decimais, equivalente a [0-9]&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\D----&gt;&lt;/span&gt; encontrados quaisquer caracteres não dígitos, equivalente a [^ 0-9]&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\a ----&gt; &lt;/span&gt;um Corresponde a um sino (alarme) \ u0007.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\b ----&gt; &lt;/span&gt;Corresponde a um &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;backspace &lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;\ u0008 &lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\t ----&gt;&lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Corresponde &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;a uma &lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;tabulação &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\u0009.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\r ----&gt;&lt;/span&gt; Corresponde a um retorno \ u000D.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\v ----&gt;&lt;/span&gt; Corresponde a uma &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;tabulação &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; vertical \ u000B.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\f ----&gt;&lt;/span&gt; Corresponde a uma alimentação de formulário \ u000C.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\n ----&gt;&lt;/span&gt; Resultados de uma nova linha \ u000A.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;\e ----&gt;&lt;/span&gt; Resultados e um escape \ u001B&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$number ----&gt; &lt;/span&gt; substitui a última subseqüência pareados por número de grupo (número decimal).&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;${name} ----&gt;&lt;/span&gt; substitui a última subseqüência acompanhado por um (?&lt;/span&gt;  &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;) group.&lt;/span&gt; ) Do grupo.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$$ ----&gt; &lt;/span&gt; Substitui um único "$" literal.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$&amp;amp; ----&gt; &lt;/span&gt; Substitui uma cópia.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$` ----&gt; &lt;/span&gt;Substitui todo o texto da seqüência de entrada antes do processo.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$' ----&gt;&lt;/span&gt; Substitui todo o texto da seqüência de entrada após o &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;processo&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$+ ----&gt; &lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Substitui &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;último grupo capturado.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$_ ----&gt; &lt;/span&gt; &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Substitui &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;da cadeia de entrada.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;(?(expression)yes|no) ----&gt; &lt;/span&gt;Condição de verdadeiro ou falso.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;Exemplo simples:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;&lt;br /&gt;Vamos começar com pequeno exemplo, valores inteiros, tendo:&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Quando falamos de números, ele tem sempre tem uma série fixa, ou seja, 0 a 9 e, vamos utilizar esta regra para escrever essa expressão regular em etapas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;a) &lt;/span&gt;uma expressão regular começa com "^"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;b) &lt;/span&gt; Como estamos usando o conjunto de caracteres para ser validado, nós podemos usar [].&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;c) &lt;/span&gt;Assim, a expressão é "^ [1234567890]&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;d) &lt;/span&gt;Como a série é continua, podemos colocar "-" o que nos dá para reduzir o comprimento da expressão.&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; Ele se torna "^ [0-9]"&lt;/span&gt;.&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;e) &lt;/span&gt;Isto irá funcionar apenas para um dígito e  para torná-lo com n dígitos, podemos usar "*", &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;a expressão &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;agora  se torna  "^ [0-9] *"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;f) &lt;/span&gt;Para finalizar a expressão deve colocar "$", assim a expressão final se torna "^ [0-9] * $"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt; &lt;em&gt;Nota: As&lt;/em&gt; aspas não fazem parte da expressão, eu usei-o apenas para diferenciar entre as frases.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Uma maneira mais genérica  para escrever:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Esta é uma da maneira que você pode escrever em função das necessidades e das competências pessoais, ela poderia ser comprimida, por exemplo, a expressão acima poderia ser reduzida.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;a) &lt;/span&gt;Uma expressão regular começa com "^"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;b) &lt;/span&gt;Como estamos verificando os números, há um carácter especial para verificar dígitos "\ d"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;c) &lt;/span&gt;e para colocarmos vários dígitos, utilizamos "*"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;d) &lt;/span&gt;Como expressão termina com "$", a expressão final será regular&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;"^\d*$&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Dígitos pode ser validado com diferentes formas de expressões regulares:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;1) ^[1234567890]*$&lt;/span&gt; 1) ^ [1234567890] * $&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;2) ^[0-9]*$&lt;/span&gt; 2) ^ [0-9] * $&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;3) ^\d*$&lt;/span&gt; 3) ^ \ d * $&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;&lt;em&gt;Qual escolher?&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Cada uma das expressões acima irá funcionar da mesma forma, escolha a  melhor para você, é sempre recomendável ter um menor e auto expressiva e compreensível.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;Exemplo de excluir opções:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Há muitas situações que nos exige a excluir apenas determinada parcela ou determinados caracteres,&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Ex.:&lt;br /&gt;a) Pegar todas os alfanuméricos e símbolos especiais, exceto "&amp;amp;"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;b) &lt;/span&gt;Pegar todos os dígitos, exceto "7"&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Então não podemos preparar uma grande lista que inclui todos e excluir os caracteres/símbolos que precisam ser validados.&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Ex.: "^ w \ [^&amp;amp;]*$" é a solução a tomar todas as alfa numérico e símbolos especiais, exceto" &amp;amp; ".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;&lt;em&gt;Outros exemplos:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; a) O "1" não pode ser o primeiro dígito.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;"^[^1]\d*$"&lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; Isso vai excluir 1 como primeiro dígito.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;b)&lt;/span&gt; Não pode conter "1". &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;"^\d[^1]*$ &lt;/span&gt;&lt;/span&gt;" &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Isso vai excluir a 1, em qualquer lugar na seqüência.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt; &lt;em&gt;Nota:&lt;/em&gt; Aqui ^ operador é usado não só para iniciar a seqüência, mas também usado para negar os valores.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;A verificação on-line:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;  &lt;/span&gt;Use o link abaixo para teste on-line&lt;/span&gt; sua expressão&lt;br /&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://www.regexplib.com/RETester.aspx&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhg_FzhQwiJkFq0SfpmGX7bD_4TOcw"&gt;&lt;br /&gt;&lt;/a&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://www.regexplib.com/RETester.aspx&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhg_FzhQwiJkFq0SfpmGX7bD_4TOcw"&gt;http://www.regexplib.com/RETester.aspx&lt;/a&gt;&lt;/span&gt; &lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://www.regexplib.com/RETester.aspx&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhg_FzhQwiJkFq0SfpmGX7bD_4TOcw"&gt;http://www.regexplib.com/RETester.aspx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;MAIS INFORMAÇÕES:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Você pode encontrar mais informações sobre &lt;/span&gt;o assunto nos links abaixo:&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterescapes.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhg1seR-x8MV5SjUTikk3vosA7lFeg"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterescapes.asp&lt;/a&gt;&lt;/span&gt; &lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterescapes.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhg1seR-x8MV5SjUTikk3vosA7lFeg"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterescapes.asp&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterclasses.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhjJMT-N5vXY7Udx_ompgH300Plfkw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterclasses.asp&lt;/a&gt;&lt;/span&gt; &lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterclasses.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhjJMT-N5vXY7Udx_ompgH300Plfkw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterclasses.asp&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpcongroupingconstructs.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhiRMJSTUVdYIkO09WOhWp1sK94HDw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpcongroupingconstructs.asp&lt;/a&gt;&lt;/span&gt; &lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpcongroupingconstructs.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhiRMJSTUVdYIkO09WOhWp1sK94HDw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpcongroupingconstructs.asp&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterclasses.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhjJMT-N5vXY7Udx_ompgH300Plfkw"&gt;&lt;br /&gt;&lt;/a&gt; &lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterclasses.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhjJMT-N5vXY7Udx_ompgH300Plfkw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterclasses.asp&lt;/a&gt;&lt;/span&gt; &lt;a href="http://74.125.65.132/translate_c?hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=pt&amp;amp;u=http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/cpgenref/html/cpconcharacterclasses.asp&amp;amp;rurl=translate.google.com.br&amp;amp;usg=ALkJrhjJMT-N5vXY7Udx_ompgH300Plfkw"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcharacterclasses.asp&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1670392906171868672-4488437734336095156?l=diario.eltonjose.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/4488437734336095156/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://diario.eltonjose.com.br/2009/09/escrevendo-uma-expressao-regular.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/4488437734336095156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/4488437734336095156'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/2009/09/escrevendo-uma-expressao-regular.html' title='Escrevendo uma expressão regular'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1670392906171868672.post-8051663400448478227</id><published>2009-09-20T08:05:00.001-07:00</published><updated>2009-09-20T08:05:58.174-07:00</updated><title type='text'>Criando Sessão no C#</title><content type='html'>Session em C#&lt;br /&gt;Abaixo, dicas de como trabalhar com Sessions em C#&lt;br /&gt;&lt;br /&gt;Criando uma Session:&lt;br /&gt;&lt;br /&gt; Session["nomeSession"] = "valorSession"; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lendo uma Session:&lt;br /&gt;&lt;br /&gt; String strValorSession = Session["nomeSession"]; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Imprimindo o Timeout da Session:&lt;br /&gt;&lt;br /&gt; Response.Write(Session.Timeout.ToString()); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Definindo o Timeout:&lt;br /&gt;&lt;br /&gt; Session.Timeout = 5; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Removendo:&lt;br /&gt;&lt;br /&gt; Session.Remove("nomeSession");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1670392906171868672-8051663400448478227?l=diario.eltonjose.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/8051663400448478227/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://diario.eltonjose.com.br/2009/09/criando-sessao-no-c.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/8051663400448478227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/8051663400448478227'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/2009/09/criando-sessao-no-c.html' title='Criando Sessão no C#'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1670392906171868672.post-2929940986724803859</id><published>2009-09-12T04:27:00.000-07:00</published><updated>2009-09-12T05:40:34.402-07:00</updated><title type='text'>Montando servidor Subversion no Windows - Parte I</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&lt;h3 style="font-family: times new roman;"&gt;Meta&lt;/h3&gt;&lt;br /&gt;&lt;p style="font-family: times new roman;"&gt;Criar um servidor de controle de versões para uso local e na internet.&lt;/p&gt;&lt;br /&gt;&lt;h3 style="font-family: times new roman;"&gt;O que vamos precisar &lt;/h3&gt;&lt;br /&gt;&lt;ol style="font-family: times new roman;"&gt;&lt;br /&gt;  &lt;li&gt;Apache HTTP Server (&lt;a onClick="javascript:pageTracker._trackPageview('/outgoing/linorg.usp.br/apache/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi');" href="http://linorg.usp.br/apache/httpd/binaries/win32/"&gt;download&lt;/a&gt;) *&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Subversion (&lt;a onClick="javascript:pageTracker._trackPageview('/outgoing/subversion.tigris.org/files/documents/15/36797/svn-1.4.3-setup.exe');" href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100"&gt;download&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;TortoiseSVN (&lt;a onClick="javascript:pageTracker._trackPageview('/outgoing/prdownloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.4.3.8645-win32-svn-1.4.3.msi?download');" href="http://tortoisesvn.net/downloads"&gt;download&lt;/a&gt;&lt;a onClick="javascript:pageTracker._trackPageview('/outgoing/prdownloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.4.3.8645-x64-svn-1.4.3.msi?download');" href="http://prdownloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.4.3.8645-x64-svn-1.4.3.msi?download"&gt;&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;No-IP (&lt;a onClick="javascript:pageTracker._trackPageview('/outgoing/www.no-ip.com/downloads.php?page=win');" target="_blank" href="http://www.no-ip.com/downloads.php?page=win"&gt;download&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;* Eu fiz a instalação com o 2.0, pois o 2.2 tive alguns problemas e ao perdi muito tempo com ele.&lt;/span&gt;&lt;br /&gt;&lt;h3 style="font-family: times new roman;"&gt;Instalação&lt;/h3&gt;&lt;br /&gt;&lt;ul style="font-family: times new roman;"&gt;&lt;br /&gt;  &lt;li&gt;Apache &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;A instalação do apache é bastante simples(next, next, finish). Onde pedir domínios e nome do servidor informe localhost. De preferência para instalá-lo como serviço para garantir que o subversion funcione mesmo sem usuário logado.&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: times new roman;"&gt;&lt;br /&gt;  &lt;li&gt;Subversion &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Aqui há um detalhe muito importante! No final do assistente de instalação do subversion, onde ele pede para criar os atalhos a última opção é para ativar os módulos do svn no apache. Isso facilita bastante as coisas porque alguns módulos possuem dependência e configurar isso na mão pode não ser agradável.&lt;/span&gt; &lt;span style="font-family:times new roman;"&gt;As outras instalações vamos deixar para mais tarde.&lt;/span&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Configuração&lt;/span&gt; &lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Crie um diretório qualquer onde achar melhor para ser o local do seu repositório.&lt;br /&gt;Ex.:  "C:\Svn\NomeDoSeuProjeto" .&lt;br /&gt;Vamos agora n&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;o&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:130%;"  &gt; &lt;span style="font-size:100%;"&gt;prompt de comando do windows&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:times new roman;"&gt; ("&lt;span style="font-style: italic;"&gt;Iniciar &gt; Executar &gt; cmd&lt;/span&gt;") &lt;/span&gt;&lt;/span&gt;e vamos digitar: &lt;code class="source"&gt; &lt;br&gt;&lt;br /&gt;svnadmin create C:\Svn\NomeDoSeuProjeto&lt;/code&gt; &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Crie o documento de configuração "subversion.conf" na raiz do seu  repositório.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Ex.: &lt;span style="font-size:100%;"&gt;&lt;code style="font-family: times new roman;" class="source"&gt;C:\Svn\subversion.conf&lt;/code&gt;&lt;/span&gt; &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Abra o arquivo "subversion.conf" e adicione as seguintes linhas:&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;code class="source"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/code&gt;&lt;/span&gt;&lt;code class="source"&gt;&amp;lt;location NomeDoSeuProjeto&lt;/code&gt;&lt;span style="font-size:100%;"&gt;&lt;code class="source"&gt;&gt;&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  DAV svn&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  SVNPath&lt;br /&gt;  C:/Svn/&lt;/code&gt;&lt;/span&gt;&lt;code class="source"&gt;NomeDoSeuProjeto&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  AuthType Basic&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  AuthName "&lt;/code&gt;&lt;code class="source"&gt;NomeDoSeuProjeto&lt;/code&gt;&lt;code class="source"&gt;"&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  AuthUserFile C:/Svn/svn-auth-file&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  Require valid-user&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  AuthzSVNAccesFile C:/Svn/svn-acl&lt;br&gt;&lt;br /&gt;  &lt;/code&gt;&lt;code class="source"&gt; &amp;lt;/location&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;Localize o arquivo de configurações do apache e insire a linha abaixo no final do arquivo Apache2\conf\httpd.conf: &lt;br&gt;&lt;br /&gt;&lt;code class="source"&gt;Include "C:/Svn/subversion.conf"&lt;/code&gt; &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Via prompt de comando vai até a pasta Apache2\bin e verifique se tem o arquivo htpasswd.exe . Utilizaremos o comando htpasswd para criar usuários e atribuir suas senhas.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Ex.: &lt;code class="source"&gt; htpasswd -cm C:\Svn\svn-auth-file eltonjose&lt;br /&gt;New password: *****&lt;br /&gt; Re-type new password: *****&lt;br /&gt;Adding password for user &lt;span style="font-family:Georgia,serif;"&gt;eltonjose&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Para adicionar outros usuários o procedimento é o mesmo. A única mudança está no parâmetro -c que impõe a criação / substituição do arquivo svn-auth-file. Ou seja, após a primeira execução o comando passa a ser:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code class="source"&gt; htpasswd -m C:\Svn\svn-auth-file jose&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Crie um arquivo com o nome de svn-acl na raiz do seu repositório, C:\Svn, e adicione as seguintes linhas:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code class="source"&gt;[&lt;/code&gt;&lt;code class="source"&gt;NomeDoSeuProjeto&lt;/code&gt;&lt;code class="source"&gt;:/]&lt;br /&gt;  eltonjose = rw&lt;br /&gt;  jose = r&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;Traduzindo estas três linhas: no repositório &lt;span style=";font-family:times new roman;font-size:100%;"  &gt;NomeDoSeuProjeto&lt;/span&gt; eltonjose lê e escreve, enquanto que jose apenas lê o repositório.&lt;br /&gt;&lt;br /&gt;Fim da primeira parte, na segunda parte irei colocar como instalar o NO-IP e o TortoiseSVN.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1670392906171868672-2929940986724803859?l=diario.eltonjose.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/2929940986724803859/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://diario.eltonjose.com.br/2009/09/montando-servidor-subversion-no-windows.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/2929940986724803859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/2929940986724803859'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/2009/09/montando-servidor-subversion-no-windows.html' title='Montando servidor Subversion no Windows - Parte I'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1670392906171868672.post-2921710949044529769</id><published>2009-09-03T19:01:00.000-07:00</published><updated>2009-09-03T19:23:41.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='primeiro post'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Sejam bem vindos</title><content type='html'>Este está sendo o meu primeiro post no meu blog.&lt;br /&gt;Neste blog quero colocar o pouco do conhecimento que detenho.&lt;br /&gt;Serão postados informações sobre linguagem de programação, novidades na informática, problemas que consegui solucionar e os que eu não consegui também.&lt;br /&gt;&lt;br /&gt;Além de colocar minha opnião sobre futebol e formula 1, que são meus esportes preferidos.&lt;br /&gt;&lt;br /&gt;“Feliz aquele que transfere o que sabe e aprende o que ensina !”&lt;br /&gt;(Cora Coralina)&lt;br /&gt;&lt;br /&gt;Esta é uma das frases que tenho quardada para minha vida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1670392906171868672-2921710949044529769?l=diario.eltonjose.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diario.eltonjose.com.br/feeds/2921710949044529769/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://diario.eltonjose.com.br/2009/09/sejam-bem-vindos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/2921710949044529769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1670392906171868672/posts/default/2921710949044529769'/><link rel='alternate' type='text/html' href='http://diario.eltonjose.com.br/2009/09/sejam-bem-vindos.html' title='Sejam bem vindos'/><author><name>Elton José</name><uri>http://www.blogger.com/profile/11410821354692588455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_4YT4svS-Eug/SqB0TxVkmpI/AAAAAAAAADI/boQ3XZE54BE/S220/Foto+002.jpg'/></author><thr:total>0</thr:total></entry></feed>
