<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5539727321772853208</atom:id><lastBuildDate>Wed, 03 Aug 2011 14:51:40 +0000</lastBuildDate><title>Desenvolvendo a Web</title><description>Tecnologias, dicas de desenvolvimento, erros comuns, melhores práticas e tudo o que enfrentamos ao trabalhar com WEB - Por Carlos Gressler Filho</description><link>http://www.carlosprogramador.net/</link><managingEditor>cacotx@gmail.com (Carlos Gressler Filho)</managingEditor><generator>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/carlosprogramador" /><feedburner:info uri="carlosprogramador" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-909578312935500868</guid><pubDate>Sun, 07 Nov 2010 17:40:00 +0000</pubDate><atom:updated>2010-11-07T09:40:48.245-08:00</atom:updated><title>Pra que serve o Page_PreRenderComplete afinal?</title><description>&lt;div style="text-align: justify;"&gt;Bom,&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sabe aquele papo que todo problema serve para você aprender? Então, passei por um destes na semana passada que me fez pesquisar um pouco para conseguir resolver, e a solução foi um tanto curiosa por isso eu vou explicar cada ponto:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;O Problema:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tenho uma página onde utilizo um UpdateProgress, e dentro dele tenho um Label onde deverei informar o que esta acontecendo para o usuário, algo do tipo: "Buscando Empresa", "Vinculando Contatos", etc...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Alguém aí já tentou fazer um UpdateProgress.FindControl("ID_Controle")? você não pode fazer isto porque quando você acessa isto nos metodos que precedem ou até mesmo no próprio Page_Load(), o componente não foi renderizado e o que existe nele ainda é um Template.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Se você quer recaptular um pouco sobre os eventos disparados no post, dá uma olhada neste link do MSDN: &lt;a href="http://www.blogger.com/goog_649659617"&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/Aa479007.aspx"&gt;Page Object Model&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;O Motivo:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como eu disse antes, durante um page_load(), ou qualquer metodo de changed/click, o componente UpdateProgress ainda está com seu conteúdo na forma de um template. tornando a chamada de UpdateProgress.FindControl("ID_Controle") completamente ineficaz, pois sempre ela retornará null.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;A Solução:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Após todas as alterações que são feitas no "HTML" pelos metodos de Page_Load, Changed ou Click, o framework ainda dispara alguns metodos que não estão por padrão assinados no seu arquivo de Code_Behind( .cs ou .vb). E o metodo que me salvou o dia é justamente um destes. &lt;b&gt;Page_PreRenderComplete&lt;/b&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este metodo é disparado logo após a renderização de todos os objetos estiver finalizada, porém ele ainda consegue referenciar cada objeto por seu Id (ainda pelo lado do servidor, não estou falando de ClientId).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Portanto se você precisar fazer algo neste sentido, utilize o Page_PreRenderComplete para fazer a chamada de FindControl no seu UpdateProgress.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;C# Sintaxe:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00"&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;protected void Page_PreRenderComplete&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;(object sender, EventArgs e)&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;{&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;//seu codigo aqui&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;VB Sintaxe:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00"&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;Protected Sub Page_PreRenderComplete(ByVal sender As Object,&amp;nbsp;&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;ByVal e As System.EventArgs) Handles Me.PreRenderComplete &lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;'seu codigo aqui&lt;/pre&gt;&lt;pre class="libCScode" id="ctl00_MTContentSelector1_mainContentContainer_ctl24_ctl00_ctl00_code"&gt;End Sub&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Se tiverem algum problema para resolver isto, por favor entrem em contato. Terei prazer em ajudar.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-909578312935500868?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2010/11/pra-que-serve-o-pageprerendercomplete.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-2389052101364318313</guid><pubDate>Thu, 29 Apr 2010 16:23:00 +0000</pubDate><atom:updated>2010-04-30T10:20:31.799-07:00</atom:updated><title>Você acha que trabalha com pessoas estúpidas?</title><description>&lt;div style="color: #666666; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Li alguns artigos interessantes sobre o tema, e adaptei um pouco à realidade que encontro em meu trabalho, acho que vale à leitura.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Se você acha que alguém de seu trabalho é estúpido, pense bem quais os motivos que o levaram a este julgamento. A menos que você seja uma pessoa com uma inteligência de um gênio (além de estatisticamente improvável, é possível que você não estivesse lendo este artigo), talvez você esteja julgando mal seu colega.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Vamos dizer que você não está apenas taxando seus colegas com este rótulo de modo à tentar se proteger e esconder suas próprias inseguranças(de qualquer forma faça esta pergunta à si mesmo, honestamente). Vamos assumir que você realmente acredita que as pessoas são estúpidas, provavelmente porque não consegue conversar, debater ou concordar com elas.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;O que você realmente precisa analisar é o julgamento que elas fazem. Divergências nos julgamentos raramente são causadas por estupidez – seja no trabalho, em casa, na política ou qualquer outro ponto. Como sabemos, não podemos resolver nenhum problema sem encontrarmos sua causa, e chamarmos as pessoas de estúpidos nos impede de seguir à diante nos próximos pontos deste artigo.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Ao invés de chamá-los de estúpidos, vamos levar em conta os seguintes pontos:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;1 – Antes de divergir de alguém, trabalhe para entender seu posicionamento:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você entendeu completamente o que ele está falando?&lt;/b&gt; Ou você está falando do passado de cada um?&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você está respondendo à mesma pergunta?&amp;nbsp;&lt;/b&gt; Às vezes as pessoas respondem as perguntas de prismas variados. Por Exemplo: “Qual é o próximo passo?” contra “Qual é a solução em longo prazo?”&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Vocês estão utilizando os termos da mesma maneira? &lt;/b&gt;As divergências podem surgir pelo uso de diferentes definições e terminologias.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você está falando com o máximo de abstração? &lt;/b&gt;Dar e pedir exemplos e analogias ajuda a deixar a questão mais clara para ambos.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Vocês dois estão sendo claros e precisos em seus questionamentos?&lt;/b&gt; É comum que as pessoas soltem frases soltas, ou metáforas que não serão interpretadas corretamente, e em alguns casos nem se deve.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Faça estas perguntas e compreenda atentamente o resultado, se mesmo assim a divergência continua acontecendo.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;2 – Estamos discordando ainda! Então tente entender a linha de pensamento dele&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Quais são as razões para a conclusão que ele expõe?&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Qual é a prova que ele oferece para exemplificar sua conclusão?&lt;/b&gt; Que dados ou observações ele está levando em conta para chegar a esta conclusão?&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Qual premissa ou lição ele considera relevante? &lt;/b&gt;Quais princípios, quadros, ou as teorias que ele aplica?&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Quais objetivos e valores ele está utilizando em sua abordagem?&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Pergunte isso diretamente, mas tente não ser agressivo nem intimidador. Sua opinião pode mudar durante este processo. Se não mudar, pelo menos você vai conseguir entender melhor as razões deles:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você viu a importância dos fatos que eles mostram?&lt;/b&gt; Talvez falte a eles um fato fundamental, ou apenas eles não viram a amplitude e profundidade dos fatos que você tem! Informe-os sobre isto, e veja o resultado.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você possui alguma experiência relevante que eles não tenham?&lt;/b&gt; Mostre-lhes suas observações, lições aprendidas que te levam à sua conclusão, e faça isso sem ser didático ou condescendente.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Você está trazendo fatos e lições de outras origens?&lt;/b&gt; Se sim, qual o contexto se aplicam? Talvez um de vocês tenha trabalhando em empresas que começaram pequenas e cresceram, e outro só tenha trabalhado em empresas grandes. Qual o contexto mais relevante?&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Vocês são guiados por objetivos e valores diferentes?&lt;/b&gt; Se sim, é lógico que vocês chegarão a conclusões e soluções diferentes! O alinhamento de objetivos é crucial para bons resultados.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Vocês defendem premissas diferentes?&lt;/b&gt; Se sim, é possível que vocês dois não consigam uma solução rápida para o impasse, portanto, será preciso tomar outra abordagem (por exemplo, apliquem as idéias em menor escala de forma razoável para medir os resultados, ou peça para um terceiro auxiliar na tomada de decisão)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;3 – Leve sempre em conta o contexto emocional&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Ele está com MEDO da conclusão?&lt;/b&gt; Talvez isto ameace seu trabalho, sua reputação ou auto-estima. Não há nenhuma desculpa para isto, porém sempre acontece. Bons profissionais reconhecem isto cedo ou tarde, e deixam as emoções de lado. Às vezes um amigo do trabalho o faça perceber isso com uma conversa simpática (é importante que você também faça esta pergunta a si mesmo).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;O ambiente é estressante, degradando seu julgamento?&lt;/b&gt; Pressão pela escassez de tempo ou por uma carreira que está por um fio torna difícil um bom trabalho.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Ele está intimidado por você?&lt;/b&gt; Se ele te vê como mais inteligente ou mais bem quisto poderá ser invadido por uma maré de sentimentos de incertezas e inseguranças, o que dificultam seu pensamento. Você pode involuntariamente deixá-lo “pra baixo”. Use um tom de voz mais baixo, e seja mais polido em suas colocações, sempre demonstrando que vocês têm direito de defender o que acham melhor, mas precisam chegar a um consenso.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Se vocês ainda não chegaram a nenhum entendimento, seu problema pode ser de ordem cognitiva ou até mesmo psicológica:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Eles podem ter bom senso, mas baixa capacidade de comunicação.&lt;/b&gt; Se você achar que concorda com ele após resolver os problemas de alinhamento inicial, mantenha sempre isso em mente. Pode ser muito frustrante e é necessário paciência, mas é melhor do que discutir à toa, e no fim poderá até mesmo ganhar a admiração deles.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Eles podem ter uma inteligência “crua”, mas seus pensamentos habituais são pobres&lt;/b&gt;, os padrões de absorção, processamento e arquivamento de informações. Cognitivamente falando, eles não estão configurados para chegar ao cerne da questão, distinção de elementos essenciais e acidentais, para formar e aplicar uma generalização válida. Isso também pode exigir paciência. Isto não é bom, eu sei, mas ele não é intencionalmente irracional, ou o vulgar burro. Concentre-se em outras qualidades e virtudes que eles trazem para a discussão, como criatividade, diligência ou construção de relacionamentos.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Eles podem ter uma insegurança geral &lt;/b&gt;que estas discussões os façam parecer ignorantes, ou estúpidos. Este é outro item sem desculpa, mas você pode ajudar a trabalhar esta deficiência para que eles evoluam desde que você não vire o “pai desta criança”.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Eles podem ter um problema PESSOAL com você. &lt;/b&gt;Talvez eles te achem “arrogante” ou obstinado, ou até mesmo estão magoados, pois sabem que você os julga como imbecis. Em todo o caso, isto fará com que eles fiquem mais propensos a não te escutar e discutir mais com você. Eles podem pegar no seu pé ou apenas descontar a raiva pelo julgamento que você fez. De qualquer forma você precisa &lt;b&gt;ADMITIR &lt;/b&gt;que é parte do problema e precisa se reciclar, caso queira reverter este quadro.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Conclusão:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;A estupidez explica apenas uma pequena parte das discussões e divergências das pessoas. Chamar alguém de “burro” é um beco sem saída, você não pode corrigi-lo. Em vez disso tente descobrir o que realmente está acontecendo.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Conselhos para seu ambiente de trabalho.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Certifique-se de que seu ambiente promova decisões objetivas. &lt;/b&gt;Se as decisões são tomadas com base em personalidade e emoções ao invés de levantamento de dados e debates, este ambiente tornará todas as pessoas “imbecis” e “estúpidas”. Procure outro lugar!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Escolha suas batalhas.&lt;/b&gt; Você não tem que tomar lado em todas as discussões. Deixe as outras pessoas fazerem suas próprias lutas. Lute apenas nas decisões importantes e difíceis de reverter.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Ganhe uma reputação ao longo do tempo através de um excelente trabalho.&lt;/b&gt; Isto é muito mais poderoso para requisitar a atenção do que capacidade intelectual.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: #666666; font-family: Arial,Helvetica,sans-serif;"&gt;Eu realmente não consigo aplicar, ainda, todos estes itens no meu ambiente de trabalho, mas estou trabalhando de forma firme e objetiva para alcançar um bom nível de entendimento com meus colegas. &lt;/div&gt;&lt;div style="color: #666666; font-family: Arial,Helvetica,sans-serif;"&gt;Espero sinceramente que este artigo ajude vocês à repensar sobre seus colegas estúpidos.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-2389052101364318313?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2010/04/voce-acha-que-trabalha-com-pessoas.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-3258643485441041113</guid><pubDate>Mon, 26 Apr 2010 18:45:00 +0000</pubDate><atom:updated>2010-04-26T11:45:38.980-07:00</atom:updated><title>Codeshow 2010</title><description>Depois de milênios sem postar, um post pra lá de interessante...&lt;br /&gt;
&lt;br /&gt;
Palestras sobre desenvolvimento, o que isso lembra você?&lt;br /&gt;
Pra mim só lembra de malucos que não sabem falar direito, tentando fazer isso durante mais de 3 horas, mostrando códigos e mais códigos em telonas e no final tu não leva nada de conhecimento pra casa.&lt;br /&gt;
&lt;br /&gt;
Agora temos uma realidade bem melhor que esta: &lt;b&gt;CodeShow 2010&lt;/b&gt;(&lt;a href="http://codeshow.visie.com.br/"&gt;http://codeshow.visie.com.br/&lt;/a&gt;),um workshop interessantíssimo, e com um preço pra lá de chamativo: apenas 30 pila!&lt;br /&gt;
&lt;br /&gt;
O que mais achei interessante é que ele consegue, em um único evento, reunir os dois lados do desenvolvimento web, designers e programadores, com matérias distintas para cada um. Veja abaixo o que cada equipe irá debater:&lt;br /&gt;
&lt;br /&gt;
Designers:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Construção e publicação de layout mobile,&lt;/li&gt;
&lt;li&gt; HTML5, CSS3,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Media queries,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Semântica&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Programadores:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Git,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;web2py,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;MongoDB,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Publicação de vídeo com ffmpeg,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;PagSeguro,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Processamento distribuído,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;mobile&lt;/li&gt;
&lt;/ul&gt;E no fim da brincadeira ainda será lançado um sistema! É exatamente isso, um sistema desenhado e programado em um único dia! você tem que conferir!&lt;br /&gt;
&lt;br /&gt;
Como? Onde?&lt;br /&gt;
Dia 27 de Maio de 2010.&lt;br /&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a href="http://www.espacoapas.com.br/"&gt;Espaço Apas&lt;/a&gt;&lt;/strong&gt; &lt;br /&gt;
Rua Pio XI, n° 1200&lt;br /&gt;
Alto da Lapa - São Paulo - SP&lt;br /&gt;
CEP 05060-001&lt;br /&gt;
&lt;a href="http://maps.google.com.br/maps?q=Rua+Pio+XI,+n%C2%B0+1200&amp;amp;hnear=R.+Pio+XI,+1200+-+Lapa,+S%C3%A3o+Paulo,+05060-001&amp;amp;iwloc=A"&gt;Mapa de como chegar&lt;/a&gt;    &lt;br /&gt;
&lt;div class="fleft"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="fleft"&gt;Contato Apas:&lt;br /&gt;
Tel.: + 55 11 3647 5041 / 5000&lt;br /&gt;
Fax: + 55 11 3647 5209&lt;br /&gt;
&lt;/div&gt;&lt;div class="fleft"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="fleft"&gt;Contato Visie:&lt;br /&gt;
Tel.: 11 3477 3347&lt;br /&gt;
codeshow@visie.com.br&amp;nbsp;&lt;/div&gt;&lt;div class="fleft"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-3258643485441041113?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2010/04/codeshow-2010.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-3181481273982304867</guid><pubDate>Mon, 31 Aug 2009 18:25:00 +0000</pubDate><atom:updated>2009-08-31T11:36:17.455-07:00</atom:updated><title>Session Transfer</title><description>Bom Galera,&lt;br /&gt;
Um tempo atrás tive de desenvolver uma aplicação&amp;nbsp;híbrida, que integrava o velho ASP com .NET2.0, porém como todos sabem, estas tecnologias não compartilham as sessions, e então? como fazer o .net ler as sessions do asp?&lt;br /&gt;
Pra resolver isto tive de apelar para uma metodologia que usa banco de dados, vou explicar tudo, passo-a-passo logo, mas antes irei apresentar algumas características deste projeto para que vocês entendam as limitações que a solução deveria respeitar.1º. O projeto se trata de um sistema modular feito em ASP.&lt;br /&gt;
2º. Os módulos novos deveriam, mandatoriamente, sem feitos em .net VB 2.0&lt;br /&gt;
3º. O banco deve seguir a arquitetura posta no projeto inicial, que é MS-SQL 2000&lt;br /&gt;
Depois destas noticias desanimadoras, vamo à solução.&lt;br /&gt;
Devo criar uma tabela no banco de dados com a seguinte modelagem:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_viSF9GGLauM/SpwSTgpzGlI/AAAAAAAAAEk/CGI21wf7A8o/s1600-h/bd.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_viSF9GGLauM/SpwSTgpzGlI/AAAAAAAAAEk/CGI21wf7A8o/s320/bd.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;O Script para a criação da tabela é:&lt;br /&gt;
&lt;span style="font-size: 13px;"&gt;CREATE TABLE [dbo].[SessionTransfer] (&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;[IdSecao] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;[Chave] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;[Valor] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;[Data] [datetime] NOT NULL&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 13px;"&gt;ALTER TABLE [dbo].[SessionTransfer] ADD&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;CONSTRAINT [DF_SessionTransfer_Data] DEFAULT (getdate()) FOR [Data]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt;&lt;span style="font-size: x-small;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Vamos para os codigos em ASP e .NET:&lt;br /&gt;
Após o sistema principal em ASP fazer a criação das sessions que o projeto precisa, tais como permissões de acesso, regras de hierarquia, etc, eu chamo o arquivo "sessiontransfer.asp".&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;ATENÇÃO:&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;O código demonstrados neste post são apenas didáticos e não devem ser utilizados da forma como são apresentados, pois possuem diversas falhas de segurança como SQL-Injection por exemplo. Caso você queira utilizá-lo, apenas baseie sua lógica neste exemplo, mas construa um código seguindo as condutas de boas práticas.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt; ! - - #include file="../_include/_abreconexao.asp" &amp;nbsp;- - &amp;nbsp;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt; %&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;For i = 1 to (Session.Contents.Count -1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;strSql = "INSERT INTO SessionTransfer (IdSecao, Chave, Valor) VALUES ('" &amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;strSql = strSql &amp;amp; Session.SessionID &amp;amp; "', '" &amp;amp; Session.Contents.Key(i) &amp;amp; "', '" &amp;amp; Session.Contents.Item(i) &amp;amp; "')"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;DBCon.Execute (strSql)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Next&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Response.Redirect("SessionTransfer.aspx?IdSecao=" &amp;amp; Session.SessionID)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;% &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Como vocês percebem, este código varre todas as chaves de sessions da aplicação e as envia para o banco. Após este processo ele redireciona para o arquivo em .NET "SessionTransfer.aspx", com a devida parametrização de identificação da Session.&lt;br /&gt;
Segue o código do&amp;nbsp;"SessionTransfer.aspx":&lt;br /&gt;
&lt;span style="font-size: 10px;"&gt;Imports System&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Data&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Data.SqlClient&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Configuration&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Collections&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web.Security&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web.UI&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web.UI.WebControls&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web.UI.WebControls.WebParts&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Imports System.Web.UI.HtmlControls&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Partial Public Class SessionTransfer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Inherits System.Web.UI.Page&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim objConn As SqlConnection = New SqlConnection(SqlHelper.m_strConn)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim objCmd As SqlCommand = New SqlCommand()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim objAdap As SqlDataAdapter = New SqlDataAdapter()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim objDataSet As DataSet = New DataSet()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim strIdSecao As String = Request.QueryString("IdSecao").ToString()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Dim i As Integer = 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objConn.Open()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objCmd.CommandTimeout = 300&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objCmd.CommandType = CommandType.Text&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objCmd.Connection = objConn&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objCmd.CommandText = "SELECT Chave, Valor FROM SessionTransfer WHERE IdSecao = '" + strIdSecao + "'"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objAdap.SelectCommand = objCmd&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;objAdap.Fill(objDataSet)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;For i = 0 To objDataSet.Tables(0).Rows.Count - 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;If (Session(objDataSet.Tables(0).Rows(i)("Chave").ToString()) &amp;lt;&amp;gt; Nothing) Then&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Session.Remove(objDataSet.Tables(0).Rows(i)("Chave").ToString())&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;End If&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Session.Add(objDataSet.Tables(0).Rows(i)("Chave").ToString(), objDataSet.Tables(0).Rows(i)("Valor").ToString())&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Response.Write(objDataSet.Tables(0).Rows(i)("Chave").ToString())&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Response.Write(objDataSet.Tables(0).Rows(i)("Valor").ToString())&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;Next&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;objCmd.CommandText = "DELETE FROM SessionTransfer WHERE IdSecao = " + strIdSecao&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;objCmd.ExecuteNonQuery()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;objCmd.CommandText = "DELETE FROM SessionTransfer WHERE DATEDIFF(hh, Data, GETDATE()) &amp;gt;= 1"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;objCmd.ExecuteNonQuery()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3;"&gt;&lt;span style="font-size: x-small;"&gt;End Class&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Neste arquivo eu recupero os valores baseado na SessionID passada por parâmetro, crio as Sessions para o .NET e após eu deleto do banco todas as chaves da session que busquei.&lt;br /&gt;
Notem que também faço uma segunda exclusão procurando por sessions cadastradas com mais de 1 dia.&lt;br /&gt;
&lt;br /&gt;
Para exemplo isso serve, mas lembrem-se de que isso é só um exemplo!!! muito cuidado ao usarem querys SQL que são concatenadas com parâmetros query-string! Ainda mais sem tratamento como o do exemplo.&lt;br /&gt;
Na realidade, meu conselho é: Nunca façam isso! =D&amp;nbsp;Mas para didática isso já ajuda banstante.&lt;br /&gt;
&lt;br /&gt;
abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-3181481273982304867?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2009/08/session-transfer.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_viSF9GGLauM/SpwSTgpzGlI/AAAAAAAAAEk/CGI21wf7A8o/s72-c/bd.JPG" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-8426567398440918636</guid><pubDate>Thu, 27 Aug 2009 16:25:00 +0000</pubDate><atom:updated>2009-08-27T09:25:14.618-07:00</atom:updated><title>Rumo ao MCPD</title><description>Há muito tempo que eu não posto nada no meu blog, mas vou reiniciar este processo.&lt;br /&gt;
&lt;br /&gt;
Começo com uma novidade, acabo de entrar em um desafio onde meus colegas de trabalho Rafael Ribas e Luis Eduardo e eu iremos entrar em uma odisséia de estudos para buscarmos nossa certificação MCPD.&lt;br /&gt;
&lt;br /&gt;
Lançamos um blog(&lt;a href="http://rumoaomcpd.blogspot.com/"&gt;rumoaomcpd.blogspot.com&lt;/a&gt;) que será nosso diário de bordo, onde postaremos nossas impressões sobre os conteúdos das provas necessárias para a certificação MCTS e depois a MCPD.&lt;br /&gt;
&lt;br /&gt;
Visitem e acompanhem este desafio!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-8426567398440918636?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2009/08/rumo-ao-mcpd.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-4463083385976670333</guid><pubDate>Tue, 21 Oct 2008 17:30:00 +0000</pubDate><atom:updated>2008-10-21T10:38:29.931-07:00</atom:updated><title>problemas de debug no VS2005</title><description>pois é gente,&lt;br /&gt;passei por um aperto estes dias, mas consegui achar o problema.&lt;br /&gt;&lt;br /&gt;eis que quando eu ia debugar um projeto que estou tocando aqui aparecia o seguinte alert:&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;Microsoft Visual Studio&lt;br /&gt;---------------------------&lt;br /&gt;The following module was built either with optimizations enabled or without debug information:&lt;br /&gt;&lt;br /&gt;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\d33c2b62\ba11b592\assembly\dl3\7153188f\fbed248c_8933c901\BookEngine.DLL&lt;br /&gt;&lt;br /&gt;To debug this module, change its project build configuration to Debug mode. To suppress this message, disable the 'Warn if no user code on launch' debugger option.&lt;br /&gt;---------------------------&lt;br /&gt;OK&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;pois finalmente descobri o que é e como resolver.&lt;br /&gt;&lt;br /&gt;o fato é que dentro da minha solution eu possuo dois projetos, o WebSite e o BookEngine.&lt;br /&gt;o BookEngine é apenas uma série de classes que eu importo no WebSite e utilizo ele instanciando meus objetos.&lt;br /&gt;&lt;br /&gt;Para fazer o relacionamento eu apenas adicionei uma referência diretamente na DLL do outro projeto, e por isso dava errado.&lt;br /&gt;&lt;br /&gt;O erro acontece pois na hora de compilar, a DLL do BookEngine não estava sendo atualizada no bin do projeto.&lt;br /&gt;&lt;br /&gt;Para solucionar eu apenas excluí a relação e em references eu utilizei a aba de projetos, relacionei o projeto do BookEngine e pronto!&lt;br /&gt;&lt;br /&gt;Tudo funcionando perfeitamente e sem problemas de debug.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eras isso,&lt;br /&gt;qualquer duvida só me enviar um mail.&lt;br /&gt;&lt;br /&gt;ab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-4463083385976670333?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/10/problemas-de-debug-no-vs2005.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-4417714859314126707</guid><pubDate>Sat, 06 Sep 2008 12:30:00 +0000</pubDate><atom:updated>2008-09-06T05:36:02.013-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webkit</category><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">ie</category><category domain="http://www.blogger.com/atom/ns#">safari</category><category domain="http://www.blogger.com/atom/ns#">tableless</category><category domain="http://www.blogger.com/atom/ns#">chrome</category><category domain="http://www.blogger.com/atom/ns#">Browsers</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">opera</category><category domain="http://www.blogger.com/atom/ns#">css</category><title>O Chrome não quer dizer muita coisa</title><description>Li este post no blog &lt;a href="http://www.tableless.com.br/"&gt;http://www.tableless.com.br/&lt;/a&gt; e achei muito interessante, pois concordo em 100% com o que foi dito pelo  Diego Eis, e acho muita fumaça pra pouco fogo.... enfim... segue abaixo o texto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O Google lançou &lt;a href="http://www.google.com/googlebooks/chrome/"&gt;sua presença no mercado de browsers&lt;/a&gt;. Atitude interessante mas que para mim não quer dizer muita coisa. Ter um novo browser não muda muito (a minha) a vida dos desenvolvedores. Lembre-se que não importa quão bom seja o Firefox, Safari ou o &lt;a href="http://www.google.com/chrome/"&gt;Google Chrome&lt;/a&gt;, nós, desenvolvedores temos sempre que nivelar tudo por baixo, pelo Internet Explorer 6. Se o Chrome ou qualquer outro novo navegador ajudar com que o IE6 seja definitivamente descontinuado, eles serão bem-vindos. Caso contrário, o lançamento de bons browsers só vai, por assim dizer, brochar a vontade dos profissionais que querem utilizar recursos mais avançados do CSS mas não podem por conta do IE6. O IE7 foi um avanço interessante. O IE8 está pretendendo ser. Mas até mesmo o IE8 não vai ser muito útil enquanto ele não tomar a o lugar do Internet Explorer 6. O mesmo vale para qualquer outro browser.&lt;br /&gt;&lt;br /&gt;Do que adianta eu utilizar PNG transparente para os browsers que suportam canal alpha e ter que continuar recortando imagens para fazer um bom trabalho no IE6? A Microsoft sabe que ela criou um monstro, e ainda bem que ela reconheceu isso e tomou alguma atitude.&lt;br /&gt;&lt;br /&gt;Vou ter muito mais prazer de trabalhar quando ouvir a notícia da descontinuação do IE6, do que sobre o lançamento de um novo browser. Por isso eu não fico 100% satisfeito com o Chrome, nem com o Firefox 3, nem com atualizações do motor WebKit. Não porque não quero, mas porque vou continuar tendo o mesmo trabalho que sempre tive para fazer sites.&lt;br /&gt;&lt;br /&gt;Vou continuar tendo as mesmas preocupações, vou continuar fazendo as mesmas técnicas manjadas e trabalhosas. O problema continua sendo o passado. É o IE6 que ainda dita as regras.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fonte: &lt;a href="http://www.tableless.com.br/chrome-nao-quer-dizer-muita-coisa"&gt;http://www.tableless.com.br/chrome-nao-quer-dizer-muita-coisa&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-4417714859314126707?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/09/o-chrome-no-quer-dizer-muita-coisa-por.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-4140886813581667917</guid><pubDate>Fri, 09 May 2008 19:15:00 +0000</pubDate><atom:updated>2008-05-09T12:17:02.745-07:00</atom:updated><title>quão nerd você é?</title><description>&lt;a href="http://www.nerdtests.com/nt2ref.html"&gt;e voce?&lt;/a&gt;&lt;br /&gt;quanto nerd você é????&lt;br /&gt;&lt;a href="http://www.nerdtests.com/nt2ref.html"&gt;&lt;img src="http://www.nerdtests.com/images/badge/nt2/7e8d8353489cc9c4.jpg" alt="NerdTests.com says I'm an Uber-Dorky Nerd God.  What are you?  Click here!" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-4140886813581667917?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/05/quo-nerd-voc_09.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-1953313062162490047</guid><pubDate>Fri, 09 May 2008 16:19:00 +0000</pubDate><atom:updated>2008-05-09T09:20:11.925-07:00</atom:updated><title>Lançado a primeira rede social para Hackers!</title><description>&lt;p mce_keep="true"&gt;É isso mesmo galera! Acabaram de lançar o House of Hackers!  uma rede social para hackers se encontrarem, formarem grupos, debaterem  problemas de segurança, e "Dominar o mundo!!!"&lt;/p&gt; &lt;p mce_keep="true"&gt;De acordo com o blog do pessoal da GNUCITIZEN, a rede é  exclusiva e apoiará questões culturais e o modo de vida Hacker, ideologias,  politica e principalmente voltando para o foco nas opiniões sobre a  esfera de  segurança.&lt;/p&gt; &lt;p mce_keep="true"&gt; Além de criar grupos, os especialistas da House of Hackers  terão chance de prestar serviço a &lt;a oncontextmenu="return false;" onmouseover="return true;hw9155090070863(event, this, '641856176'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" style="border-bottom: 1px dotted; color: rgb(0, 102, 0); text-decoration: underline;" onclick="return true;hwClick9155090070863(641856176);return false;" onmouseout="return true;hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " href="http://www.geek.com.br/modules/noticias/ver.php?id=22338&amp;amp;sec=5#"&gt;empresas&lt;/a&gt;,  que poderão recrutar testadores de segurança ou analistas diretamente pela rede  social, inserindo em um mural a descrição do trabalho e qualificações  necessárias, e podendo ser contatadas diretamente.&lt;br /&gt;&lt;br /&gt;Através de taxas  aceitas durante a inserção de novas vagas, os responsáveis pela rede social  patrocinarão programas de pesquisa que devem ser iniciados em breve, mesmo que o  programa esteja em seus estágios iniciais de desenvolvimento.&lt;/p&gt; &lt;p mce_keep="true"&gt;Alguns "Especialistas em porra nenhuma" acreditam que o site  pode ser visto com maus olhos por autoridades, temendo que o fácil acesso a  informações possa ser usado para o mal, promovendo invasões, por exemplo. Mas  eles não se lembram que é justamente por isso que o ambiente é restrito  caramba!!!&lt;/p&gt; &lt;p mce_keep="true"&gt;Pq ainda temos tanto medo da palavra Hacker??? Somos apenas  nerds que curtem sistemas de segurança... não é nossa culpa se não existe nada  impossivel de ser quebrado(prefiro esta palavra do que "invadido"). e tem  mais... somos nós quem somos contratados pra arrumar as cagadas que os  superpoderosos analistas de TI fazem nas redes e deixam a porta aberta pra serem  invadidos... então, pq crucificar aqueles que vocês sempre recorrem?????&lt;/p&gt; &lt;p mce_keep="true"&gt;Bom... desabafo feito, segue ae os links de referência sobre  o assunto:&lt;/p&gt; &lt;p mce_keep="true"&gt;O House of Hackers pode ser acessado em &lt;a href="http://houseofhackers.ning.com/" target="_blank"&gt;houseofhackers.ning.com&lt;/a&gt;.&lt;br /&gt;Link do blog da &lt;span class="a"&gt;&lt;a class="" href="http://www.gnucitizen.org/blog/house-of-hackers-possibilities/" mce_href="http://www.gnucitizen.org/blog/house-of-hackers-possibilities/"&gt;www.&lt;b&gt;gnucitizen&lt;/b&gt;.org&lt;/a&gt;  falando sobre o assunto.&lt;br /&gt;Noticia do &lt;a class="" href="http://tecnologia.terra.com.br/interna/0,,OI2873948-EI4802,00-Primeira+rede+social+para+hackers+e+lancada.html" mce_href="http://tecnologia.terra.com.br/interna/0,,OI2873948-EI4802,00-Primeira+rede+social+para+hackers+e+lancada.html"&gt;Terra&lt;/a&gt;&lt;br /&gt;Noticia  do &lt;a class="" href="http://www.geek.com.br/modules/noticias/ver.php?id=22338&amp;amp;sec=5" mce_href="http://www.geek.com.br/modules/noticias/ver.php?id=22338&amp;amp;sec=5"&gt;GEEK&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-1953313062162490047?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/05/lanado-primeira-rede-social-para.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-1528429851245442954</guid><pubDate>Fri, 07 Mar 2008 16:58:00 +0000</pubDate><atom:updated>2008-03-07T09:07:21.894-08:00</atom:updated><title>Alterando a current.Culture no Framework 1.1</title><description>foi uma mão fazer esta troca... no framework 2.0 é bem mais facil... mas enfim...&lt;br /&gt;la vai:&lt;br /&gt;&lt;br /&gt;você precisa importar 2 namespaces:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;Imports System.Globalization&lt;br /&gt;Imports System.Threading&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;e depois você altera ela assim:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")&lt;br /&gt;Response.Write("Current Culture is " +&lt;br /&gt;Thread.CurrentThread.CurrentCulture.EnglishName)&lt;br /&gt;Thread.CurrentThread.CurrentCulture = New CultureInfo("pt-BR")&lt;br /&gt;Response.Write("Current Culture is " +&lt;br /&gt;Thread.CurrentThread.CurrentCulture.EnglishName) &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;pra mais informações acesse o post da pagina de suport da micros~1 :&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/306162"&gt;http://support.microsoft.com/kb/306162&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e pra ver a lista de codigos das Cultures acesse no MSDN:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;é isso ae...&lt;br /&gt;até.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-1528429851245442954?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/03/alterando-currentculture-no-framework.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-4374606971827700098</guid><pubDate>Thu, 21 Feb 2008 13:26:00 +0000</pubDate><atom:updated>2008-12-12T17:49:18.655-08:00</atom:updated><title>Utilizando o TextBoxWatermarkExtender</title><description>Ae galera...&lt;br /&gt;Novo post depois de muito tempo, mas enfim... resolvi passar pra voces como utilizar este componente do Ajax Control Toolkit, pois ele agrega visualmente no formulario.&lt;br /&gt;Nos proximos posts continuarei com este projeto utilizando elementos como o &lt;strong&gt;RequiredFieldValidator&lt;/strong&gt;, e o &lt;strong&gt;ValidatorCalloutExtender&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bom... começamos por criar um novo projeto AJAX-Enabled:&lt;img id="BLOGGER_PHOTO_ID_5169425216987978530" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_viSF9GGLauM/R7182JeD2yI/AAAAAAAAACI/rpP0GO4Wr6M/s320/cria_proj.gif" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Vamos utilizar um processo simples, com apenas 3 campos, sendo 1 campo de Login, 1 campo de senha e um campo inteiro sendo o Dígito Verificador:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5169425225577913170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_viSF9GGLauM/R7182peD21I/AAAAAAAAACg/4bW4QAc-QbQ/s320/formulario.gif" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Para Auxiliar no entendimento do usuário, vamos colocar uma marca d’água nos campos, utilizando o TextBoxWatermarkExtender. Inserimos um para cada campo, e atribuimos sua propriedade “TargetControlID” para o TextBox desejado:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5169425586355166066" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_viSF9GGLauM/R719LpeD23I/AAAAAAAAACw/ffbs1XDr-hY/s320/targetgontrolid.gif" border="0" /&gt;&lt;/div&gt;&lt;div&gt;Neste momento, nas propriedades do “TextBoxUsuario”, encontraremos o grupo EXTENDERS, onde podemos achar as propriedades que controlam este componente:&lt;br /&gt;WatermarkCssClass, e WatermarkText. Criamos uma classe de css para o watermark:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5169425221282945842" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_viSF9GGLauM/R7182ZeD2zI/AAAAAAAAACQ/UvMT9eIgxgM/s320/cssWatermark.gif" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Desta forma, inserimos o texto explicativo na propriedade WatermarkText, e a classe Css na propriedade WatermarkCssClass:&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5169425225577913154" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_viSF9GGLauM/R7182peD20I/AAAAAAAAACY/RKshPf1hL4I/s320/extenders.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Lembramos que estas propriedades são visiveis nas propriedades do TextBox, e nao do WatermarkExtender.&lt;br /&gt;Ao compilar obtemos o seguinte resultado:&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5169425234167847778" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_viSF9GGLauM/R7183JeD22I/AAAAAAAAACo/m4pmJALqSVc/s320/resultado-Water.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Bom...&lt;/p&gt;&lt;p&gt;se alguem quizer este projeto, basta me mandar um mail... no próximo post vou implementar o RequiredFieldValidator e o ValidatorCalloutExtender...&lt;/p&gt;&lt;p&gt;um abraço!!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-4374606971827700098?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2008/02/utilizando-o-textboxwatermarkextender.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_viSF9GGLauM/R7182JeD2yI/AAAAAAAAACI/rpP0GO4Wr6M/s72-c/cria_proj.gif" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-5548824262356984246</guid><pubDate>Thu, 20 Sep 2007 12:40:00 +0000</pubDate><atom:updated>2007-09-20T05:51:15.931-07:00</atom:updated><title>Master Pages Truques e Manhas</title><description>Gurizada,&lt;br /&gt;estive precisando de algumas referências para a criação de Master Pages no VS2005 e achei este artigo muito bom...&lt;br /&gt;(é em inglês)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2006/08/22/Master-Pages-Tips-and-Tricks.aspx"&gt;http://weblogs.asp.net/dwahlin/archive/2006/08/22/Master-Pages-Tips-and-Tricks.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;mas se tu não tá afim de muita leitura e quer ir direto pros fontes, baixa aqui...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xmlforasp.net/CodeBank/Download/Blog/MasterPageTipsAndTricks.zip"&gt;http://www.xmlforasp.net/CodeBank/Download/Blog/MasterPageTipsAndTricks.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;é isso ae.&lt;br /&gt;abraços.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-5548824262356984246?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2007/09/master-pages-truques-e-manhas.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-403254317081640297</guid><pubDate>Tue, 18 Sep 2007 13:22:00 +0000</pubDate><atom:updated>2008-12-12T17:49:18.896-08:00</atom:updated><title>Failed to acess iis metabase</title><description>&lt;p&gt;Hoje passei por um problemão...&lt;br /&gt;ao tentar rodar uma aplicação que estava desenvolvendo me deparei com o seguinte erro:&lt;/p&gt;&lt;p&gt;Failed to access IIS metabase&lt;/p&gt;&lt;p&gt;após algumas pesquisas descobri que o problema era que o IIS não estava configurado para usar o framework 2.0!!!&lt;/p&gt;&lt;p&gt;Isso aconteceu pois eu acabei intalando o framework antes de instalar o IIS. Se você fez o contrário e instalou primeiro o IIS e depois o framework este erro provavelmente não vai acontecer. &lt;/p&gt;&lt;p&gt;Mas a solução foi tão simples que chega a ser irritante... heheheh&lt;/p&gt;&lt;p&gt;se você cometeu o mesmo erro que eu e acabou errando a ordem de instalação, a solução é, pelo prompt, acessar a pasta "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" e executar o comando aspnet_regiis.exe com o parâmetro /i&lt;/p&gt;&lt;p&gt;assim você vai configurar o IIS para utilizar o framework!!&lt;br /&gt;a tela seria esta:&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5111536966834302658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" height="166" alt="" src="http://3.bp.blogspot.com/_viSF9GGLauM/Ru_TygxvrsI/AAAAAAAAAAQ/5L4kEQHay7w/s400/prompt.bmp" width="400" border="0" /&gt;&lt;br /&gt;bom galera... é isso ae...&lt;br /&gt;Ahhh: uso o IIS 5.1, .NET 2.0 e Windows XP SP2&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:78%;"&gt;Fonte:&lt;br /&gt;&lt;/span&gt;&lt;a href="http://marcosdellantonio.blogspot.com/2006/04/failed-to-access-iis-metabase.html"&gt;&lt;span style="font-size:78%;"&gt;http://marcosdellantonio.blogspot.com/2006/04/failed-to-access-iis-metabase.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-403254317081640297?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2007/09/failed-to-acess-iis-metabase.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_viSF9GGLauM/Ru_TygxvrsI/AAAAAAAAAAQ/5L4kEQHay7w/s72-c/prompt.bmp" height="72" width="72" /><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-8429360205340103120</guid><pubDate>Mon, 17 Sep 2007 14:29:00 +0000</pubDate><atom:updated>2007-10-02T06:58:06.612-07:00</atom:updated><title>Polimorfismo na plataforma DOT NET</title><description>Bom,&lt;br /&gt;dei uma relida no artigo que escrevi e vi que ele realmente estava um tanto estranho...&lt;br /&gt;mas achei esta explicação de polimorfismo dom classes abstratas que realmente explica de maneira facil e didatica este assunto:&lt;br /&gt;&lt;br /&gt;http://www.macoratti.net/07/09/vbn5_pca.htm&lt;br /&gt;&lt;br /&gt;espero que apreciem.&lt;br /&gt;e desculpem pela excplicação de antes... realmente me perdi nos pensamentos...&lt;br /&gt;hehehe&lt;br /&gt;&lt;br /&gt;um abraço.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-8429360205340103120?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2007/09/polimorfismo-na-plataforma-dot-net.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5539727321772853208.post-2794327205093182596</guid><pubDate>Mon, 17 Sep 2007 14:20:00 +0000</pubDate><atom:updated>2007-09-19T08:01:14.501-07:00</atom:updated><title>Hello World!!</title><description>buenas...&lt;br /&gt;deixe-me apresentar.&lt;br /&gt;Sou Carlos Gressler Filho, 19 Anos, programador, e quem sabe um dia Analista de Banco de Dados.&lt;br /&gt;trabalho com várias linguagens, entre elas Pascal, Java, C/C++, e atualmente com linguagens voltadas para o desenvolvimento WEB, tais como ASP, VB.NET, C#.NET.&lt;br /&gt;Também tenho um bom conhecimento em banco de dados, como MySQL, MS-SQL.&lt;br /&gt;&lt;br /&gt;Trabalho na empresa PMWEB, na divisão da Agencia Magic, na área de desenvolvimento, e criei este blog com a intenção de difundir conhecimentos sobre algumas tecnologias amplamente usadas no desenvolvimento de aplicações WEB, mais precisamente sobre o .NET e o MS-SQL.&lt;br /&gt;&lt;br /&gt;Também abordarei algumas outras ferramentas, como o Visual Source Safe, o Case Studio, entre outros.&lt;br /&gt;&lt;br /&gt;Espero que gostem.&lt;br /&gt;&lt;br /&gt;Um Abraço!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5539727321772853208-2794327205093182596?l=www.carlosprogramador.net' alt='' /&gt;&lt;/div&gt;</description><link>http://www.carlosprogramador.net/2007/09/hello-world.html</link><author>cacotx@gmail.com (Carlos Gressler Filho)</author><thr:total>1</thr:total></item></channel></rss>

