<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://glaudiston.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fglaudiston.spaces.live.com%2fcategory%2fComputadores%2be%2ba%2bInternet%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Site pessoal de Glaudiston: Computadores e a Internet</title><description /><link>http://glaudiston.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catComputadores%2be%2ba%2bInternet</link><language>en-US</language><pubDate>Sat, 16 Aug 2008 09:27:31 GMT</pubDate><lastBuildDate>Sat, 16 Aug 2008 09:27:31 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://glaudiston.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>5810493780584479084</live:id><live:alias>glaudiston</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Adeus propagandas</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!345.entry</link><description> Faz um tempo que quero compartilhar este plugin do firefox, que faz milagres para melhorar a experiência com a internet.&lt;br&gt;por padrão, o AdBlock Plus já bloqueia a maioria das propagandas, e permite a personalização do restante.&lt;br&gt;&lt;br&gt;Imagine usar o windows live mail sem o banner, sem propagandas, sem perda de espaço.&lt;br&gt;&lt;br&gt;Por padrão depois de instalado o adblock plus, o banner do live spaces e do live mail já não vai aparecer, mas o espaço ainda vai estar lá.&lt;br&gt;Para remover o espaço vazio, até então usado pelo banner do live mail, é só adicionar o filtro:&lt;br&gt;#div(RadAd_Banner)&lt;br&gt;Já para remover os banners do spaces.live.com, é só adicionar o filtro:&lt;br&gt;#div(AdContainer)&lt;br&gt;o resultado são páginas limpas mais seguras e muito menos cansativas.&lt;br&gt;&lt;br&gt;Pra quem quer ser feliz e testar este milagre da tecnologia é só baixar o plugin do firefox e nunca mais usar o desnecessário e obsoleto Microsoft Internet Explorer.&lt;br&gt;&lt;br&gt;Segue o link do addon:&lt;br&gt;&lt;a href="http://adblockplus.org/en/installation"&gt;http://adblockplus.org/en/installation&lt;/a&gt;&lt;br&gt;e do firefox:&lt;br&gt;&lt;a href="http://www.getfirefox.com"&gt;http://www.getfirefox.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;Abraços,&lt;br&gt;Ton&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Adeus+propagandas&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!345.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!345.entry</guid><pubDate>Fri, 20 Jun 2008 16:04:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!345/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!345.entry#comment</wfw:comment><dcterms:modified>2008-06-20T16:04:20Z</dcterms:modified></item><item><title>Introdução ao Kernel Linux</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!314.entry</link><description>    Para quem não entende muito bem este lance de kernel do linux, vou explicar superficialmente:&lt;br&gt;    O Linux em sí é um &amp;quot;programa&amp;quot; chamado kernel que controla a parte física do computador(Hardware).&lt;br&gt;    Estes programas do tipo kernel só podem ser usados por outros programas, e são o coração do computador. O kernel é o Sistema Operacional puro, que controla o processador, memória e instruções de hardware, entre outras coisas.&lt;br&gt;    Todo sistema operacional(O.S.) tem seu kernel. Claro que por causa dos infindáveis tipos de hardware, é necessário que se tenha outros programas ou informações que o kernel precisa para controlar o hardware, estes programas são chamados no windows de drivers, e no linux de modulos.&lt;br&gt;    Muitos tipos de hardwares são suportados diretamente pelo kernel do linux, mas se você não tem um hardware específico em seu computador, então você não precisa do módulo dele instalado pra você. No Windows você não tem saída. Todos os dispositivos de hardware que vêm com suporte nativo do windows estão lá. Querendo você ou não, e ocupando um espaço desnecessário em sua instalação. Por isto existe no linux a opção de configurar o kernel, ativando apenas o que você precisa. Assim você tem a liberdade de criar o seu sistema personalizado, enxuto e íntegro.&lt;br&gt;    A configuração do kernel do linux é simples. O difícil é você adquirir os conhecimentos necessários do seu hardware e das opções do kernel que você quer. É necessário que você estude muito a documentação do kernel para ter este conhecimento.&lt;br&gt;    As distros nada mais são, do que uma configuração compilada do kernel do linux somados a um pacote de programas. Tudo pra facilitar a vida de usuários que normalmente não têm o conhecimento necessário para criar sua própria distro, ou simplesmente acham perca de tempo reinventar a roda.&lt;br&gt;&lt;br&gt;Espero que esta breve e resumida informação seja útil.&lt;br&gt;&lt;br&gt;Abs,&lt;br&gt;Ton&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Introdu%c3%a7%c3%a3o+ao+Kernel+Linux&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!314.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!314.entry</guid><pubDate>Fri, 04 Jan 2008 17:22:18 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!314/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!314.entry#comment</wfw:comment><dcterms:modified>2008-01-04T17:22:18Z</dcterms:modified></item><item><title>Odisséia do Desenvolvimento de Jogos</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!259.entry</link><description>Odisséia do Desenvolvimento de Jogos&lt;br&gt;====================================&lt;br&gt;    Olá, meu nome é Glaudiston, atualmente sou um desenvolvedor IBM, mas sempre que sobra algum tempo&lt;br&gt;tento desenvolver alguma coisa voltada à jogos e realidade virtual.&lt;br&gt;&lt;br&gt;    Vou tentar manter este documento atualizado como um manual para os que estiverem interessados&lt;br&gt;em desenvolvimento de jogos, e também para minha própria referência, afinal compartilhar &lt;br&gt;é a melhor forma de não errar denovo. =)&lt;br&gt;&lt;br&gt;Por onde começar&lt;br&gt;================&lt;br&gt;    Primeiro decidi que queria fazer jogos, e pagaria o preço por isto, então comecei a pesquisar...&lt;br&gt;    De início pensei que daria conta facilmente, afinal me achava muito inteligente,&lt;br&gt;    mas descobri que não é bem assim... é necessário muita dedicação, perseverança e ajuda.&lt;br&gt;    Este é quase um passo a passo, mas se você não está disposto a passar horas intermináveis&lt;br&gt;    quebrando a cabeça com detalhes, pode parar de ler, você ainda não está pronto.&lt;br&gt;    &lt;br&gt;O que é necessário saber/ter para desenvolver jogos&lt;br&gt;===================================================&lt;br&gt;Tudo pode ser conseguido sem custo na internet, mas o aprendizado é penoso.&lt;br&gt;Para criar um jogo você precisa de:&lt;br&gt; * Escrever a Lógica do seu jogo,&lt;br&gt; * Escolher uma Linguagem,&lt;br&gt; * Escolher a API(rotinas prontas),&lt;br&gt;    * interface(janelas, resolução, tela cheia, cores)&lt;br&gt;    * Entrada(Joysticks, Mouse, teclado)&lt;br&gt;    * conexão(TCP/IP, multiplayer)&lt;br&gt;    * audio(musicas, sons, mp3)&lt;br&gt;    * Detecção de colisão&lt;br&gt;    * Gerenciamento de gráficos 3D&lt;br&gt; * Configurar o ambiente(talvez a parte mais difícil),&lt;br&gt;    * Fazer download certos de cada opção escolhida&lt;br&gt;    * Instalar e configurar corretamente&lt;br&gt;    * Aprender a compilar cada opção necessária no jogo&lt;br&gt;&lt;br&gt;Escrever a Lógica do seu jogo&lt;br&gt;=============================&lt;br&gt;Você tem uma idéia do que quer que seu jogo faça, talvez até saiba de cór tudo,&lt;br&gt;mas acredite, precisa colocar isto por escrito.&lt;br&gt;Isto te dá um ponto de partida... e evita que você se perca em seus objetivos.&lt;br&gt;Existem diagramas UML e uma estrutura muito grande que pode te confundir se &lt;br&gt;vc se aprofundar nesta parte... Jogos grandes são escritos por times e tem profissionais&lt;br&gt;por conta de ficar criando documentações para serem implementados por outros...&lt;br&gt;isto é muito bom, mas não é o caso, pelo menos não o meu.&lt;br&gt;&lt;br&gt;Não tente criar &amp;quot;O JOGO&amp;quot; de primeira&lt;br&gt;====================================&lt;br&gt;Primeiro porque para ser introduzido ao desenvolvimento de jogos é necessário ser humilde.&lt;br&gt;Isto mesmo, comece de baixo... crie jogos 2D simples para aprender lógica e conseguir&lt;br&gt;continuar motivado, sabendo que já conseguiu fazer alguma coisa.&lt;br&gt;Sem falar que criando estes joginhos 2D vc acaba tendo muitas idéias de como usá-los &lt;br&gt;dentro do seu jogo, então de certa forma, você já está trabalhando &amp;quot;NO JOGO&amp;quot;.&lt;br&gt;&lt;br&gt;Se tentar criar um jogo fantástico de primeira, vai esbarrar em muitas barreiras que já &lt;br&gt;deveria ter superado quando criava joguinhos pequenos e relativamente simples, e como &lt;br&gt;não conseguiu fazer nenhum jogo antes, pode chegar à falsa conclusão que não é capaz disto.&lt;br&gt;&lt;br&gt;Lembre-se: &amp;quot;Motivação é Essencial.&amp;quot;&lt;br&gt;&lt;br&gt;    Eu já tentei criar uma engine completa para um mundo virtual melhor que o secondlife... &lt;br&gt;na verdade pegando as melhores opções de jogabilidade dele mesclando um idéias do GTA e &lt;br&gt;the sims... nfsu2... etc... com certeza a engine para o Jogo de meus sonhos...&lt;br&gt;O resultado é que chegou em um ponto que não consegui mais passar... então desisti por &lt;br&gt;um bom tempo... ainda tenho o código, algum dia conseguirei retomá-lo. &lt;br&gt;    Fique tão triste por não conseguir que voltei apenas a jogar e admirar os programadores&lt;br&gt;que conseguem criar tais jogos... quase venerando os desenvolvedores da EA Games dentre&lt;br&gt;outras empresas que fazem coisas fantástica escovando bits.&lt;br&gt;    Mas depois de continuar na programação comercial por muito tempo e com mais maturidade,&lt;br&gt;voltei a sonhar... Afinal se cheguei na IBM, porque não posso chegar na EA ?&lt;br&gt;Mas desta vez pretendo começar realmente do zero, como tem que ser para um novato em jogos.&lt;br&gt;Vou relatar tudo para entender onde estou errando, ajudar os outros será conseguência.&lt;br&gt;&lt;br&gt;    Hoje tenho uma lógica mais aprofundada e entendo melhor a necessidade de documentar o que&lt;br&gt;deve ser feito antes de começar o código em sí.&lt;br&gt;&lt;br&gt;    Aí você diz: &amp;quot;Mas eu não quero fazer joguinhos... quero fazer jogos 3D!!!&amp;quot;&lt;br&gt;Eu sei... nem eu... a pesar de que existem muitos joguinhos 2D bem melhores q 3D, estou &lt;br&gt;fazendo isto pra aprender e conseguir chegar ao final do desenvolvimento de um jogo 3D.&lt;br&gt;E Nem sempre fazemos oque queremos.&lt;br&gt;&lt;br&gt;    Certo, já entendi que devo criar jogos básicos, e conseguir concluí-los antes de passar&lt;br&gt;ao jogo que realmente quero concluir.&lt;br&gt;&lt;br&gt;Jogos que podemos criar para treinar lógica&lt;br&gt;===========================================&lt;br&gt;Campo Minado,&lt;br&gt;Paciência,&lt;br&gt;Pong,&lt;br&gt;Tetris,&lt;br&gt;Tiro ao alvo,&lt;br&gt;Invaders,&lt;br&gt;pac-man,&lt;br&gt;Damas,&lt;br&gt;&lt;br&gt;Lógica do nosso primeiro jogo: Campo minado&lt;br&gt;===========================================&lt;br&gt;Descrição:&lt;br&gt;    Campo minado é um jogo muito simples de cálculos matemáticos, e muito divertido também.&lt;br&gt;Funcionamento:&lt;br&gt;    O jogador inicia o jogo e aparece para ele uma espécie de tabuleiro de botões, &lt;br&gt;    e uma quantidade de bombas escondidas em alguns botões, &lt;br&gt;    se o jogador clica em um botão que tem uma bomba, ele perde o jogo, &lt;br&gt;    se clica em um botão que não tem bomba, mas está próximo(faz fronteira) com uma &lt;br&gt;    ou mais bombas, aparece o nr de bombas que existem nas proximidades, esta é a única &lt;br&gt;    pista que o jogador tem para descobrir quais quadrados têm bomba e quais não têm, &lt;br&gt;    e se não tem bombas nas proximidades, o jogo automaticamente abre as fonteiras até &lt;br&gt;    não encontrar mais fonteiras sem números.&lt;br&gt;&lt;br&gt;Opções e comportamento do jogo:&lt;br&gt;    Ao Abrir o jogo o usuário tem as opções:&lt;br&gt;        Novo jogo&lt;br&gt;            Ao clicar em novo jogo, as opções são:&lt;br&gt;            Novo jogo&lt;br&gt;                * Monta novamente um novo jogo pro usuário&lt;br&gt;                  Esta montagem é feita criando os botões visíveis ao jogador, e espalhando&lt;br&gt;                  as bombas aleatoriamente nestes de maneira oculta ao jogador.&lt;br&gt;                * Zera o cronômetro&lt;br&gt;                * Aguarda o primeiro clique do jogador&lt;br&gt;            Sair do Jogo&lt;br&gt;                Fecha o programa&lt;br&gt;            ----------------&lt;br&gt;            Clicar em um botão(fazer uma nova jogada)&lt;br&gt;                * No primeiro clique o cronômetro é disparado e o jogo começa.&lt;br&gt;                * Se o jogador clicou em quadrado com uma bomba o jogo termina, ele perdeu +(&lt;br&gt;                * Se o jogador clicou em quadrado sem bomba, e não existe bomba de fronteira com este&lt;br&gt;                    quadrado, o quadrado é aberto, e outros quadrados de fronteira são abertos&lt;br&gt;                    recursivamente até esgotarem-se os quadrados que não tem bombas nas fronteiras&lt;br&gt;                * Se o jogador clicou em um quadrado sem bomba, mas que tem bomba em um dos quadrados&lt;br&gt;                    de fronteira, imprime no quadrado clicado, o nr de bombas que existe nas fonteiras&lt;br&gt;                * Se não restam mais quadrados sem bombas, o jogo termina, ele venceu. =D&lt;br&gt;                    Ao vencer são guardados os dados nas estatísticas.&lt;br&gt;        Estatísticas&lt;br&gt;            Ao Clicar em Estatísticas o jogo mostra uma lista em ordem de maior dificuldade e menor tempo&lt;br&gt;            com os dados:&lt;br&gt;            Nome jogador, Data, Tempo gasto, dificuldade&lt;br&gt;            &lt;br&gt;            Podemos definir a dificuldade como a possibilidade de erro em um chute,&lt;br&gt;            por exemplo, se ele tiver 30 bombas em um tabuleiro de 200 quadrados,&lt;br&gt;            dizemos q a dificuldade era (30/200)*100 = 15&lt;br&gt;            então nossa fórmula será (bombas/quadrados)*100&lt;br&gt;        Opções&lt;br&gt;            Permite ao usuário definir a quantidade de bombas e o tamanho do tabuleiro&lt;br&gt;        Sair do jogo&lt;br&gt;            Fecha o programa&lt;br&gt;&lt;br&gt;Analisando possíveis problemas&lt;br&gt;==============================&lt;br&gt;Lendo atentamente este comportamento do jogo notei as seguintes dificuldades:&lt;br&gt;Como gerenciar todos os itens e bombas em memória?&lt;br&gt;    Penso que a melhor opção seria trabalhar com arrays... pra quem não conhece, &lt;br&gt;    são como matrizes da matemática, todos já vimos isto na escola se não me engano no fim do ensino fundamental.&lt;br&gt;    ficaria algo como isto:&lt;br&gt;        int linsize=10;                    // Numero de colunas&lt;br&gt;        int colsize=10;                    // Numero de linhas&lt;br&gt;        int campo[linsize][colsize];    // &lt;br&gt;        int bombas=10;                    // As bombas não são arrays então posso colocar o valor certo&lt;br&gt;        após a rotina distribuir as 10 bombas randomizadas... ficaria algo como:&lt;br&gt;            campo[0] = {0,0,0,0,0,0,1,0,0,0};&lt;br&gt;            campo[1] = {0,0,1,0,0,0,0,0,0,0};&lt;br&gt;            campo[2] = {0,0,0,0,0,0,0,0,0,0};&lt;br&gt;            campo[3] = {0,0,0,1,0,1,0,0,0,0};&lt;br&gt;            campo[4] = {0,0,1,0,0,0,0,0,0,0};&lt;br&gt;            campo[5] = {0,1,0,0,0,0,1,0,1,0};&lt;br&gt;            campo[6] = {0,0,0,0,0,0,0,0,0,0};&lt;br&gt;            campo[7] = {0,0,0,1,0,0,0,0,0,0};&lt;br&gt;            campo[8] = {0,0,0,0,0,0,0,0,0,0};&lt;br&gt;            campo[9] = {0,0,0,0,0,0,1,0,0,0};&lt;br&gt;        Os zeros são onde não existem bombas e os 1 são onde existem...&lt;br&gt;        Observe que existem apenas dez &amp;quot;1&amp;quot; espalhados no array que é nosso tabuleiro&lt;br&gt;    Porém em C não é possível definir um array por variáveis... é possível em java e outras linguagens mais&lt;br&gt;    alto-nivel q C... Isto complica um pouco... sem isto não poderíamos permitir ao jogador definir o tamanho.&lt;br&gt;    No máximo conseguiríamos predefinir niveis pra ele.    &lt;br&gt;    Uma boa saída é o malloc e trabalhar com ponteiros... vamos ver:&lt;br&gt;    &lt;br&gt;    campo = malloc(linhas*colunas * sizeof(int));&lt;br&gt;    &lt;br&gt;    &lt;br&gt;Mas como espalhar as bombas?&lt;br&gt;    Isto é bem simples dependendo da linguagem, na maioria tem algo como rnd ou randomize&lt;br&gt;    que nos permite fazer isto com muita facilidade.&lt;br&gt;    Mas não é o caso de C, onde a handomização é feita sempre na mesma sequência, o q deixaria nosso&lt;br&gt;    jogo no mínimo previsível.&lt;br&gt;    Neste caso da C, pensei em gerar a randomização baseada na data, hora completa incluindo os &lt;br&gt;    milisegundos... e me veio outro problema, por padrão não é possível pegar os milisegundos no C,&lt;br&gt;    não no ANSI C... e como gosto de seguir padrões de portabilidade, encontrei uma boa saída...&lt;br&gt;    o SDL possui uma forma de calcular o framerate que disponibiliza uma variável atualizada em &lt;br&gt;    milisegundos.... o SDL_GetTicks()... vamos trabalhar com ela para gerar a randomização.&lt;br&gt;&lt;br&gt;Primeiro faça simples, depois complique gradativamente&lt;br&gt;Vamos primeiro fazer um código que permita o usuário acessar os menus em modo texto mesmo...&lt;br&gt;Assim você vai aprender a base do C&lt;br&gt;&lt;br&gt;        &lt;br&gt;Iniciar um novo Jogo&lt;br&gt;Sair&lt;br&gt;        Campo minado lógica:&lt;br&gt;        define tamano de campo como 10 linhas e 10 colunas num total de 100 quadrantes.&lt;br&gt;        int linsize=9;&lt;br&gt;        int colsize=9;&lt;br&gt;        campo[linsize][colsize]         //O array começa do zero, sendo assim, se usar 10 vai gerar um array de 11 posições, por isto usamos o array de 9&lt;br&gt;        usuário iniciou um novo jogo.&lt;br&gt;            rotina distribui 10 bombas randomizadas... algo como:&lt;br&gt;            campo[0][0,0,0,0,0,0,1,0,0,0]&lt;br&gt;            campo[1][0,0,1,0,0,0,0,0,0,0]&lt;br&gt;            campo[2][0,0,0,0,0,0,0,0,0,0]&lt;br&gt;            campo[3][0,0,0,1,0,1,0,0,0,0]&lt;br&gt;            campo[4][0,0,1,0,0,0,0,0,0,0]&lt;br&gt;            campo[5][0,1,0,0,0,0,1,0,1,0]&lt;br&gt;            campo[6][0,0,0,0,0,0,0,0,0,0]&lt;br&gt;            campo[7][0,0,0,1,0,0,0,0,0,0]&lt;br&gt;            campo[8][0,0,0,0,0,0,0,0,0,0]&lt;br&gt;            campo[9][0,0,0,0,0,0,1,0,0,0]&lt;br&gt;            &lt;br&gt;            Totaliza os quadrantes livres:&lt;br&gt;            int quadranteslivres = 0;&lt;br&gt;            for (int i=0; i&amp;lt;=linsize; i++)&lt;br&gt;            {&lt;br&gt;                for(int j=0; j&amp;lt;=colsize; j++)&lt;br&gt;                {&lt;br&gt;                    if (campo[i,j]==0)&lt;br&gt;                        quadranteslivres += campo&lt;br&gt;                }&lt;br&gt;            }&lt;br&gt;        &lt;br&gt;        usuáro seleciona um item:&lt;br&gt;            linhasel=3;&lt;br&gt;            colsel=2;&lt;br&gt;            caso campo[linhasel,colsel]==1&lt;br&gt;                tem bomba, explode, game over.&lt;br&gt;                revelabombas();&lt;br&gt;            caso campo[linhasel,colsel]==0&lt;br&gt;                // Rotina calcula quantidade de bombas próximas:&lt;br&gt;                int bombasproximas = 0;&lt;br&gt;                for (int i=-1; i&amp;lt;2; i++) &lt;br&gt;                {&lt;br&gt;                    if (linhasel+i&amp;gt;=0 &amp;amp;&amp;amp; linhasel+i&amp;lt;linsize)&lt;br&gt;                    {&lt;br&gt;                        for(int j=-1; j&amp;lt;2; j++)&lt;br&gt;                        {&lt;br&gt;                            if (colsel+j&amp;gt;=0 &amp;amp;&amp;amp; colsel&amp;lt;colsize)&lt;br&gt;                                bombasproximas += campo[linhasel+i, colsel+j];&lt;br&gt;                        }&lt;br&gt;                    }&lt;br&gt;                }&lt;br&gt;                caso itensproximos==0&lt;br&gt;                    não tem bombas na fronteira, rotina abre todos os ítens próximos recursivamente até esgotar itens de fronteira sem bombas próximas.&lt;br&gt;                caso itensproximos &amp;gt; 0&lt;br&gt;                    Apenas relata ao usuário a quantidade de bombas nas proximidades.&lt;br&gt;                &lt;br&gt;                // incrementa quadrantesabertos&lt;br&gt;                quadrantesabertos++;&lt;br&gt;                Verifica se existe mais algum quadrante livre, &lt;br&gt;                if (quadranteslivres-quadrantesabertos&amp;gt;0)&lt;br&gt;                    caso exista o relata ao usuário.&lt;br&gt;                    e aguarda a próxima jogada.&lt;br&gt;                else&lt;br&gt;                    caso não exista o usuário ganhou o jogo. Parabéns pra ele =)&lt;br&gt;        usuário desiste do jogo:&lt;br&gt;            gameover;&lt;br&gt;            revelabombas();&lt;br&gt;&lt;br&gt;&lt;br&gt;A Escolha da Linguagem&lt;br&gt;======================&lt;br&gt;    Teoricamente, você pode usar quase todas as linguagens para criar seu jogo, porém algumas se destacam&lt;br&gt;C, C++, Java, .Net(C#, VB.NET, etc)...&lt;br&gt;    Eu programo em todas estas linguagens, principalmente em java, que se destaca muito pela portabilidade,&lt;br&gt;que traduzindo é: você escreve um programa no linux, mas roda em qualquer outro lugar onde tenha java...&lt;br&gt;mas optei por C, por querer algo mais comercial... nos jogos normalmente é usado C++,&lt;br&gt;mas eu gosto de procedural. =)&lt;br&gt;&lt;br&gt;A Escolha das APIs&lt;br&gt;==================&lt;br&gt;    Claro que você pode escolher uma engine pronta como a OGRE ou irlitch, mas eu quero conhecer mais do&lt;br&gt;que estou fazendo, estas APIs encapsulam muito as coisas e mesmo assim ficam complexas.&lt;br&gt;Decidi montar meu próprio motor... &lt;br&gt;    Vou usar SDL como API principal para gerenciamento de ambiente, graficos, janelas, mouse, teclado, joys, &lt;br&gt;sons, etc), bullet physics para detecção de colisão, que é algo extremamente complexo, e OpenGL para 3D.&lt;br&gt;    &lt;br&gt;Compilando&lt;br&gt;==========&lt;br&gt;gcc fonte.c -o rodar -lmingw32 -lSDLmain -lSDL&lt;br&gt;&lt;br&gt;Não mude a sequencia!!!&lt;br&gt;&lt;br&gt;&lt;br&gt;logo vou atualizar isto corrigindo alguns erros e adicionando o autotools para podermos usar os famosos: ./configure ; make ; make install;&lt;br&gt;&lt;br&gt;...continua...&lt;br&gt;&lt;br&gt;Mas só Deus sabe quando.&lt;br&gt;&lt;br&gt;O primeiro grande problema é aprender a compilar o SDL&lt;br&gt;depois de instalar o gcc e baixar o SDL,&lt;br&gt;não teria tido problemas com isto no Linux, mas no windows precisei do mingw32 e o SDLmain&lt;br&gt;pra compilar um código de iniciação do SDL:&lt;br&gt;gcc helloSDL.c -o helloSDL -lmingw32 -SDLmain -lSDL&lt;br&gt;&lt;br&gt;Isto compilou o básico, mas agora enfrento um novo desafio, a compilação do SDL para o SDL_GetTicks&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Odiss%c3%a9ia+do+Desenvolvimento+de+Jogos&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!259.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!259.entry</guid><pubDate>Thu, 22 Nov 2007 01:35:59 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!259/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!259.entry#comment</wfw:comment><dcterms:modified>2007-11-22T01:35:59Z</dcterms:modified></item><item><title>Programação em Camadas (MVC)</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!258.entry</link><description>Programação em Camadas (MVC)&lt;br&gt;============================&lt;br&gt;        Ouve-se muito hoje em dia falar em programação em camadas ou MVC, neste&lt;br&gt;artigo vou passar um pouco dos meus conhecimentos sobre o assunto, e como este conceito pode&lt;br&gt;ser colocado em prática no desenvolvimento não só Orientado a Objetos(OOP) mas &lt;br&gt;também no Procedural.&lt;br&gt;&lt;br&gt;        Para começar, MVC significa Model View Controller ou Modelo Visualização&lt;br&gt;Controle, isto porque é esta a divisão básica da programação em camadas, por &lt;br&gt;esta razão, você encontra também o termo programação em 3 níveis. &lt;br&gt;&lt;br&gt;Mas pra que MVC ?&lt;br&gt;Em resumo, pra você não se perder no seu código, e ter maior produtividade. Mas vou tentar sei mais específico...&lt;br&gt;=================&lt;br&gt;Algumas Razões:&lt;br&gt;        1. O Mercado usa e quer. &lt;br&gt;                E com toda razão. Saber usar MVC vai acrescentar&lt;br&gt;alguns pontos no seu currículo e vários pontos na hora da entrevista.&lt;br&gt;        2. Programas crescem.&lt;br&gt;                Quando se faz um programa pequeno é relativamente fácil&lt;br&gt;gerenciar o que foi feito, então você pode criar seus programinhas sem MVC, e &lt;br&gt;funcionaram muito bem... praque você vai se preocupar em seguir um padrão?&lt;br&gt;                Bom... Cada caso é um caso, mas na maioria das vezes esta é &lt;br&gt;justamente a mente de quem pensa pequeno e não se importa muito com a qualidade &lt;br&gt;do código que está escrevendo.&lt;br&gt;                Muitas vezes estes programas crescem e se tornam muito complexos&lt;br&gt;e quase ilegíveis.&lt;br&gt;                Então MVC é pra quem pensa grande, pensa no futuro quando você&lt;br&gt;não estiver entendendo muito o que fez no passado.&lt;br&gt;&lt;br&gt;Em que consiste MVC?&lt;br&gt;====================&lt;br&gt;        A intenção é dividir todas as funcionalidades do seu programa de forma&lt;br&gt;que fiquem organizadas nestes 3 níveis. Desta forma além do código ficar bem &lt;br&gt;legível, será mais fácil dividir tarefas entre vários desenvolvedores. E a &lt;br&gt;reutilização do código será muito mais simplificada.&lt;br&gt;&lt;br&gt;Só pra ressaltar:&lt;br&gt;&lt;br&gt;Quais os benefícios do MVC?&lt;br&gt;===========================&lt;br&gt;* Código segue um padrão mais legível.&lt;br&gt;* Menor dificuldade em encontrar e resolver problemas no código.&lt;br&gt;* Vários programadores pode trabalhar em uma mesma funcionalidade facilmente.&lt;br&gt;* Novos desenvolvedores que conhecem MVC terão facilidade com o código.&lt;br&gt;* Reutilização do código muito facilitada. Principalmente usando Shared Objects.&lt;br&gt;&lt;br&gt;Mas MVC não é só para Programação Orientada a Objetos (OOP)?&lt;br&gt;===========================================================&lt;br&gt;Não. Sei que posso estar começando um frame... mas estou convencido que NÃO!&lt;br&gt;O que acontece, é que nas linguagens como java que usa conceitos OOP o MVC é &lt;br&gt;muito enfatizado, e isto nos dá a impressão de que ele é para OOP.&lt;br&gt;Mas nada impede que se use este conceito em um código procedural.&lt;br&gt;&lt;br&gt;E oque significa cada nível ?&lt;br&gt;=============================        &lt;br&gt;&lt;br&gt;    Model (Modelo) :&lt;br&gt;    ==============&lt;br&gt;            Nesta camada devem ser implementadas tudo que é essencial ao &lt;br&gt;funcionamento do recurso... seria o célebro do código.&lt;br&gt;&lt;br&gt;    View (Visualização) :&lt;br&gt;    ===================&lt;br&gt;            Nesta camada são implementadas as rotinas que o usuário possa &lt;br&gt;interagir, mesmo que este usuário seja uma outra aplicação, qualquer forma de&lt;br&gt;interação externa só pode ser feita pelas implemetações desta camada.&lt;br&gt;&lt;br&gt;    Controller (Controle) :&lt;br&gt;    =====================&lt;br&gt;            Esta é uma camada intermediária que traduz as informações fornecidas&lt;br&gt;pela camada view para algo legível pela camada Model e vice-versa.&lt;br&gt;            Muitas vezes ela apenas repassa a chamada. Parece algo desnecessário&lt;br&gt;mas não se engane, sem ela não seria tão simples a reutilização do código.&lt;br&gt;&lt;br&gt;&lt;br&gt;Exemplo Teórico:&lt;br&gt;=============&lt;br&gt;Vamos imaginar que a empresa onde você trabalha solicita que você desenvolva um&lt;br&gt;programa que leia vários arquivos(ou um banco de dados), faça alguns cálculos complexos e retorne um &lt;br&gt;vetor com as informações lidas e calculadas para o usuário.&lt;br&gt;&lt;br&gt;Isto pode levar algum tempo, não é?&lt;br&gt;&lt;br&gt;Mas não é só isto.&lt;br&gt;Você também precisa criar várias formas do usuário acessar este programa:&lt;br&gt;Modo texto;&lt;br&gt;Modo gráfico 2D;&lt;br&gt;Modo gráfico 3D;&lt;br&gt;Modo Web;&lt;br&gt;&lt;br&gt;Mas não pára por aí. Você também tem que criar isto em um tempo que você, mesmo&lt;br&gt;sendo o gênio que é, não acredita que conseguirá sozinho... você reclama disto&lt;br&gt;e seu chefe/gerente diz: Até entendo, mas não posso ampliar o prazo, o que posso fazer&lt;br&gt;e te disponibilizar mais desenvolvedores.&lt;br&gt;&lt;br&gt;&amp;quot;E agora José ???&amp;quot;&lt;br&gt;&lt;br&gt;&amp;quot;Está cansado de criar um código e ter que ficar separando fragmentos dele para&lt;br&gt;copiar e colar em outro código que faz exatamente a mesma coisa mas não sabe&lt;br&gt;como reutilizá-lo?&amp;quot;&lt;br&gt;&lt;br&gt;&amp;quot;ACABARAM SEUS PROBLEMAS!!!&amp;quot;&lt;br&gt;&amp;quot;Chegou o maginífico, ultra-rápido e revolucionário:&lt;br&gt; Model Viel Controller [&amp;quot;Programation Planification Tabajara&amp;quot;]. ;-)&amp;quot;&lt;br&gt;&lt;br&gt;Você se lembra do MVC... e coloca em prática. &lt;br&gt;&lt;br&gt;como ?&lt;br&gt;&lt;br&gt;Vamos dividir as tarefas:&lt;br&gt;* Um primeiro programador vai criar as assinaturas de métodos do código reutilizavel e &lt;br&gt;salvar em um objeto compartilhado em C podemos pensar no arquiv .h .&lt;br&gt;Isto vai servir para os outros desenvolvedores criarem as chamadas de método nos&lt;br&gt;seus programas.&lt;br&gt;        Depois este programador vai continuar trabalhando na implementação dele.&lt;br&gt;        Este é nossa camada Model.&lt;br&gt;&lt;br&gt;* Um segundo desenvolvedor, irá criar retornos falsos, para serem retornados&lt;br&gt;para o código dos outros desenvolvedores enquanto este código não fica pronto.&lt;br&gt;Pra isto ele vai precisar estabelescer padrões de tipo e ojetos&lt;br&gt;e vai compilar nosso objeto compartilhado falso =|...&lt;br&gt;Isto será nossa camada Controller (temporária).&lt;br&gt;&lt;br&gt;* Um terceiro desenvolvedor vai programando a interface Texto com a estrutura de menus, telas&lt;br&gt;de boas vindas, ajuda, sobre, aquela frescuragem toda que o usuário quer ter, e &lt;br&gt;deixando as partes de código que precisa da dita cuja funcionalidade com a &lt;br&gt;assintatura do método que o segundo desenvolvedor já passou... &lt;br&gt;mas lembre-se que por enquanto este método vai estar retornando um valor falso... &lt;br&gt;apenas pra não ficar parado.&lt;br&gt;&lt;br&gt;Um exemplo prático que estou criando é o &lt;a target="_blank" href="http://bombas.sf.net"&gt;http://bombas.sf.net&lt;/a&gt; estou desenvolvendo baseado na lógica&lt;br&gt;do campominado do windows(winmine.exe) com alguma divertidas funcionalidades&lt;br&gt;adicionadas.&lt;br&gt;Minha intenção era criar um jogo que tivesse 3 interfaces, Texto, 2D e 3D.&lt;br&gt;como a lógica do jogo é uma só, eu pude criar um código de forma que fosse usado&lt;br&gt;pelos 3 modos do jogo. Compilei este código como um Shared Object que no windows&lt;br&gt;são as famosas .dll e no linux são os arquivos .so . E assim pude reutilizar&lt;br&gt;este código compartilhado com os outros modos... &lt;br&gt;No futuro, se eu quiser usar esta lógica como parte de um outro jogo será só&lt;br&gt;adicionar esta biblioteca e pronto.&lt;br&gt;&lt;br&gt;Queria continuar com isto, mas está ficando muito extenso... &lt;br&gt;e vocês podem se basear no código do bombas.sf.net que já postei o link acima.&lt;br&gt;&lt;br&gt;Também é verdade que estou sem tempo&lt;br&gt;talvez eu poste futuramente uma parte 2 deste artigo.&lt;br&gt;&lt;br&gt;Espero que seja útil a vocês...&lt;br&gt;Qualquer dúvida, usem os comentários.&lt;br&gt;&lt;br&gt;Até a próxima,&lt;br&gt;Abs.&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Programa%c3%a7%c3%a3o+em+Camadas+(MVC)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!258.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!258.entry</guid><pubDate>Thu, 22 Nov 2007 01:05:31 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!258/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!258.entry#comment</wfw:comment><dcterms:modified>2007-11-22T01:05:31Z</dcterms:modified></item><item><title>BATCH SCRIPT!!!</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!232.entry</link><description>&lt;div&gt;   Batch scripts são arquivos texto com extensão bat (*.bat), são pequenos programas interpretados pelo prompt do ms-dos, são muito usados para automatizar pequenas tarefas do dia-a-dia, e por este motivo mesmo não existem tantas funções práticas para elaborar problemas complexos... mesmo assim com um pouco de criatividade pode-se fazer maravilhas com ele, lógico que não é nada que se compare com os bash scripts do *nix. A documentação não é muito boa... muito básica e os bons tópicos são espalhados pela internet. Desde modo fica difícil saber o que pode e o que não pode ser feito com batch script.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;   Neste artigo vou publicar minhas rotinas de batch script que podem ser úteis em diversas situações. Todos os scripts são feitos em windows xp, que usa o padrão NT para prompt do ms-dos... sendo assim, talvez alguns detalhes não funcionem em Windows 9x/ME, daí é você testar e usar a criatividade &lt;img src="http://glaudiston.spaces.live.com/mmm2006-11-30_19.10/rte/emoticons/smile_wink.gif"&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Coisas básicas que são difíceis de encontrar:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;* Como pegar uma parte da variável (substring):&lt;/div&gt;
&lt;div&gt;caso seja um parâmetro tipo %1 ou %%i, sete este valor para uma variável temporária:&lt;/div&gt;
&lt;div&gt;   set var=variavel_a_testar&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;para pegar o left, por exemplo as primeiras 5 letras da variavel use %var:~0,5%&lt;/div&gt;
&lt;div&gt;para pegar o mid, por exemplo a string da posição 9 até a 11 &amp;quot;_a_&amp;quot; letras da variavel use %var:~8,3%&lt;/div&gt;
&lt;div&gt;para pegar o right, por exemplo as ultimas 6 letras da variavel use %var:~-6%&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;isto funciona muito bem pra pegar datas horas ou qualquer tipo de valor de variavel de ambiente também.&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Perguntas e respostas que eu tive que codificar por mim mesmo:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;* Como conseguir a largura de um parâmetro ou variável em um arquivo .bat:&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;   C:\WORKSP~2&amp;gt;more len.bat&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;   :: December 16, 2006 by Glaudiston Gomes da Silva&lt;br&gt;   @echo off&lt;br&gt;   set Len=-1&lt;br&gt;   :next_for&lt;br&gt;   if &amp;quot;%Len%&amp;quot;==&amp;quot;-1&amp;quot; (&lt;br&gt;      for /L %%i in (1,1,4096) do (&lt;br&gt;         echo @echo off &amp;gt; getLen.bat&lt;br&gt;         echo SET s=%1&amp;gt;&amp;gt;getLen.bat&lt;br&gt;         echo if &amp;quot;%%s:~0,%%i%%&amp;quot;==&amp;quot;%%s%%&amp;quot; echo Len=%%i&amp;gt;&amp;gt;getLen.bat&lt;br&gt;         getlen.bat | find /c &amp;quot;Len&amp;quot; | find &amp;quot;0&amp;quot; &amp;gt; null&lt;br&gt;         IF ERRORLEVEL 1 (&lt;br&gt;            echo Length=%%i&lt;br&gt;            set Len=%%i&lt;br&gt;            goto next_for&lt;br&gt;         )&lt;br&gt;      )&lt;br&gt;   )&lt;br&gt;   del getlen.bat&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;   C:\WORKSP~2&amp;gt;len palavra_a_testar&lt;br&gt;   Length=16&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;   C:\WORKSP~2&amp;gt;set len&lt;br&gt;   Len=16&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;De tempo em tempo vou atualizar este tópico... &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;see'ya!&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+BATCH+SCRIPT!!!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!232.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!232.entry</guid><pubDate>Sat, 16 Dec 2006 14:16:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!232/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!232.entry#comment</wfw:comment><dcterms:modified>2006-12-16T14:16:02Z</dcterms:modified></item><item><title>CMS para portais completos e sem custo</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!223.entry</link><description>Nesta jornada de desenvolvimento web, sempre precisamos de mais performance, mais recursos, mais interação e tudo isto em menos, muito menos tempo. Por este motivo surgiram os &lt;a href="http://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_conte%C3%BAdo"&gt;CMS&lt;/a&gt; . Os CMS são estruturas de comunidades completas, fóruns, chats, notícias, cadastros, artigos, controle de usuários conectados... sistemas de segurança... etc...etc.&lt;br&gt;&lt;br&gt;   Mesmo os que não conhecem o CMS podem perceber uma certa padronização nos fóruns de muitas comunidades... isto acontece porque eles usam o mesmo CMS... escolhem um estilo visual diferente e trocam as imagens... mas a estrutura é a mesma.&lt;br&gt;&lt;br&gt;  Bom pra você aprender mais sobre o CMS nada como o google.&lt;br&gt;&lt;br&gt;  Para mim, após muitos testes escolhe o &lt;a href="http://phpbb.com"&gt;phpbb&lt;/a&gt; que é um dos mais usados... na verdade o phpbb é uma estrutura completa de fórum com controle de usuários... não uma comunidade completa... porém, existem complementos, os chamados mods que adicionam recursos tornando este CMS um poderoso gerador de comunidades. Existe uma versão completa dele que já vem com todos os mods necessários para criar um portal já adicionados... basta fazer o upload para um servidor gratuito como o quickfreehost.com pra criar seu próprio portal... Esta versão do phpbb é chamada de &amp;quot;phpbb plus&amp;quot; pode ser encontrada na comunidade &lt;a href="http://www.phpbbrasil.com.br/"&gt;phpbb do brasil&lt;/a&gt;... na área de downloads. &lt;br&gt;&lt;br&gt;   Bom... já dei o caminho das pedras para os que querem fazer portais web, agora é muitas horas de dedicação e muito google... &lt;br&gt;Boa sorte.&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+CMS+para+portais+completos+e+sem+custo&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!223.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!223.entry</guid><pubDate>Wed, 25 Oct 2006 16:20:17 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!223/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!223.entry#comment</wfw:comment><dcterms:modified>2006-10-25T16:21:55Z</dcterms:modified></item><item><title>Teste sua competência Hacker</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!198.entry</link><description>Olá a todos... já tem alguns dias que eu descobri um site fera... um tipo de jogo, que te permite descobrir em qual nível vc se encontra nos conhecimentos hackers... e até te instigar a pesquisar e aprender pra se superar e chegar ao próximo nível...&lt;br&gt;&lt;br&gt;o site é:&lt;br&gt;&lt;a href="http://www.try2hack.nl/"&gt;http://www.try2hack.nl/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Caramba... este site é fera mesmo... muito difícil... estou no nível 7...
&lt;br&gt;

&lt;br&gt;
não vou falar as senhas... perde a graça... mas vai as dicas:
&lt;br&gt;

&lt;br&gt;
Existem senhas plantadas e sites espalhados na internet de maneira a
enganar... e algumas destas senhas &amp;quot;dadas&amp;quot; podem te banir de acordo com
as regras do site.
&lt;br&gt;

&lt;br&gt;
1º - Exibe o código fonte da página... 
&lt;br&gt;2º - O swf funciona sim em qualquer browser q tenha o flash
instalado... mas só na primeira vez... vc não pode digitar errado... &lt;br&gt;
       Abra o swf em um editor de textos qualquer...
&lt;br&gt;
3º - Javascript Debugger - in firefox &lt;img src="http://images.guiadohardware.net/smiles/icon_wink.gif" alt=Wink border=0&gt;...
&lt;br&gt;
4º - JAD - Java decompiler
&lt;br&gt; se vc não tem java, não se preocupe pegando o trecho de código certo vc pode fazer um javascript e executar em um browser, mudando só um pouco a sintax pra ele te dar a senha pronta... ficar tentando fazer substring na mão é f*** ... e o javascript tem o mesmo princípio do substring q o java.&lt;br&gt;
5º - dodi - vb3 decompiler
&lt;br&gt;
      seje criativo... um vbscript pode ajudar se vc tiver o ie instalado (no linux o ie funciona com o wine)
&lt;br&gt;
6º - Usando um sniffer
capture os dados criptografados e a chave... a criptografia é no padrão BACONIAN... eu até fiz um script pra decodificar:&lt;br&gt;basta salvar este código em um arquivo .html e executar com o firefox ou IEca:&lt;br&gt;************ Inicio do javascript (html) *************&lt;br&gt;&lt;div&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;/** &lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* javascript para descriptografia baconian&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* Por Glaudiston Gomes da Silva&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* BACONIAN (25-letter plaintext maximum)&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;*&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* A = aaaaa  E = aabaa  I/J= abaaa  N = abbaa  R = baaaa W = babaa&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* B = aaaab  F = aabab   K = abaab  O = abbab  S = baaab X = babba&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* C = aaaba  G = aabba   L = ababa  P = abbba  T = baaba Y = babba&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;* D = aaabb  H = aabbb   M = ababb  Q = abbbb U/V= baabb Z = babbb&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;*/&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;alfabeto = new Array(&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;e&amp;quot;,&amp;quot;f&amp;quot;,&amp;quot;g&amp;quot;,&amp;quot;h&amp;quot;,&amp;quot;i&amp;quot;,&amp;quot;k&amp;quot;,&amp;quot;l&amp;quot;,&amp;quot;m&amp;quot;,&amp;quot;n&amp;quot;,&amp;quot;o&amp;quot;,&amp;quot;p&amp;quot;,&amp;quot;q&amp;quot;,&amp;quot;r&amp;quot;,&amp;quot;s&amp;quot;,&amp;quot;t&amp;quot;,&amp;quot;v&amp;quot;,&amp;quot;w&amp;quot;,&amp;quot;x&amp;quot;,&amp;quot;y&amp;quot;,&amp;quot;z&amp;quot;)&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;function replaceAll( sS, str1, str2)&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;{&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    while ( sS.indexOf(str1) &amp;gt;= 0 )&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    {&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        sS = sS.replace(str1, str2);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    }&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    return sS&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;}&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;function converteBinaryToDecimal( S ){&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    j=0;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    ret=0;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    while (j&amp;lt;S.length){&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        valorCasa=0;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        valorCasa=S.substring(S.length-1-j,S.length-j)&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        ret += valorCasa*Math.pow(2,j);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        j++;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    }&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    //alert('o decimal de \nS:'+S+'\nretornou:'+ret);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    return ret;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;}&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;function converteBaconianToString( S ){&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    // Converte o código cryp para um array binario&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    tmp = replaceAll( replaceAll( S,&amp;quot;a&amp;quot;,&amp;quot;0&amp;quot;) , &amp;quot;b&amp;quot;, &amp;quot;1&amp;quot;);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    i=0;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    retBin = new Array()&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    while (tmp.indexOf(&amp;quot; &amp;quot;) &amp;gt;= 0 ){&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        retBin[i] = tmp.substring(0, tmp.indexOf(' '));&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        tmp = tmp.substring(tmp.indexOf(&amp;quot; &amp;quot;)+1);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        i++;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    }&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    retBin[i] = tmp;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    // Converte para valores decimais&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    retStr = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    retDec = 0;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    for (i=0; i&amp;lt;retBin.length; i++){&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        retDec = converteBinaryToDecimal(retBin[i]+&amp;quot;&amp;quot;);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;        retStr += alfabeto[retDec];&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;//        alert(retStr);&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    }&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    // Pega no array do alfabeto.&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;    return retStr;&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;}&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;usuario=&amp;quot;&amp;quot;; //Coloque aqui o usuario q vc achou pelo sniffer&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;senha=&amp;quot;&amp;quot;; &lt;/span&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;//Coloque aqui a senha q vc achou pelo sniffer&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;site=&amp;quot;&amp;quot;; &lt;/span&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;//Coloque aqui o site q vc achou pelo sniffer&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;usuario = converteBaconianToString( usuario );&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;senha = converteBaconianToString( senha );&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;site=converteBaconianToString( site );&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;document.write (('&amp;lt;pre&amp;gt;usuario: '+usuario+'\nSenha..: '+senha+'\nSite...: '+site+'&amp;lt;/pre&amp;gt;'+&amp;quot;&amp;quot;).toUpperCase());&lt;/span&gt;&lt;br style="font-family:Courier New,Courier,Monospace"&gt;&lt;span style="font-family:Courier New,Courier,Monospace"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;

&lt;br&gt;*******Fim do Script********&lt;br&gt;&lt;br&gt;agora, quando eu tiver um tempo vou descobrir como passo pelo nível 7... mas daqui em diante as coisas ficam pretas!&lt;br&gt;&lt;br&gt;&lt;div&gt;if (talento&amp;lt;destaque) {return esforço^2} //Se não puder se destacar pelo talento, vença pelo esforço.
&lt;br&gt;

&lt;br&gt;
Abs,
&lt;br&gt;
Ton&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Teste+sua+compet%c3%aancia+Hacker&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!198.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!198.entry</guid><pubDate>Wed, 26 Jul 2006 16:57:14 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!198/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!198.entry#comment</wfw:comment><dcterms:modified>2006-08-08T21:48:00Z</dcterms:modified></item><item><title>Migrando para Linux</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!197.entry</link><description>Podemos dividir os usuários que tentam migrar para o linux de 2 formas: Usuários que se esforçam muito e se tornam usuários avançados e usuários que desistem e voltam para o Rwindows &lt;img src="/rte/emoticons/smile_tongue.gif"&gt;&lt;br&gt;    Migrar para o linux tem inúmeras vantagens ... mas também tem algumas graves desvantagens... &lt;br&gt;    As vantagens englobam a segurança de estar livre de vírus, spywares, adwares, não precisar de um anti-virus que deixa a máquina lentíssima, não ter q gastar tempo toda semana... só isto já é motivo pra migrar... todos os programas necessários para viver são gratuitos... e são excelentes programas... fato que nos deixa de conciência limpa.&lt;br&gt;&lt;br&gt;    Agora vamos falar um pouco das desvantágens... o primeiro ponto é que é muito difícil para um usuário comum migrar para o linux... o problema é que o linux foi feito por profissionais e para profissionais... nos ultimos anos ele tem tentado alcançar os usuários comuns e devagar tem conquistado seu espaço... a interface já está muito interativa, até acho ele melhor e mais bonito que o Rwindows XP... mas ainda é muito complicado á um usuário entender como funciona a instalação de aplicativos (normalmente precisam ser recompilados)... não é nada do outro mundo pra quem sabe... mas pra quem nunca ouviu falar em programas fontes parece ser... &lt;br&gt;    E ainda por cima tem a questão das dependências... é assim... você quer instalar um programa... mas pra instalar este programa você precisa instalar outros programas... em distribuições mais interativas como o Debian ou kurumin existem ferramentas como apt-get que tentam resolver as dependências... mas muitas vezes esbarram em detalhes de configurações erradas que impedem das versões corretas das dependências serem baixadas... logo acontece um erro e complica a vida do usuário.&lt;br&gt;    Depois de apanhar e pesquisar muito no google começa-se a aprender como funciona o linux por dentro... isto permite ao usuário se lapidado cada vez mais aprendendo e descobrindo que nada sabe... outras pessoas passam a te considerar um profissional e vai chegar um dia que você achará que não foi tão difícil assim... mas foi &lt;img src="/rte/emoticons/smile_teeth.gif"&gt;.&lt;br&gt;    Bom... &amp;quot;ignorando&amp;quot; os problemas de instalação vamos falar de outras desvantagens.&lt;br&gt;&lt;br&gt;    A maioria dos programas são feitos apenas para rodar em Rwindows já ouvi até que a micro$oft tem contrato com empresas como a ea games e a sierra software (as 2 maiores empresas de desenvolvimento de jogos do mundo) para que elas nunca façam seus jogos para outras plataformas que não o Rwindows - mas se é verdade não sei.&lt;br&gt;    É claro que a comunidade open-source sabe que para conquistar usuários é necessário permitir que eles usem todos os programas que usam em windows... como os jovens podem viver sem seus jogos preferidos? não ... se não tiverem seus jogos no linux eles vão voltar para o Rwindows... eu mesmo já quase voltei por achar complicado configurá-los no linux... mas tem jeito... por isto continuarei no linux (pois eu sou brasileiro e eu não desisto nunca &lt;img src="/rte/emoticons/smile_wink.gif"&gt;).&lt;br&gt;&lt;br&gt;    Já falamos logo atrás das dependências... exatamente por isto que os jogos e demais programas do Rwindows não funcionam no linux... todos os programas feitos para Rwindows são feitos usando a api do windows e tecnologias microsoft como o directX... e como são tecnologias proprietárias da microsoft é lógico que a microsoft não vai disponibilizar estas tecnologias para o linux... seria suicídio.&lt;br&gt;&lt;br&gt;    De qualquer forma a comunidade open-source tem se esforçado e conseguido muitos avanços nesta área... em alguns anos não haverá nenhuma dificuldade em configurar nenhum programa ou jogo do windows no linux... porém hoje já funciona... mas dá muito trabalho... em outro artigo vou tentar explicar como instalar um jogo do Rwindows no linux... ainda estou tentando.&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Migrando+para+Linux&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!197.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!197.entry</guid><pubDate>Sun, 14 May 2006 13:42:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!197/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!197.entry#comment</wfw:comment><dcterms:modified>2006-09-28T18:01:23Z</dcterms:modified></item><item><title>Desenvolvimento WEB para iniciantes</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!195.entry</link><description>Este é o histórico de um bate-papo com meu tio (que me ensinou a programar)... acredito q finalmente ele vai se dedicar a programar para a web... neste histórico ensinei a ele como funcionam os aplicativos web...&lt;br&gt;acho q será util a qualquer um:&lt;br&gt;Ton: oq o sr já entendeu do desenvolvimento web?&lt;br&gt;Ton: descreva como funciona um programa web pra mim.&lt;br&gt;Vicente: Eu estava lendo sobre o java... já tive uma boa noção...&lt;br&gt;Vicente: só como o vb tem o seu software, para gerar as aplicações, eu entendi que para programar e gerar aplicações em java, tem um software, eu entendi que um dos programas é o eclipse que gera...&lt;br&gt;Vicente: estou saindo bem?hehe&lt;br&gt;Vicente: _093,&lt;br&gt;Ton: na verdade, pra programar em java vc não precisa de nada além do edit do DOS ou do bloco de notas do windows... o eclipse é uma dentre as muitas ferramentas que ajudam nesta tarefa&lt;br&gt;Vicente: isso...&lt;br&gt;Vicente: entendi...&lt;br&gt;Ton: ele te fala onde está os erros, como corrigir .. etc ... só isto&lt;br&gt;Ton: mas e quanto à web? como funciona?&lt;br&gt;Vicente: é simples... hehe vc digita www.fontedavida.com.br  e pronto...&lt;br&gt;Vicente: vc tá dentro do site... viu....&lt;br&gt;Vicente: 8-|...&lt;br&gt;Vicente: tô entendendo tudo...hehe&lt;br&gt;Ton: vi... então vamos ver... do lado do cliente... ele digita www.fontedavida.com.br e recebe q tipo de codigo?&lt;br&gt;Vicente: ouuu... para de arrochar...&lt;br&gt;Vicente: eu entendo, mas não sei os termos técnicos...&lt;br&gt;Ton: estou querendo ver até onde o sr entendeu.&lt;br&gt;Ton: pense comigo... o usuário final acessa a internet pelo browser (ie, firefox, netscape, opera, konqueror ou qualquer outro).&lt;br&gt;Vicente: :$...&lt;br&gt;Vicente: sim...&lt;br&gt;Ton: ele digita um endereço qualquer e recebe um código que o browser identifica e mostra o resultado da página ao usuário... este código é o HTML... sempre&lt;br&gt;Vicente: ok...&lt;br&gt;Vicente: quem faz a leitura, é o browser...&lt;br&gt;Ton: exatamente...então o browser pegou o html e gerou uma &amp;quot;tela&amp;quot; pro usuário... com campos textos... botões etc.&lt;br&gt;Vicente: sim...&lt;br&gt;Ton: por isto o sr tem q conhecer html.&lt;br&gt;Vicente: tô entendendo...&lt;br&gt;Ton: html é simples e fácil.&lt;br&gt;Vicente: todo código, independente da linguagem WEB, tem que estar no padrão HTML...&lt;br&gt;Vicente: dentro daqueles parametros do HTML... exemplo &amp;lt;BODY&amp;gt;....&lt;br&gt;Ton: toda e qualquer tecnologia, ASP, PHP,ASP.NET, JSP, SERVLETS(JAVA), sempre vão mandar simplesmente um HTML pro usuário&lt;br&gt;Ton: isto não muda&lt;br&gt;Ton: o browser só entende isto... por isto não pode mudar.&lt;br&gt;Vicente: agora o que muda é a tecnologia...&lt;br&gt;Vicente: recursos da tecnologia...&lt;br&gt;Ton: isso... o q muda é a forma q vc vai criar o HTML&lt;br&gt;Vicente: aí onde no momento vc está vendo vantagens no JAVA?! &lt;br&gt;Vicente: isso...&lt;br&gt;Ton: primeiro, porq java é muito mais maduro em web q todas as outras tecnologias... foi desenvolvido à muito mais tempo e é muito mais aperfeiçoado ...&lt;br&gt;depois por que ele é muito mais rápido que qualquer outro...&lt;br&gt;e pra finalizar ele é independente de plataforma... vou explicar.&lt;br&gt;Ton: qualquer computador (cliente) que acesse o site recebe um codigo html... mas quem envia este codigo html é o &amp;quot;SERVIDOR WEB&amp;quot;... este servidor é a ponte entre a tecnologia usada pra gerar o código HTML e o browser do cliente... entendeu?&lt;br&gt;Vicente: &amp;quot;SERVIDOR WEB&amp;quot;, que vc está dizendo seria como a JATAINET?&lt;br&gt;Ton: não... isto é provedor de internet&lt;br&gt;Ton: apesar dele poder oferecer o serviço de servidor...&lt;br&gt;Ton: já ouviu falar de hospedagem?&lt;br&gt;Vicente: Esse servidor fica localizado onde então?&lt;br&gt;Vicente: sim...&lt;br&gt;Vicente: a JATAINET, não hospeda?&lt;br&gt;Ton: não sei se a jatainet hospeda... &lt;br&gt;Ton: se hospedar ela será tbm um servidor web.&lt;br&gt;Ton: servidor web é simplesmente hospedar o programa.&lt;br&gt;Vicente: e isso, é gerado um número do IP...&lt;br&gt;Ton: vamos por outro lado...&lt;br&gt;Vicente: TÔ entendendo...&lt;br&gt;Vicente: só estou querendo referenciar...&lt;br&gt;Ton: quando vc acessa um site... por exemplo... www.google.com... internamente o browser procura o ip do google : porta 80&lt;br&gt;Vicente: e entender o papel da JATAINET...&lt;br&gt;Vicente: ok...&lt;br&gt;Ton: o &amp;quot;servidor web&amp;quot;  está escutando a porta 80... e quando detecta alguem chamando nessa porta, ele diz ao programa q precisa de um código HTML pra devolver pra quem está chamando... entendeu?&lt;br&gt;Vicente: sim...&lt;br&gt;Ton: q bom... no caso de ASP e ASP.NET o servidor web se chama IIS&lt;br&gt;Vicente: cada endereço tem uma porta no provedor?&lt;br&gt;Ton: não... a porta web padrão sempre é a 80&lt;br&gt;Ton: o q muda é o endereço q vc está chamando no caso o ip e a pasta&lt;br&gt;Vicente: entendi...&lt;br&gt;Ton: e no caso de PHP e JAVA( JSP E SERVLETS ) o servidor é o tomcat&lt;br&gt;Vicente: é um programa ou tecnologia?&lt;br&gt;Ton: o IIS só funciona nos windows... já o tomcat funciona em windows, linux... mac... etc&lt;br&gt;Ton: servidor web é um programa&lt;br&gt;Ton: cada tecnologia usa um servidor web q dê suporte a ela.&lt;br&gt;Ton: os 2 principais são o :&lt;br&gt;IIS - Internet Information Services - Usado pela microsoft... apenas para HTML, ASP e ASP.NET.. funciona apenas em windows&lt;br&gt;APACHE TOMCAT - Servidor Apache.. usado em todas as tecnologias não microsoft como JSP, SERVLETS (JAVA), PHP, CGI... etc... funciona em qualquer sistema operacional.&lt;br&gt;Vicente: entendi...&lt;br&gt;Ton: no nosso caso estaremos usando o servidor apache tomcat... que já instalamos em seu computador.&lt;br&gt;Vicente: Agora entendi, o porque vc instalou o APACHE TOMCAT...&lt;br&gt;Ton: exatamente... &lt;br&gt;Vicente: o meu computador, se quiser, poderá ser um hospedador...&lt;br&gt;Vicente: é isso?&lt;br&gt;Ton: o certo é &amp;quot;hospedeiro&amp;quot;... mas é isso mesmo.&lt;br&gt;Vicente: hehe&lt;br&gt;Ton: se alquem da sua rede local digitar o ip da sua máquina vai receber o código html do nosso programa &lt;br&gt;Vicente: isso quer dizer que posso ter um computador, na minha casa, com o APACHE, e ser um hospedeiro, e ganhar com isso...$SS&lt;br&gt;Ton: sim... mas tem um problema com isto... a porta web é a 80... e pra sacanear, a BRASILTELECOM e todas as operadoras BLOQUEIAM a porta 80 nas ADSL residenciais... &lt;br&gt;Ton: isto força o sr ter q adiquirir um ADSL empresarial&lt;br&gt;Vicente: o que aumenta é o custo, certo?&lt;br&gt;Ton: e outro problema é q o ip muda sempre q o modem é reiniciado...&lt;br&gt;Ton: sim... o custo do ADSL empresarial é normalmente o dobro&lt;br&gt;Ton: mas pra tudo tem jeito&lt;br&gt;Vicente: num tem aqueles programas que mantêm ip&lt;br&gt;Ton: exatamente...&lt;br&gt;Ton: isto resolve o problema do ip...&lt;br&gt;Ton: mas não o da porta... mas este é só chamar com o dois pontos &amp;quot;:&amp;quot; e uma porta qualquer... e configurar o tomcat pra escutar esta outra porta&lt;br&gt;Ton: os programas q mantem o ip atualizado usam uma tecnologia chamada &amp;quot;Dinamic DNS&amp;quot; isto é... o sr tem um dominio ex: glaudiston.dyndns.org e este dominio redireciona pra seu ip... e este redirecionamento é atualizado sempre q seu ip muda.&lt;br&gt;Ton: pra resolver o problema da porta 80 o q podemos fazer eh o seguinte:&lt;br&gt;Ton: entendendo q estamos configurado com um ip dinâmico &amp;quot;Dinamic DNS&amp;quot;... o usuário pode digitar no browser nosso dominio e vai ser redirecionado pra nosso computador ex:&lt;br&gt;http://glaudiston.dyndns.org&lt;br&gt;mas isto levaria ele para a porta 80 (porq é a porta padrão)... &lt;br&gt;então é só configurar o tomcat pra escutar outra porta (sugiro 8080) q não é bloqueada pela brasiltelecom... e os clientes podem se conectar adicionando :PORTA ao dominio... exemplo:&lt;br&gt;http://glaudiston.dyndns.org:8080&lt;br&gt;Ton: entendeu?&lt;br&gt;Ton: desta forma o sr pode hospedar quantos sites quiser em casa, e receber algum din din com isto... &lt;br&gt;Vicente pediu sua atenção!&lt;br&gt;Vicente: entendi...&lt;br&gt;Vicente: Gostei da aula, e gostei do fina da aula...&lt;br&gt;Ton: porq já terminou?&lt;br&gt;Vicente: VC tem mais tempo?&lt;br&gt;Ton: o q for necessário&lt;br&gt;Vicente: uai... aqui estou até 12:00 depois fecha...&lt;br&gt;Vicente: estou a sua disposição, afinal, não é qualquer um que tem um sobrinho professor...hehe&lt;br&gt;Ton: ok... então baseado nisto... o sr já sabe o funcionamento básico da web... qualquer tecnologia trabalha assim... as variações começão daki pra frente... partindo da linguagem... antes de chegar no servidor web&lt;br&gt;Vicente: ok...&lt;br&gt;Ton: então o sr tem o eclipse que é o editor de código fonte... ele edita e compila tudo sozinho... tambem tem ferramentas para a depuração do código.&lt;br&gt;Ton: agora, ainda não temos tudo o q precisamos... nos falta o banco de dados.&lt;br&gt;Vicente: beleza...&lt;br&gt;Vicente: vamos garoto...yes_&lt;br&gt;Ton: umagine as camadas.... vc tem a base de dados como primeira camada, o aplicativo q acessa a base como segunda camada, o servidor web como terceira camada (pode ter um firewall por segurança como quarta camada) e o cliente final acessando pelo browser como ultima camada.&lt;br&gt;Vicente: (tcc) estou pronto... vamos começar...&lt;br&gt;Vicente: çç&lt;br&gt;Ton: para esta ultima camada anda falta escolhermos nosso banco de dados... então temos q analisar as opções:&lt;br&gt;Vicente: SIM...  vamos lá...&lt;br&gt;Ton: Oracle = Multiplataforma, leva a fama de ser o melhor do mundo... é muitíssimo caro, teriamos q piratear&lt;br&gt;MSSQL Server - O Servidor tem q ser windows, um dos melhores bancos de dados do mundo... igual com o oracle... é muito caro, teriamos q piratear&lt;br&gt;Postgres = Banco de dados totalmente open source( fontes abertos) desenvolvido para ter alta performance... e se equiparar aos grandes (oracle e sqlServer)... muito bom mesmo... e totalmente de graça... e funciona em qualquer plataforma&lt;br&gt;MySQL = Como o Postgres só q bem mais fraco&lt;br&gt;Vicente: Lógico, veio logo a solução... POSTGRES...&lt;br&gt;Ton: :D&lt;br&gt;Vicente: 8-|&lt;br&gt;Ton: ainda não instalamos o postgres em sua máquina... vamos ter q fazer isto.&lt;br&gt;Vicente: Feito prôs crentes...hehe&lt;br&gt;Ton: estou pegando o link pra te mandar... o sr ainda está usando windows né?&lt;br&gt;Vicente: preciso...&lt;br&gt;Ton: este:&lt;br&gt;http://wwwmaster.postgresql.org/redir?ftp%3A%2F%2Fftp2.br.postgresql.org%2Fpostgresql%2Fbinary%2Fv8.1.3%2Fwin32%2Fpostgresql-8.1.3-1.zip&lt;br&gt;Ton: se não der na primeira tente denovo ... faça o download e instale&lt;br&gt;Ton: está fazendo o download?&lt;br&gt;Vicente: não tá parando na tela, para confirmar o download...&lt;br&gt;Ton: então confirme&lt;br&gt;Vicente: começou&lt;br&gt;Ton: são 21 Mb&lt;br&gt;Vicente: beleza... já foram... 6%&lt;br&gt;Ton: isto é o banco de dados em sí... existem ferramentas que facilitam a vida pra desenvolver no banco de dados.. ele já vem com uma... se chama pgAdmin... é muito boa...&lt;br&gt;Vicente: Bom, eu estou entendendo que até agora, estamos apenas criando a estrutura a nível de ferramentas, para podermos começar a aprender... é isso mesmo?&lt;br&gt;Ton: isto&lt;br&gt;Vicente: bom_&lt;br&gt;Ton: mas esta estrutura o sr tem q saber de cor... porq na empresa q quiser o banco de dados local o sr terá q fazer esta estrutura.&lt;br&gt;Ton: baixou ?&lt;br&gt;Vicente: 60 %&lt;br&gt;Ton: quando terminar... o sr vai descompactar em algum diretório e instalar... não tente instalar de dentro do arquivo.zip q dá erro.&lt;br&gt;Vicente: ok&lt;br&gt;Vicente: 79 %&lt;br&gt;Vicente: terminou&lt;br&gt;Ton: o conteudo do arquivo é :&lt;br&gt;postgresql-8.1.msi - Instalador do postgreSQL 8.1 ... execute este primeiro pra instalar o banco de dados&lt;br&gt;postgresql-8.1-int.msi - arquivo necessário para atualizar para a versão 8.1.3 do postgre... não precisa executar este arquivo...&lt;br&gt;README.TXT - apenas instruções de instalação em english...&lt;br&gt;upgrade.bat - um bat pra atualizar do 8.1 para o 8.1.3&lt;br&gt;Vicente: configuração do serviço...&lt;br&gt;Vicente: entra aqui...&lt;br&gt;Ton: espere... estou removendo aki pra reinstalar e te acompanhar.&lt;br&gt;Ton: nas opções de instalação o sr marcou tudo?&lt;br&gt;Vicente: não...&lt;br&gt;Vicente: só brasil&lt;br&gt;Vicente: entendi..&lt;br&gt;Vicente: é´prá marcar&lt;br&gt;Ton: depois de selecionar brasil, passa pra contrato... e depois opções de instalação&lt;br&gt;Vicente: sim...&lt;br&gt;Ton: achou? &lt;br&gt;Vicente: sim&lt;br&gt;Vicente: marca tudo&lt;br&gt;Ton: clique no primeiro item ( PostgreSQL ) e selecione Todo o recurso será instalador no disco rígido&lt;br&gt;Ton: e clique em próximo&lt;br&gt;Vicente: ok&lt;br&gt;Vicente: ok&lt;br&gt;Vicente: configuração do serviço&lt;br&gt;Ton: instalar como serviço permite q o postgre seja iniciado automaticamente com o windows&lt;br&gt;Vicente: sim&lt;br&gt;Ton: o nome do serviço pode deixar padrão&lt;br&gt;Vicente: ok&lt;br&gt;Vicente: conta&lt;br&gt;Ton: a conta o postgres já deixou como o padrão dele... apenas digite a senha ...&lt;br&gt;Vicente: Dominio: VICENTE&lt;br&gt;Vicente: Próximo?&lt;br&gt;Ton: sim&lt;br&gt;Vicente: iniciar o agrupamento de banco de dados&lt;br&gt;Ton: deixe padrão... altere apenas a senha para uma q o sr NÃO vá esquecer.&lt;br&gt;Vicente: habilitar linguagens procedurais...&lt;br&gt;Vicente: deixe a unica opcao marcada?&lt;br&gt;Vicente: pl/pgsql&lt;br&gt;Vicente pediu sua atenção!&lt;br&gt;Ton: deixe padrão&lt;br&gt;Vicente: :$...&lt;br&gt;Vicente: Habilitar módulos contrib&lt;br&gt;Ton: daki pra frente é só avançar&lt;br&gt;Ton: não precisa mexer em mais nada&lt;br&gt;Ton: instalou?&lt;br&gt;Vicente: ok&lt;br&gt;Vicente: já executei o elefantinho...hehe&lt;br&gt;Ton: pgAdmin?&lt;br&gt;Vicente: sim&lt;br&gt;Vicente: tá certo?&lt;br&gt;Ton: claro&lt;br&gt;Vicente: hehe&lt;br&gt;Vicente: então tá pronto...&lt;br&gt;Vicente: bom o início é estudar então... html...é isso&lt;br&gt;Ton: viu como é mais fácil q o sql server pra instlar?&lt;br&gt;Vicente: muito mais fácil...&lt;br&gt;Vicente: muito mais leve... também... pude perceber... estou gostando...&lt;br&gt;Vicente: estou perguntando... porque meu tempo está acabando...&lt;br&gt;Ton: vai se impressionar com bases gigantescas&lt;br&gt;Ton: aqui temos bases de milhores de registros q ele faz consultas em menos de 50 milésimos segundos&lt;br&gt;Ton: agora tem q entender como funciona o html... e o java...&lt;br&gt;Vicente: bem, vamos entender... o apache e o postgres... é de graça...&lt;br&gt;Ton: agora seu pc está pronto&lt;br&gt;Ton: isto&lt;br&gt;Vicente: tem como estudar o html, dentro do eclipse&lt;br&gt;Ton: claro.&lt;br&gt;Vicente: o eclipse tem um run, como no vb, para testar os fontes&lt;br&gt;Ton: depois q instalamos o eclipse em seu computador descobri uma versão do eclipse q já vem otimizada pra web... tem editor html e tudo.&lt;br&gt;Ton: mais ou menos... é um pouco diferente... mas tem as mesmas funcionalidades.&lt;br&gt;Vicente: o java que vai me ensinar é na mão...&lt;br&gt;Ton: semana q vem veremos isto... afinal o sr disse q agora vai ter q sair.&lt;br&gt;Ton: sim... &lt;br&gt;Ton: mas é muito gostoso.&lt;br&gt;Vicente: não tem, como no vb?&lt;br&gt;Ton: até tem... mas não é tão fácil quanto na mão... o sr vai entender.&lt;br&gt;Vicente: o eclipse, não gera nada?/&lt;br&gt;Vicente: ok...&lt;br&gt;Vicente: nesta semana, o que eu posso fazer para ir adiantando...&lt;br&gt;Ton: calma... por hoje vamos encerrar... senão vai ficar assunto pela metade.&lt;br&gt;Vicente: pelo menos um hora por dia....&lt;br&gt;Ton: estudar html.&lt;br&gt;Vicente: ok.... então...&lt;br&gt;Ton: bênção tio.]&lt;br&gt;Vicente: tem algum tutorial... realmente para iniciante...&lt;br&gt;Vicente: pera´aí.,.,&lt;br&gt;Ton: opa... facil facil&lt;br&gt;Ton: http://www.htmlstaff.org/iniciantes/webmaster.zip&lt;br&gt;Ton: tutorial para iniciantes em webmaster&lt;br&gt;Ton: http://www.apostilando.com/sessao.php?cod=5&lt;br&gt;Ton: acho q este ultimo resolve :D&lt;br&gt;Vicente: ok...&lt;br&gt;Ton: ainda está aí?&lt;br&gt;Vicente: sim...&lt;br&gt;Ton: só queria resaltar q toda a tecnologia e programas q estamos usando é totalmente gratuita... sem necessidade nenhuma de pirataria... e o melhor multiplataforma...&lt;br&gt;Vicente: isso é muito bom filho... &lt;br&gt;Vicente: estou verificando a última...&lt;br&gt;Vicente: ultima apostila.... muito boa.. estudarei essa semana... &lt;br&gt;Vicente: muito obrigado por tudo, e Deus o abençoe vc e a Lela...&lt;br&gt;Ton: ok... quando estiver com dúvidas pode chamar.&lt;br&gt;Vicente: um ótimo final de semana...&lt;br&gt;Ton: pro sr tbm.&lt;br&gt;Vicente: tudo que está fazendo por mim....&lt;br&gt;Vicente: quero que o Senhor Jesus te recompense... em Nome de Jesus...&lt;br&gt;&lt;br&gt;Espero q isto seja util&lt;br&gt;Abs,&lt;br&gt;Ton&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Desenvolvimento+WEB+para+iniciantes&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!195.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!195.entry</guid><pubDate>Sat, 11 Mar 2006 15:36:35 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!195/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!195.entry#comment</wfw:comment><dcterms:modified>2006-03-11T16:45:07Z</dcterms:modified></item><item><title>Agora sou desenvolvedor totalmente Open Source</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!194.entry</link><description>Pois é... depois de anos trabalhando com clipper, visual basic, vb.net, c#, asp.net ... etc... consegui um emprego de gerencia de desenvolvimento de sistemas que não usa tecnologia microsoft... no caso java, e sabe que gostei disto?&lt;br&gt;Gostei tanto que resolvi pesquisar e me aprofundar nisto e acho difícil voltar para tecnologias microsoft.&lt;br&gt;&lt;br&gt;Não só por causa do java... agora estou usando o kurumin debian linux aqui no meu pc, funciona muito melhor que o windows xp... claro que é complicado por ser um usuário um pouco inesperiente... mas está muito mais rápido que o ms win xp... e o melhor ... tudo o que posso vir a precisar está aqui e é totalmente grátis... não tenho que gastar fortunas com programas e/ou piratear outros por não conseguir comprar.&lt;br&gt;&lt;br&gt;Atualmente estou programando web com java e desktop usando o kdevelop3 uma ide poderosa e open source :D para desenvolver em C++.&lt;br&gt;&lt;br&gt;Em breve tirarei um tempo para postar o projeto que estou iniciando, aliás que estou planejando à muito tempo, e agora começo a me sentir preparado para iniciar.&lt;br&gt;&lt;br&gt;Abraços,&lt;br&gt;Ton.&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Agora+sou+desenvolvedor+totalmente+Open+Source&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!194.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!194.entry</guid><pubDate>Tue, 28 Feb 2006 13:24:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!194/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!194.entry#comment</wfw:comment><dcterms:modified>2006-09-28T18:02:42Z</dcterms:modified></item><item><title>Controle do register em vb6</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!172.entry</link><description>&lt;div&gt;&lt;pre style="font-size:x-small;font-family:monospace"&gt;Navegando na net encontrei esta bela rotina... &lt;br&gt;será util pra quem quer ter um maior controle sobre o windows &lt;img src="/rte/emoticons/smile_wink.gif"&gt;&lt;br&gt;PS: Não sou responsável pelo mal uso deste código.&lt;/pre&gt;&lt;pre style="font-size:x-small;font-family:monospace"&gt;-------------------------&lt;br&gt;'Add a module to your project (In the menu choose Project -&amp;gt; Add Module, Then click Open)&lt;br&gt;'Add 5 Command Buttons To your Form.&lt;br&gt;'Insert this code to the module :&lt;br&gt;&lt;br&gt;Public Type SECURITY_ATTRIBUTES&lt;br&gt;nLength As Long&lt;br&gt;lpSecurityDescriptor As Long&lt;br&gt;bInheritHandle As Long&lt;br&gt;End Type&lt;br&gt;&lt;br&gt;Declare Function RegOpenKeyEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegOpenKeyExA&amp;quot; _&lt;br&gt;(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _&lt;br&gt;ByVal samDesired As Long, phkResult As Long) As Long&lt;br&gt;Declare Function RegCloseKey Lib &amp;quot;advapi32.dll&amp;quot; (ByVal hKey As Long) As Long&lt;br&gt;Declare Function RegQueryValueEx Lib &amp;quot;advapi32&amp;quot; Alias &amp;quot;RegQueryValueExA&amp;quot; _&lt;br&gt;(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As _&lt;br&gt;Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long&lt;br&gt;Declare Function RegSetValueEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegSetValueExA&amp;quot; (ByVal _&lt;br&gt;hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal _&lt;br&gt;dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long&lt;br&gt;Declare Function &lt;b style="color:black;background-color:#ffff66"&gt;RegDeleteValue&lt;/b&gt; Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegDeleteValueA&amp;quot; _&lt;br&gt;(ByVal hKey As Long, ByVal lpValueName As String) As Long&lt;br&gt;Declare Function RegCreateKeyEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegCreateKeyExA&amp;quot; _&lt;br&gt;(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _&lt;br&gt;ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, _&lt;br&gt;lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, _&lt;br&gt;lpdwDisposition As Long) As Long&lt;br&gt;Declare Function RegDeleteKey Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegDeleteKeyA&amp;quot; _&lt;br&gt;(ByVal hKey As Long, ByVal lpSubKey As String) As Long&lt;br&gt;Public Enum T_KeyClasses&lt;br&gt;HKEY_CLASSES_ROOT = &amp;amp;H80000000&lt;br&gt;HKEY_CURRENT_CONFIG = &amp;amp;H80000005&lt;br&gt;HKEY_CURRENT_USER = &amp;amp;H80000001&lt;br&gt;HKEY_LOCAL_MACHINE = &amp;amp;H80000002&lt;br&gt;HKEY_USERS = &amp;amp;H80000003&lt;br&gt;End Enum&lt;br&gt;&lt;br&gt;&lt;br&gt;Private Const SYNCHRONIZE = &amp;amp;H100000&lt;br&gt;Private Const STANDARD_RIGHTS_ALL = &amp;amp;H1F0000&lt;br&gt;Private Const KEY_QUERY_VALUE = &amp;amp;H1&lt;br&gt;Private Const KEY_SET_VALUE = &amp;amp;H2&lt;br&gt;Private Const KEY_CREATE_LINK = &amp;amp;H20&lt;br&gt;Private Const KEY_CREATE_SUB_KEY = &amp;amp;H4&lt;br&gt;Private Const KEY_ENUMERATE_SUB_KEYS = &amp;amp;H8&lt;br&gt;Private Const KEY_EVENT = &amp;amp;H1&lt;br&gt;Private Const KEY_NOTIFY = &amp;amp;H10&lt;br&gt;Private Const READ_CONTROL = &amp;amp;H20000&lt;br&gt;Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)&lt;br&gt;Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)&lt;br&gt;Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or _&lt;br&gt;KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY _&lt;br&gt;Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) _&lt;br&gt;And (Not SYNCHRONIZE))&lt;br&gt;Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or _&lt;br&gt;KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) _&lt;br&gt;And (Not SYNCHRONIZE))&lt;br&gt;Private Const KEY_EXECUTE = (KEY_READ)&lt;br&gt;Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or _&lt;br&gt;KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))&lt;br&gt;Private Const REG_BINARY = 3&lt;br&gt;Private Const REG_CREATED_NEW_KEY = &amp;amp;H1&lt;br&gt;Private Const REG_DWORD = 4&lt;br&gt;Private Const REG_DWORD_BIG_ENDIAN = 5&lt;br&gt;Private Const REG_DWORD_LITTLE_ENDIAN = 4&lt;br&gt;Private Const REG_EXPAND_SZ = 2&lt;br&gt;Private Const REG_FULL_RESOURCE_DESCRIPTOR = 9&lt;br&gt;Private Const REG_LINK = 6&lt;br&gt;Private Const REG_MULTI_SZ = 7&lt;br&gt;Private Const REG_NONE = 0&lt;br&gt;Private Const REG_SZ = 1&lt;br&gt;Private Const REG_NOTIFY_CHANGE_ATTRIBUTES = &amp;amp;H2&lt;br&gt;Private Const REG_NOTIFY_CHANGE_LAST_SET = &amp;amp;H4&lt;br&gt;Private Const REG_NOTIFY_CHANGE_NAME = &amp;amp;H1&lt;br&gt;Private Const REG_NOTIFY_CHANGE_SECURITY = &amp;amp;H8&lt;br&gt;Private Const REG_OPTION_BACKUP_RESTORE = 4&lt;br&gt;Private Const REG_OPTION_CREATE_LINK = 2&lt;br&gt;Private Const REG_OPTION_NON_VOLATILE = 0&lt;br&gt;Private Const REG_OPTION_RESERVED = 0&lt;br&gt;Private Const REG_OPTION_VOLATILE = 1&lt;br&gt;Private Const REG_LEGAL_CHANGE_FILTER = (REG_NOTIFY_CHANGE_NAME _&lt;br&gt;Or REG_NOTIFY_CHANGE_ATTRIBUTES Or _&lt;br&gt;REG_NOTIFY_CHANGE_LAST_SET Or _&lt;br&gt;REG_NOTIFY_CHANGE_SECURITY)&lt;br&gt;Private Const REG_LEGAL_OPTION = (REG_OPTION_RESERVED Or _&lt;br&gt;REG_OPTION_NON_VOLATILE Or REG_OPTION_VOLATILE Or _&lt;br&gt;REG_OPTION_CREATE_LINK Or REG_OPTION_BACKUP_RESTORE)&lt;br&gt;&lt;br&gt;Public Sub DeleteRegistryKey(rClass As T_KeyClasses, Path As String)&lt;br&gt;Dim res As Long&lt;br&gt;res = RegDeleteKey(rClass, Path)&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Public Sub DeleteValue(rClass As T_KeyClasses, Path As String, sKey As String)&lt;br&gt;Dim hKey As Long&lt;br&gt;Dim res As Long&lt;br&gt;res = RegOpenKeyEx(rClass, Path, 0, KEY_ALL_ACCESS, hKey)&lt;br&gt;res = &lt;b style="color:black;background-color:#ffff66"&gt;RegDeleteValue&lt;/b&gt;(hKey, sKey)&lt;br&gt;RegCloseKey hKey&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Public Sub CreateRegistryKey(rClass As T_KeyClasses, Path As String)&lt;br&gt;Dim hKey As Long&lt;br&gt;Dim res As Long&lt;br&gt;Dim y As SECURITY_ATTRIBUTES&lt;br&gt;Dim Operation As Long&lt;br&gt;res = RegCreateKeyEx(rClass, Path, 0, &amp;quot;&amp;quot;, 0, KEY_ALL_ACCESS, y, hKey, Operation)&lt;br&gt;RegCloseKey hKey&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Public Function GetRegValue(KeyRoot As T_KeyClasses, Path As String, _&lt;br&gt;sKey As String) As String&lt;br&gt;Dim hKey As Long&lt;br&gt;Dim KeyValType As Long&lt;br&gt;Dim KeyValSize As Long&lt;br&gt;Dim KeyVal As String&lt;br&gt;Dim tmpVal As String&lt;br&gt;Dim res As Long&lt;br&gt;Dim i As Integer&lt;br&gt;res = RegOpenKeyEx(KeyRoot, Path, 0, KEY_ALL_ACCESS, hKey)&lt;br&gt;If res &amp;lt;&amp;gt; 0 Then GoTo Errore&lt;br&gt;tmpVal = String(1024, 0)&lt;br&gt;KeyValSize = 1024&lt;br&gt;res = RegQueryValueEx(hKey, sKey, 0, KeyValType, tmpVal, KeyValSize)&lt;br&gt;If res &amp;lt;&amp;gt; 0 Then GoTo Errore&lt;br&gt;If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then&lt;br&gt;tmpVal = Left(tmpVal, KeyValSize - 1)&lt;br&gt;Else&lt;br&gt;tmpVal = Left(tmpVal, KeyValSize)&lt;br&gt;End If&lt;br&gt;Select Case KeyValType&lt;br&gt;Case REG_SZ&lt;br&gt;KeyVal = tmpVal&lt;br&gt;Case REG_DWORD&lt;br&gt;For i = Len(tmpVal) To 1 Step -1&lt;br&gt;KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))&lt;br&gt;Next&lt;br&gt;KeyVal = Format(&amp;quot;&amp;amp;h&amp;quot; + KeyVal)&lt;br&gt;End Select&lt;br&gt;GetRegValue = KeyVal&lt;br&gt;RegCloseKey hKey&lt;br&gt;Exit Function&lt;br&gt;Errore:&lt;br&gt;GetRegValue = &amp;quot;&amp;quot;&lt;br&gt;RegCloseKey hKey&lt;br&gt;End Function&lt;br&gt;&lt;br&gt;Public Function SetRegValue(KeyRoot As T_KeyClasses, Path As String, sKey As _&lt;br&gt;String, NewValue As String) As Boolean&lt;br&gt;Dim hKey As Long&lt;br&gt;Dim KeyValType As Long&lt;br&gt;Dim KeyValSize As Long&lt;br&gt;Dim KeyVal As String&lt;br&gt;Dim tmpVal As String&lt;br&gt;Dim res As Long&lt;br&gt;Dim i As Integer&lt;br&gt;Dim x As Long&lt;br&gt;res = RegOpenKeyEx(KeyRoot, Path, 0, KEY_ALL_ACCESS, hKey)&lt;br&gt;If res &amp;lt;&amp;gt; 0 Then GoTo Errore&lt;br&gt;tmpVal = String(1024, 0)&lt;br&gt;KeyValSize = 1024&lt;br&gt;res = RegQueryValueEx(hKey, sKey, 0, KeyValType, tmpVal, KeyValSize)&lt;br&gt;Select Case res&lt;br&gt;Case 2&lt;br&gt;KeyValType = REG_SZ&lt;br&gt;Case Is &amp;lt;&amp;gt; 0&lt;br&gt;GoTo Errore&lt;br&gt;End Select&lt;br&gt;Select Case KeyValType&lt;br&gt;Case REG_SZ&lt;br&gt;tmpVal = NewValue&lt;br&gt;Case REG_DWORD&lt;br&gt;x = Val(NewValue)&lt;br&gt;tmpVal = &amp;quot;&amp;quot;&lt;br&gt;For i = 0 To 3&lt;br&gt;tmpVal = tmpVal &amp;amp; Chr(x Mod 256)&lt;br&gt;x = x \ 256&lt;br&gt;Next&lt;br&gt;End Select&lt;br&gt;KeyValSize = Len(tmpVal)&lt;br&gt;res = RegSetValueEx(hKey, sKey, 0, KeyValType, tmpVal, KeyValSize)&lt;br&gt;If res &amp;lt;&amp;gt; 0 Then GoTo Errore&lt;br&gt;SetRegValue = True&lt;br&gt;RegCloseKey hKey&lt;br&gt;Exit Function&lt;br&gt;Errore:&lt;br&gt;SetRegValue = False&lt;br&gt;RegCloseKey hKey&lt;br&gt;End Function&lt;br&gt;&lt;br&gt;'Insert the following code to your form:&lt;br&gt;&lt;br&gt;Private Sub Command1_Click()&lt;br&gt;'This will get the value of 'wallpaper' key from &lt;br&gt;'HKEY_CURRENT_USER\Control Panel\Desktop' path&lt;br&gt;MsgBox GetRegValue(HKEY_CURRENT_USER, &amp;quot;Control Panel\Desktop&amp;quot;, &amp;quot;wallpaper&amp;quot;)&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Private Sub Command2_Click()&lt;br&gt;'This will create the path 'HKEY_CURRENT_USER\MyKey\MySubKey'&lt;br&gt;CreateRegistryKey HKEY_CURRENT_USER, &amp;quot;MyKey\MySubKey&amp;quot;&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Private Sub Command3_Click()&lt;br&gt;'This will delete the path 'HKEY_CURRENT_USER\MyKey' and all its Sub Directories&lt;br&gt;DeleteRegistryKey HKEY_CURRENT_USER, &amp;quot;MyKey&amp;quot;&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Private Sub Command4_Click()&lt;br&gt;'This will change the value of 'MyKeyName' Key that in the path &lt;br&gt;'HKEY_CURRENT_USER\MyKey\MySubKey'. To set the Key value you must&lt;br&gt;'first create the key path (as mention in Command2_Click)&lt;br&gt;SetRegValue HKEY_CURRENT_USER, &amp;quot;MyKey\MySubKey&amp;quot;, &amp;quot;MyKeyName&amp;quot;, &amp;quot;MyValue&amp;quot;&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;Private Sub Command5_Click()&lt;br&gt;'This will delete the Key 'MyKeyName' that found in the path&lt;br&gt;'HKEY_CURRENT_USER\MyKey\MySubKey'&lt;br&gt;DeleteValue HKEY_CURRENT_USER, &amp;quot;MyKey\MySubKey&amp;quot;, &amp;quot;MyKeyName&amp;quot;&lt;br&gt;End Sub&lt;br&gt;'------------END-----------------------------&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Controle+do+register+em+vb6&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!172.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!172.entry</guid><pubDate>Mon, 28 Nov 2005 15:52:54 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!172/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!172.entry#comment</wfw:comment><dcterms:modified>2005-11-28T15:52:54Z</dcterms:modified></item><item><title>RPC em ASP.NET com exemplo(chat)</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!165.entry</link><description>&lt;font size=2&gt;&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;Olá
amigos... Uma dúvida frequente que respondo o caso do RPC(Remote
Procedule Calls)... vou tentar explicar como funciona e dar um exemplo
prático para que vocês entendam
&lt;/span&gt;&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;/font&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;O que é RPC?
   &lt;/font&gt;
&lt;/ul&gt;
&lt;div style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=2&gt;RPC
significa Remote Procedule Calls e serve para fazer chamadas ao
servidor e retornar apenas os dados que queremos. claro que eu poderia
dar uma explicação kilométrica, mas simplificando, é isto e nos resolve
o problema do postback.&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;O que é PostBack?&lt;/font&gt;
&lt;/ul&gt;
&lt;div style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=2&gt;   
PostBack é aquela atualização que ocorre em páginas da internet, no
nosso caso ASP.NET, que é &amp;quot;necessária&amp;quot; para buscar os dados do servidor
e é uma das maiores chatices da programação web, além de tirar o foco
do controle atual normalmente move a scrollbar para o topo da página e
algumas vezes até nos faz perder dados valiosos.&lt;img src="/rte/emoticons/smile_angry.gif"&gt;&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;Como resolver isto?&lt;/font&gt;
&lt;/ul&gt;
&lt;div style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=2&gt;Tem
várias formas de resolver isto, você pode usar um programa como o java
para criar applets que consultam o servidor para retornar os dados,
pode usar o flash que também nos permite isto ou algum outro meio como
parar de programar em asp.net&lt;img src="/rte/emoticons/smile_tongue.gif"&gt;
, mas a opção mais viável por não precisar de nenhum software adicional
no client e funcionar em todos os browsers (pelo menos nos que prestam)
é o RPC usando iframes.&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;O que são iframes?&lt;/font&gt;
&lt;/ul&gt;
&lt;div style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=2&gt;iframe e uma tag de html e seve para abrir um espaço dentro de uma página html para que outra página seja aberta.&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;Como funciona o RPC usando iframe?&lt;/font&gt;
&lt;/ul&gt;
&lt;div style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=2&gt;É
bem simples... teremos um iframe oculto(mas precisa ter alguns
parâmetros definidos como as bordas, caso contrário alguns browsers
podem ignorá-lo), quando digo oculto quero dizer que terá largura e
altura zerados...&lt;br&gt;
e no momento que quisermos buscar os dados alteramos o src do iframe e
isto fará com que o iframe carregue a página que passarmos, mas ao
invés de uma página o que será carregado vai ser um script em
javascript para atualizar a página que a chamou. para isto usaremos o
document.parent.&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;Vamos ao exemplo prático?&lt;/font&gt;
&lt;/ul&gt;
&lt;font size=2&gt;&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;É
verdade... posso explicar muito, mas sem prática vai ser difícil para
alguns entenderem o que é e pra que serve esse tal de RPC com
iframes... então vou fazer a rotina mais requisitada dos ultimos dias
em asp.net... um chat.&lt;/span&gt;&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;para nosso
exemplo usei o VWD2005 beta2 que pode ser encontrado gratuitamente em
http://lab.msdn.com/express (pelo menos até hoje).&lt;/span&gt;&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;mas vcs podem usar qualquer tipo de editor asp.net que o resultado será o mesmo.&lt;/span&gt;&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;também estou usando visualbasic.net para nosso exemplo.&lt;/span&gt;&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;br style="font-family:verdana,geneva,arial,sans-serif"&gt;
&lt;/font&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;então para nosso exemplo inicie um novo projeto no VWD2005 beta2&lt;/font&gt;
  &lt;li&gt;&lt;font size=2&gt;Crie um módulo, ele vai armazenar uma variável
global em nossa aplicação que servirá como banco de dados do nosso
chat... na verdade só ela é necessária...&lt;/font&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;font size=2&gt;para isto clique em file-&amp;gt;new file... e digite ModChat.vb depois substitua o conteúdo do arquivo pelo código abaixo:&lt;/font&gt;
  &lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=""&gt;&lt;span style="font-family:courier new,courier,monospace;font-weight:bold"&gt;&lt;font size=2&gt;Imports Microsoft.VisualBasic&lt;br&gt;
Public Module ModChat&lt;br&gt;
    Public TextoChat As String&lt;br&gt;
End Module&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;br&gt;
&lt;/div&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;crie um novo webform clicando em &lt;span style="font-weight:bold"&gt;file-&amp;gt;new file&lt;/span&gt;... e selecionando &amp;quot;&lt;span style="font-weight:bold"&gt;web form&lt;/span&gt;&amp;quot; (altere o nome pra &lt;span style="font-weight:bold"&gt;Chat.aspx&lt;/span&gt;)&lt;/font&gt;
&lt;/ul&gt;
&lt;ul style="font-family:verdana,geneva,arial,sans-serif"&gt;
  &lt;li&gt;&lt;font size=2&gt;altere o código para o que se segue e execute o
projeto, no código estão as explicações das funções... estude-o e vai
entender.... use a criatividade e fará maravilhas com isto.&lt;/font&gt;
  &lt;li&gt;&lt;font size=2&gt;Me ofereça um bom emprego, estou precisando.&lt;img src="/rte/emoticons/smile_regular.gif"&gt;&lt;/font&gt;
&lt;/ul&gt;
&lt;span style="font-weight:bold;font-family:courier new,courier,monospace"&gt;INICIO DO CODIGO&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;span style="font-family:courier new,courier,monospace"&gt;&lt;font size=2&gt;&lt;span style="font-weight:bold"&gt;&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; ValidateRequest=&amp;quot;false&amp;quot;  %&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    ' Criado por Glaudiston Gomes da Silva&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    ' demonstrando o potencial do RPC via iframe&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    ' para maiores informações glaudiston@hotmail.com&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        If Not Request.Params(&amp;quot;RPC_campo&amp;quot;) Is Nothing Then&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            ' Estamos sendo chamados via RPC...&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            ' neste caso vamos retornar apenas o necessário&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;           
ModChat.TextoChat &amp;amp;= Now.ToString + &amp;quot; - &amp;quot; + Request.UserHostAddress
+ &amp;quot; disse: &amp;quot; + Request.Params(&amp;quot;RPC_campo&amp;quot;) &amp;amp; &amp;quot;&amp;lt;BR/&amp;gt;&amp;quot;  '
Soma o texto na variável do chat&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;           
'Agora basta retornar o valor para a tag no formulario q chamou(owner)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;           
Response.Write(&amp;quot;&amp;lt;SCR&amp;quot; + &amp;quot;IPT&amp;gt;&amp;quot;) ' crio o script separando a
string pra enganar a IDE do VWD2005&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;           
Response.Write(&amp;quot;window.parent.document.getElementById('&amp;quot; &amp;amp;
div1.UniqueID &amp;amp; &amp;quot;').innerHTML='&amp;quot; &amp;amp; TextoChat.Replace(&amp;quot;'&amp;quot;, &amp;quot;&amp;quot;&amp;quot;&amp;quot;)
&amp;amp; &amp;quot;'&amp;quot;) ' Atualizo o conteúdo do chat por esta instrução de script&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            Response.Write(&amp;quot;&amp;lt;/SCR&amp;quot; + &amp;quot;IPT&amp;gt;&amp;quot;) ' Fecho o script&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            Response.End()  ' Processa o RPC&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        End If&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;       
Button1.Attributes.Add(&amp;quot;onclick&amp;quot;,
&amp;quot;document.getElementById('iframeRPC').src='Chat.aspx?RPC_campo='+document.getElementById('&amp;quot;
&amp;amp; TextBox1.UniqueID &amp;amp; &amp;quot;').value&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ' cria um iframe para processar o RPC&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;       
Response.Write(&amp;quot;&amp;lt;iframe id=&amp;quot;&amp;quot;iframeRPC&amp;quot;&amp;quot; style=&amp;quot;&amp;quot;BORDER-RIGHT: 0px;
BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 0px; BORDER-BOTTOM: 0px;
HEIGHT: 0px&amp;quot;&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ' Agora vamos vazer o script pra enviar uma mensagem automática a cada 5 segundos&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ' pra isto vamos criar um segundo iframe pra não ter perigo de interferir&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ' no outro processo&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ' cria um iframe para processar o RPC&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;       
Response.Write(&amp;quot;&amp;lt;iframe id=&amp;quot;&amp;quot;iframeRPC1&amp;quot;&amp;quot; style=&amp;quot;&amp;quot;BORDER-RIGHT: 0px;
BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 0px; BORDER-BOTTOM: 0px;
HEIGHT: 0px&amp;quot;&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;&amp;lt;SCR&amp;quot; + &amp;quot;IPT&amp;gt;&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;function AutoTimer()&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;{&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;       
Response.Write(&amp;quot;
document.getElementById('iframeRPC').src='Chat.aspx?RPC_campo=Auto-Mensagem
chamada por: &amp;quot; &amp;amp; Request.UserHostAddress &amp;amp; &amp;quot;';&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot; setTimeout('AutoTimer()',5000)&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;}&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;setTimeout('AutoTimer()',5000)&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        Response.Write(&amp;quot;&amp;lt;/SCR&amp;quot; + &amp;quot;IPT&amp;gt;&amp;quot;)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    End Sub&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        ModChat.TextoChat = &amp;quot;&amp;quot;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    End Sub&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        &lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        &amp;lt;table height=&amp;quot;100%&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;overflow: scroll&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                &amp;lt;td height=&amp;quot;90%&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                   
&amp;lt;DIV ID=&amp;quot;div1&amp;quot; runat=&amp;quot;server&amp;quot; style=&amp;quot;overflow: scroll; position:
static; height: 500px&amp;quot; &amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                       
Text=&amp;quot;Digite seu texto e clique em enviar.&amp;quot; &amp;lt;/DIV&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                &amp;lt;td style=&amp;quot;height: 2px&amp;quot;&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                   
&amp;lt;asp:TextBox ID=&amp;quot;TextBox1&amp;quot; runat=&amp;quot;server&amp;quot; Width=&amp;quot;537px&amp;quot;&amp;gt;Digite
seu texto aki&amp;lt;/asp:TextBox&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                   
&amp;lt;input type=button ID=&amp;quot;Button1&amp;quot; runat=&amp;quot;server&amp;quot; value=&amp;quot;Enviar&amp;quot; /&amp;gt; &lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;                   
&amp;lt;asp:Button ID=&amp;quot;Button2&amp;quot; runat=&amp;quot;server&amp;quot; OnClick=&amp;quot;Button2_Click&amp;quot;
Text=&amp;quot;Reseta texto do chat&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;            &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;        &amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;    &amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br style="font-weight:bold"&gt;
&lt;span style="font-weight:bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;br&gt;
&lt;span style="font-weight:bold"&gt;FIM DO CODIGO&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="font-family:verdana,geneva,arial,sans-serif"&gt;&lt;font size=3&gt;É
eu sei... não é um chat completo... mas minha esposa está me chamando,
e eu tenho que atendê-la afinal já é de madrugada... e eu não preciso
desta rotina rodando 100%...&lt;img src="/rte/emoticons/smile_teeth.gif"&gt;...
mas a parte difícil está ai... e com um pouco de esforço qualquer
programador consegue fazer um excelente chat com este código.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-weight:bold"&gt;&lt;br&gt;
&lt;/span&gt;Espero ter ajudado&lt;br&gt;
Precisando não se acanhem: glaudiston@hotmail.com&lt;br&gt;
Abraços pessoal.&lt;br&gt;
&lt;div style=""&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+RPC+em+ASP.NET+com+exemplo(chat)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!165.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!165.entry</guid><pubDate>Fri, 26 Aug 2005 02:02:31 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!165/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!165.entry#comment</wfw:comment><dcterms:modified>2005-08-26T02:02:31Z</dcterms:modified></item><item><title>Agora sou Desenvolvedor 3 Estrelas</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!162.entry</link><description>&lt;p&gt;Pronto, passei em todas as provas do desenvolvedor 5 estrelas que estavam disponiveis online, agora sou 3 estrelas... e pensar q descobri isto somente a 4 dias atraz... quanto tempo eu perdi... mas deixa queto, agora e buscar as 2 que ainda faltam. &lt;p&gt;Agora é que complica, até então é de graça e online, agora terei que sair daqui de jataí para ir lá em brasilia buscar a 4ª estrela e até goiânia buscar a 5ª estrela, o problema nem são as provas, sei que se estudar tiro de letra, mas o din-din q é bom nada! &lt;p&gt;Ainda naum sei quanto custa, mas sei q naum é barato, pode dar uma olhada no ranking da msdn tem 209 com a 4ª estrela e 290 com a 5ª estrela, lógico, a maior parte dos que pagam a quarta estrela tem condição e conhecimento de pagar a 5ª tbm. &lt;p&gt;Quando eu tiver mais informações eu postarei aqui. &lt;p&gt;Abraços, &lt;p&gt;Ton&lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://blufiles.storage.live.com&amp;#47;y1pzkch2b8D-kKSunnE4bOBHULLCSFxC694YE-9geJRK5eyYrY82YKSSg6icIGrGqbHgHzZwuEvvxc"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;163&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Agora+sou+Desenvolvedor+3+Estrelas&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!162.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!162.entry</guid><pubDate>Sat, 30 Apr 2005 02:13:31 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!162/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!162.entry#comment</wfw:comment><dcterms:modified>2005-04-30T02:13:31Z</dcterms:modified></item><item><title>Tô me graduando...</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!156.entry</link><description>&lt;p&gt;Isso aí... ontem mesmo começei a fazer as provas do desenvolvedor 5 estrelas da msdn... afinal as 3 primeiras estrelas são de graça... infelismente as outras 2 naum.... &lt;p&gt;andei fazendo umas provas e já passei em quase todas as provas para a 1ª estrela, por enquanto está relativamente fácil, afinal existe treinamento em aprensentação/audio para o conteudo das provas... &lt;p&gt;são 10 provas para a primeira estrela, já teria concluido todas, mas minha internet tah travando muito e estou ficando sem conexão demais... to vendo q vou ter q trocar de provedor... a jatainet tah horrivel mesmo!!!... &lt;br&gt;Eu começo a fazer a prova, respondo as questoes e quando eh hora de enviar jah estou sem internet...&lt;img src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_tongue.gif" height=19 width=19&gt; resultado... acaba o tempo limite pra responder as questoes e eu sou reprovado na prova... ai tenho q esperar 24hs pra fazer denovo.  &lt;img src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_angry.gif" height=19 width=19&gt; &lt;p&gt;Mas eu consigo... já foi liberada as provas de vb.net e c# para a 2ª estrela...provavelmente amanhã consiga minha primeira estrela completa... quanto a 2ª tem mais material pra estudar... acredito que não tenha maiores problemas com ela também, mas é melhor dar uma passada na matéria...  &lt;p&gt;nunca gostei de escola por que eles sempre nos forçam a aprender algo q nunca usaremos ou algo q não sabemos pra q serve ou ateh mesmo algo q naum queremos aprender, mas quando vc busca o conhecimento, vc quer e isso faz a diferença... naum porque a escola acha q eh melhor pra vc , mas porq vc quer isso, e eu quero isto. &lt;p&gt;Estou no rastro de minhas estrelas, vou pegar todas 5.... observem. &lt;p&gt;  &lt;p&gt;Abraços, &lt;p&gt;Ton &lt;br&gt;&lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://blufiles.storage.live.com&amp;#47;y1pHW8NQOB0F6zb9vf9Ucb_S653JCCJEsui0TXlvze6cX5QRmjYMs3sqWSfFRi9brKEOaSW4Bt8Ia4"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;157&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+T%c3%b4+me+graduando...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=glaudiston.spaces.live.com&amp;amp;GT1=glaudiston"&gt;</description><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!156.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!156.entry</guid><pubDate>Wed, 27 Apr 2005 17:17:03 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!156/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!156.entry#comment</wfw:comment><dcterms:modified>2007-12-16T19:11:01Z</dcterms:modified></item></channel></rss>