<?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%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</title><description>Desenvolvimento em todos os aspectos.</description><link>http://glaudiston.spaces.live.com/</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><live:identity><live:id>5810493780584479084</live:id><live:alias>glaudiston</live:alias></live:identity><image><title>Site pessoal de Glaudiston</title><url>http://blufiles.storage.live.com/y1ptwuC-t5mHFuyYWBuoonCoIOOhhYT7R2Sgf3Ekd7Jh4SirlSOpUfiAMDnP3KhBmYm</url><link>http://glaudiston.spaces.live.com/</link></image><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>Desativando este Blog novo Blog: http://glaudiston.blogspot.com/</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!346.entry</link><description>Olá a todos,&lt;br&gt;&lt;br&gt;Agradeço a sua visita, mas estou desativando hoje, 27 de junho de 2008 este espaço.&lt;br&gt;&lt;br&gt;Vou deixar todos os posts aqui, porém já copiei-os para meu novo Blog.&lt;br&gt;&lt;br&gt;Existem várias razões para isto, mas as principais são a falta de recursos para injeção de código html e script neste blog.&lt;br&gt;&lt;br&gt;Obrigado a todos e visitem meu novo blog:&lt;br&gt;&lt;br&gt;&lt;a href="http://glaudiston.blogspot.com/"&gt;http://glaudiston.blogspot.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;E farei o possível para postar com mais frequência.&lt;br&gt;&lt;br&gt;Abs,&lt;br&gt;Glaudiston Gomes&lt;br&gt;IT Specialist.&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Desativando+este+Blog+novo+Blog%3a+http%3a%2f%2fglaudiston.blogspot.com%2f&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!346.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!346.entry</guid><pubDate>Fri, 27 Jun 2008 13:38:04 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!346/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!346.entry#comment</wfw:comment><dcterms:modified>2008-06-27T13:38:04Z</dcterms:modified></item><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><category>Computadores e a Internet</category><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>Carro Novo DíVida Nova...</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!318.entry</link><description>Hoje peguei meu primeiro carro, depois de pesquisar muito e analizar os pontos fortes e fracos, problemas conhecidos, custos de manutenção e freqüência desta manutenção, depreciação, desempenho, valor e dentre outras coisas principalmente conforto, cheguei a conclusão que um importado usado é a melhor escolha para mim.&lt;br&gt;Os importados novos tem uma depreciação muito alta, comparadas com o Vectra e Fusion.&lt;br&gt;Minha escolha foi um Citroën Xsara GLX 1.8 16v GLX.&lt;br&gt;Este carro tem muitas peças compatíveis com o Peugeot 306 e existem aqui em Campinas opções bem em conta para compra de peças originais fora da concessionária da Citroën.&lt;br&gt;Para meus amigos e os que acompanham o meu desenvolvimento estou postando as fotos do meu mais novo brinquedo/recurso&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+Carro+Novo+D%c3%adVida+Nova...&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><category>Pessoal</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!318.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!318.entry</guid><pubDate>Wed, 13 Feb 2008 22:54:43 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!318/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!318.entry#comment</wfw:comment><dcterms:modified>2008-02-13T22:54:43Z</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><category>Computadores e a Internet</category><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>Desafio, um jogo 2D até dia 23-12-2007 ... Feito!</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!313.entry</link><description>No início deste mês aceitei um desafio do meu amigo Bill Guedes no forum programadoresdejogos.com.br, aqui está o desafio:&lt;br&gt;&lt;a href="http://www.programadoresdejogos.com/forum/viewtopic.php?t=9193&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0"&gt;http://www.programadoresdejogos.com/forum/viewtopic.php?t=9193&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0&lt;/a&gt;&lt;br&gt;&lt;br&gt;Se trata de um desafio para testar os conhecimento e capacidades de colocar estes conhecimentos em prática: &amp;quot;Quem consegue fazer um jogo do tipo space invaders até o dia 23 ?&amp;quot;.&lt;br&gt;Como achei a idéia simples, e eu tinha outras prioridades, trabalhei pouco nela, só peguei firme nesta ultima semana, quando acordei do fato que o prazo estava acabando.&lt;br&gt;&lt;br&gt;No final das contas, fiquei satisfeito com o resultado, fiz o jogo com usando o autotools, em bibliotecas divididas para o ambiente, o menu e o jogo em si.&lt;br&gt;Coloquei audio... e está bem jogável.&lt;br&gt;&lt;br&gt;Sei que tem alguns detalhes errados, e falta algumas coisas do que eu havia pensado em fazer, mas já está bom. Pelo meno concluí a tempo.&lt;br&gt;&lt;br&gt;Quem quiser testar este jogo &amp;quot;beta&amp;quot;, pegue-o no meu projeto &lt;a href="http://bombas.sf.net"&gt;bombas.sf.net&lt;/a&gt; no link de downloads&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Desafio%2c+um+jogo+2D+at%c3%a9+dia+23-12-2007+...+Feito!&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!313.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!313.entry</guid><pubDate>Sun, 23 Dec 2007 17:54:56 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!313/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!313.entry#comment</wfw:comment><dcterms:modified>2007-12-23T17:54:56Z</dcterms:modified></item><item><title>autotools parte2 - adicionando dependencias</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!303.entry</link><description>Bem, no artigo anterior, já expliquei como funciona o autotools:&lt;br&gt;&lt;a href="http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!298.entry"&gt;http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!298.entry&lt;/a&gt;&lt;br&gt;&lt;br&gt;Agora vou explicar como adicionar dependências.&lt;br&gt;&lt;br&gt;Neste exemplo, vou puxar pro lado de desenvolvimento de games, usando SDL que é uma biblioteca portável, que tem funções de controle de hardware entre outras coisas que facilitam muito nossa vida, e outras bibliotecas derivadas do SDL, como o SDL_image para controle de imagens de vários formatos, o SDL_mixer para o controle de mid, wav, ogg e mp3, o SDL_gfx, para rotação e zoom de imagens ou filmes, o SDL_mpeg para reprodução de filmes... etc.&lt;br&gt;&lt;br&gt;Vamos começar com a teoria:&lt;br&gt;Pelo que já vimos, você deve ter percebido que o autotools trabalha com macros, macros são funções prontas, programas que você passa um comando com parâmetros ou não e eles executam determinadas funções.&lt;br&gt;Você também já deve ter percebido que estas configurações são centralizadas nos arquivos configure.ac e Makefile.am. Sim... continua assim, porém vamos colocar mais um arquivo importante: o acinclude.m4 .&lt;br&gt;&lt;br&gt;acinclude.m4:&lt;br&gt;    Este arquivo é uma forma de adicionar macros que podem ser usadas dentro do configure.ac, por exemplo: o Sam Lantinga, desenvolvedor do SDL, criou um arquivo chamado sdl.m4 que está no código fonte do SDL, você pode baixar este código na página do SDL em &lt;a href="http://www.libsdl.org"&gt;http://www.libsdl.org&lt;/a&gt;, e copiar este arquivo sdl.m4 para o nosso diretório base. depois disto é só adicionar sdl.m4 em nosso arquivo acinclude.m4.in ou acinclude.m4, adicionar o teste desta biblioteca no arquivo configure.ac e executar o autogen.sh&lt;br&gt;Depois de copiar o sdl.m4, só é necessário adionar uma linha com o conteudo sdl.m4 no acinclude.m4.in ... NÃO é preciso nada como #include sdl.m4 ... apenas o sdl.m4... depois disto o script de teste no configure.ac, deve ser colocado na parte de libraries é assim:&lt;br&gt;&lt;pre&gt;dnl Check for SDL &lt;br&gt;SDL_VERSION=1.2.0&lt;br&gt;AM_PATH_SDL($SDL_VERSION, &lt;br&gt;         :,&lt;br&gt;         AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) &lt;br&gt;) &lt;br&gt;CXXFLAGS=&amp;quot;$CXXFLAGS $SDL_CFLAGS&amp;quot; &lt;br&gt;LIBS=&amp;quot;$LIBS $SDL_LIBS&amp;quot;&lt;/pre&gt;Para mais informações, consulte o artigo: &lt;a href="http://www.samhart.com/snh/files/docs/sdl-kdev/sdl-kdev-mini-how2-2.html"&gt;http://www.samhart.com/snh/files/docs/sdl-kdev/sdl-kdev-mini-how2-2.html&lt;/a&gt;&lt;br&gt; &lt;br&gt;Agora se tudo está certo, você pode executar nosso script de reconfiguração (vide artigo anteiror citado acima):&lt;br&gt;$ sh autogen.sh&lt;br&gt;&lt;br&gt;O resultado esperado é:&lt;br&gt; sh autogen.sh &lt;br&gt;checking for a BSD-compatible install... /usr/bin/install -c&lt;br&gt;checking whether build environment is sane... yes&lt;br&gt;checking for a thread-safe mkdir -p... /bin/mkdir -p&lt;br&gt;checking for gawk... gawk&lt;br&gt;checking whether make sets $(MAKE)... yes&lt;br&gt;checking for gcc... gcc&lt;br&gt;checking for C compiler default output file name... a.out&lt;br&gt;checking whether the C compiler works... yes&lt;br&gt;checking whether we are cross compiling... no&lt;br&gt;checking for suffix of executables... &lt;br&gt;checking for suffix of object files... o&lt;br&gt;checking whether we are using the GNU C compiler... yes&lt;br&gt;checking whether gcc accepts -g... yes&lt;br&gt;checking for gcc option to accept ISO C89... none needed&lt;br&gt;checking for style of include used by make... GNU&lt;br&gt;checking dependency style of gcc... gcc3&lt;br&gt;checking for sdl-config... /usr/bin/sdl-config&lt;br&gt;checking for SDL - version &amp;gt;= 1.2.0... yes&lt;br&gt;configure: creating ./config.status&lt;br&gt;config.status: creating Makefile&lt;br&gt;config.status: creating src/Makefile&lt;br&gt;config.status: creating config.h&lt;br&gt;config.status: config.h is unchanged&lt;br&gt;config.status: executing depfiles commands&lt;br&gt;&lt;br&gt;Observe que agora temos uma parte onde o SDL está sendo checado por uma versão superior à 1.2.0&lt;br&gt;&lt;br&gt;Isto é suficiente pro SDL, mas e quando temos outras dependências que não nos dão as macros m4 prontas ?&lt;br&gt;A primeira coisa é procurar no google... muitas vezes, no código fonte não vem o arquivo m4, mas alguém criou e postou em algum lugar. Então, se você encontrar vai simplificar muito seu configure.ac da forma q fizemos acima. Mas se o google não achar ? como fazer ?&lt;br&gt;&lt;br&gt;Neste caso, você pode criar seu arquivo m4, ou pode simplesmente adicionar o uma verificação no configure.ac, só q vai poluir um pouco nosso arquivo configure.ac que até então está bem simples.&lt;br&gt;&lt;br&gt;Depois vou postar mais entrada a respeito disto: autotools, criando seu próprio m4.&lt;br&gt;&lt;br&gt;Por hora é só. Tenho que fazer algum código também &lt;img src="http://shared.live.com/HjKMzTS-xzcms40!CabizA/emoticons/smile_tongue.gif" title="Tongue out" alt="Tongue out" style="vertical-align:middle"&gt;&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+autotools+parte2+-+adicionando+dependencias&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><category>Computers and Internet</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!303.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!303.entry</guid><pubDate>Mon, 10 Dec 2007 16:44:52 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!303/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!303.entry#comment</wfw:comment><dcterms:modified>2007-12-10T16:44:52Z</dcterms:modified></item><item><title>ifconfig não funciona??? net-tools!!!</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!302.entry</link><description>Hahaaa!!!&lt;br&gt;&lt;br&gt;Usando o LinuxFromScratch, e tentando executar alguns programas que configuram VPN, tive vários problemas, e testando, descobri que o problema é que o ifconfig que eu estava usando era o do netutils, e não o do net-tools... segue alguns:&lt;br&gt;'ifconfig: can not resolve`down`: No address associated with name&amp;quot;&lt;br&gt;&amp;quot;ifconfig: cannot resolve `up': No address associated with name&amp;quot;&lt;br&gt;&amp;quot;ifconfig eth0 up&amp;quot;&lt;br&gt;&amp;quot;ifconfig: can not resolve `up': Unknown host&amp;quot;&lt;br&gt;# ifconfig -a&lt;br&gt;ifconfig: option requires an argument -- a&lt;br&gt;Usage: ifconfig [OPTION]... [SYSTEM OPTION]...&lt;br&gt;Try `ifconfig --help' for more information.': No address associated with name&amp;quot;&lt;br&gt;&amp;quot;ifconfig: can not resolve `up': No address associated with name&amp;quot;&lt;br&gt;&amp;quot;ifconfig eth0 up&amp;quot;&lt;br&gt;&amp;quot;ifconfig: can not resolve `up': Unknown host&amp;quot;&lt;br&gt;# ifconfig -a&lt;br&gt;ifconfig: option requires an argument -- a&lt;br&gt;Usage: ifconfig [OPTION]... [SYSTEM OPTION]...&lt;br&gt;&lt;br&gt;E o incrível, é q o google não acha nenhum resultado com a maioria destas pesquisas.&lt;br&gt;&lt;br&gt;O LFS Book bem q me avisou pra não instalar o ifconfig do netutils... mas não disse q tinha ifconfig no net-tools tbm... então eu q fiquei quebrando a cabeça e consegui resolver com a ajuda do Guedes... valeu mais esta Bill!&lt;br&gt;&lt;br&gt;resumindo, é só instalar o net-tools:&lt;br&gt;http://www.linuxfromscratch.org/blfs/view/stable/basicnet/net-tools.html&lt;br&gt;&lt;br&gt;Abs&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+ifconfig+n%c3%a3o+funciona%3f%3f%3f+net-tools!!!&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><category>Computers and Internet</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!302.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!302.entry</guid><pubDate>Fri, 07 Dec 2007 17:06: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!302/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!302.entry#comment</wfw:comment><dcterms:modified>2007-12-09T22:17:01Z</dcterms:modified></item><item><title>Autotools, ah se todos usassem !!!</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!298.entry</link><description>autotools é um conjunto de ferramentas que simplifica a verificação de dependências e compilação de programas.&lt;br&gt;&lt;br&gt;É tão usado no mundo opensource que é até um padrão usado e recomendado pelo gnu.&lt;br&gt;tudo se torna simples quando se tem um projeto usando autotools... &lt;br&gt;Você apenas descompacta os fontes com:&lt;br&gt;tar xvf nomedoarquivo.tar.bz2&lt;br&gt;depois usa:&lt;br&gt;./configure&lt;br&gt;make&lt;br&gt;make install&lt;br&gt;&lt;br&gt;Se o código depender de outro componente que não exista em seu ambiente, ele vai ser detectado no ./configure ... sendo assim fica fácil descobrir o que está faltando e instalar esta dependência antes de executar o make que é a parte demorada do processo.&lt;br&gt;&lt;br&gt;O make é a compilação do programa... isto costuma demorar... e muitas vezes tem que executar centenas de subcompilações com linhas de comandos que incluem várias bibliotecas e que seria inviável para um usuário digitá-las na mão, um script para esta compilação poderia ser mantido pelo desenvolvedor do programa, mas daria muito trabalho a ele. É aqui que entra o autotools, ele cria este script automaticamente com um esforço mínimo do desenvolvedor.&lt;br&gt;Mas infelismente muitos projetos não o usam.&lt;br&gt;&lt;br&gt;Vou mostrar em um exemplo prático como é fácil e prático usá-lo.&lt;br&gt; &lt;br&gt;Vamos criar um novo diretório com o nome autotools-example:&lt;br&gt;$ mkdir autotools-example&lt;br&gt;$ cd autotools-example&lt;br&gt;&lt;br&gt;teremos um subdiretório src onde ficaram os fontes:&lt;br&gt;$ mkdir src&lt;br&gt;&lt;br&gt;e agora vamos criar um arquivo representando o nosso código:&lt;br&gt;cat &amp;gt; src/main.c &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;&lt;br&gt;int main(int argc, char** argv)&lt;br&gt;{&lt;br&gt;        printf(&amp;quot;funciona!!!\n&amp;quot;); &lt;br&gt;        return 0;&lt;br&gt;}&lt;br&gt;&lt;br&gt;EOF&lt;br&gt;&lt;br&gt;pronto... já temos um código do programa, hora de usar o autotools pra compilar.&lt;br&gt;O autotools precisa de um arquivo de referência onde ele vai pesquisar para saber o nome do programa que está sendo compilado e qual é a versão atual, onde estão os arquivos fontes, além de validações obrigatórias ou opcionais, como por exemplo um programa que pode ou não ter suporte a som, dependendo de um parâmetro que o usuário passa para o ./configure... também é no configure.ac que o desenvolvedor personaliza mensagens para o usuário e adiciona verificações adicionais para certificar que o código será compilado.&lt;br&gt;&lt;br&gt;parece complicado né ? mas na prática é simples... olhe:&lt;br&gt;Primeiro use o autoscan que varre todos os arquivos do diretório e subdiretórios para detectar os arquivos fontes e criar o configure.ac que é um dos arquivos essenciais do autotools que o programador deve editar.&lt;br&gt;$ autoscan&lt;br&gt;agora devem ter sido criados 2 arquivos: autoscan.log e configure.scan.&lt;br&gt;&lt;br&gt;o arquivo configure.scan é o configure.ac que nós precisamos para o autotools, e que foi criado automaticamente pelo comando autoscan e o autoscan.log registra algum erro ou mensagens ocorridas durante o processo do autoscan.&lt;br&gt;renomeie o arquivo configure.scan para configure.ac :&lt;br&gt;$ mv configure.scan configure.ac&lt;br&gt;&lt;br&gt;vamos olhar o conteúdo do configure.ac e analisar o que precisaremos atualizar:&lt;br&gt;$ more configure.ac&lt;br&gt;#                                                -*- Autoconf -*-&lt;br&gt;# Process this file with autoconf to produce a configure script&lt;br&gt;&lt;br&gt;AC_PREREQ(2.61)&lt;br&gt;AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)&lt;br&gt;AC_CONFIG_SRCDIR([src/main.c])&lt;br&gt;AC_CONFIG_HEADER([config.h])&lt;br&gt;&lt;br&gt;# Checks for programs.&lt;br&gt;AC_PROG_CC&lt;br&gt;&lt;br&gt;# Checks for libraries.&lt;br&gt;&lt;br&gt;# Checks for header files.&lt;br&gt;&lt;br&gt;# Checks for typedefs, structures, and compiler characteristics.&lt;br&gt;&lt;br&gt;# Checks for library functions.&lt;br&gt;&lt;br&gt;AC_OUTPUT&lt;br&gt;&lt;br&gt;bom... vamos ver...&lt;br&gt;todas as linhas começando com #(sharp, cerquilha, ou jogo da velha, como preverir) são comentários, e ignorados pelo autotools, então a primeira linha de código é:&lt;br&gt;AC_PREREQ(2.61)&lt;br&gt;está dizendo que no ambiente onde será compilado, deve existir instalado o autotools versão 2.61 ou superior.&lt;br&gt;&lt;br&gt;Logo após vem:&lt;br&gt;AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)&lt;br&gt;aqui temos o lugar onde dizemos ao autotools qual é o nosso programa, a versão do nosso programa, e o endereço de email para onde os usuários devem mandar emails em caso de erros. atualize isto como preferir como no exemplo abaixo:&lt;br&gt;AC_INIT(autotools-example, 1.0, [seuemail at dominio dot com] )&lt;br&gt;&lt;br&gt;depois temos:&lt;br&gt;AC_CONFIG_SRCDIR([src/main.c])&lt;br&gt;aqui ele detectou corretamente o nosso diretório de códigos fontes.&lt;br&gt;&lt;br&gt;AC_CONFIG_HEADER([config.h])&lt;br&gt;este arquivo config.h deve pelo comando autoheader e server para definir variáveis de compilação para o autotools, como o PACKAGE_NAME, opções ativas por padrão... etc...&lt;br&gt;$ autoheader&lt;br&gt;&lt;br&gt;agora vamos criar nosso script configure...&lt;br&gt;$ autoconf&lt;br&gt;&lt;br&gt;pronto... se tudo deu certo, agora você terá um arquivo configure em seu diretório, execute-o:&lt;br&gt;$ ./configure&lt;br&gt;&lt;br&gt;ele vai verificar tudo pela primeira vez e criar o config.h...&lt;br&gt;&lt;br&gt;mas ainda precisamos cuidar do automake que irá compilar o nosso projeto.&lt;br&gt;para isto precisamos adicionar um AM_INIT_AUTOMAKE( nomedoprograma, versao ) no configure.ac, então adicione isto logo abaixo de AC_CONFIG_HEADER.&lt;br&gt;AM_INIT_AUTOMAKE(exemplo, 1.0)&lt;br&gt;&lt;br&gt;além disto também é necessário informar quais Makefiles precisam ser criados... então no finao do arquivo configure.ac altere a linha AC_OUTPUT para:&lt;br&gt;AC_OUTPUT([&lt;br&gt;        Makefile&lt;br&gt;        src/Makefile&lt;br&gt;])&lt;br&gt;&lt;br&gt;pronto, agora execute um autoreconf para atualizar os arquivos:&lt;br&gt;$ autoreconf&lt;br&gt;vamos atualizar o automake agora com o parâmetro --add-missing, para que ele crie os arquivos faltantes:&lt;br&gt;$ automake --add-missing&lt;br&gt;&lt;br&gt;agora um ultimo passo é criar o Makefile.am que é bem simples:&lt;br&gt;cat &amp;gt; Makefile.am &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot;&lt;br&gt;SUBDIRS = src&lt;br&gt;&lt;br&gt;EXTRA_DIST = NOTES autogen.sh&lt;br&gt;&lt;br&gt;EOF&lt;br&gt;&lt;br&gt;e um Makefile.ac no diretório de fontes, onde informaremos quem deve ser compilado:&lt;br&gt;cat &amp;gt; src/Makefile.am &amp;lt;&amp;lt;&amp;quot;EOF&amp;quot;&lt;br&gt;bin_PROGRAMS = exemplo&lt;br&gt;exemplo_SOURCES = main.c&lt;br&gt;&lt;br&gt;EOF&lt;br&gt;&lt;br&gt;vamos criar um script pra reconfigurar os arquivos, já fizemos isto, mas precisaremos fazer varias vezes durante o desenvolvimento, um script vai ajudar muito:&lt;br&gt;&lt;br&gt;cat &amp;gt; autogen.sh &amp;lt;&amp;lt;&amp;quot;EOF&amp;quot;&lt;br&gt;#!/bin/sh&lt;br&gt;#&lt;br&gt;aclocal&lt;br&gt;automake --add-missing --foreign&lt;br&gt;autoconf&lt;br&gt;&lt;br&gt;./configure $*&lt;br&gt;EOF&lt;br&gt;&lt;br&gt;agora execute ele:&lt;br&gt;$ sh autogen.sh&lt;br&gt;&lt;br&gt;bem... se vc executar o automake:&lt;br&gt;$ automake&lt;br&gt;vai receber várias mensagens de erros dizendo q ele não encontrou arquivos necessários... alguns podem ser criados automaticamentes com o parâmetro --add-missing... então vamos criá-los:&lt;br&gt;$ automake --add-missing&lt;br&gt;$ touch NEWS README AUTHORS ChangeLog&lt;br&gt;&lt;br&gt;lembre-se de transformar os links simbólicos possivelmente criados pelo automake --add-missing em arquivos reais antes de compartilhar seu projeto, vc pode fazer isto copiando os arquivos dos links e substituindo-os.&lt;br&gt;&lt;br&gt;Neste ponto já deve estar tudo pronto, e você já pode executar:&lt;br&gt;./configure&lt;br&gt;make&lt;br&gt;&lt;br&gt;e já deve ter um arquivo executavel com o nome exemplo na pasta src... então execute:&lt;br&gt;$ src/exemplo&lt;br&gt;funciona!!!&lt;br&gt;&lt;br&gt;se apareceu funciona!!! parabéns, vc acaba de criar seu primeiro projeto com autotools... &lt;br&gt;&lt;br&gt;depois vou mostrar como gerenciar dependências, como o SDL e outros...&lt;br&gt;&lt;br&gt;Qualquer dúvida usem os comentários.&lt;br&gt;Abs...&lt;br&gt;Ton&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Autotools%2c+ah+se+todos+usassem+!!!&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><category>Computers and Internet</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!298.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!298.entry</guid><pubDate>Fri, 23 Nov 2007 01:34:54 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!298/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!298.entry#comment</wfw:comment><dcterms:modified>2007-11-23T01:34:54Z</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><category>Computadores e a Internet</category><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><category>Computadores e a Internet</category><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>UltraStar - A nova geração de karaokê</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!283.entry</link><description>Algumas semandas atrás, minha esposa me pediu que eu conseguisse um programa de karaokê para que ela exercite sua doce voz(para os que não sabem ela é cantora, uma bela cantora com uma linda voz mas continuando... ), &lt;br&gt;então eu pesquisei...&lt;br&gt;pesquisei....&lt;br&gt;De início achei muitos programas de karaokes pagos...&lt;br&gt;E alguns gratúitos como o kanário que é brasileiro, usa o microsoft agent... aqueles bichinhos do office 2000 e da pesquisa do windows xp...&lt;br&gt;não gostei muito... tem restrições na versão gratuita... e não estava afim de pagar por um aplicativo tão simples... mas funciona...&lt;br&gt; depois de algumas semanas ela me pediu algo melhor... &lt;br&gt;Logo... de volta ao google... pesquisei mais um pouco e encontrei o microke - Muito bom mesmo vale a pena postar os links... além de ser gratuito e sem frescuras de ficar te avisando q existem muitos recursos q não estão ativos porq é gratuito... ele te dá acesso fácil à uma fonte excelente de arquivos de karaoke (.kar) e em outros formatos aceitos por este programa também... vale muito a pena... mas não se compara com nossa próxima descoberta... de qualquer forma segue o link: &lt;br&gt;&lt;a href="http://www.microke.com.br/new/index.html"&gt;http://www.microke.com.br/new/index.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Mas então, em um momento iluminado, pensei... &amp;quot;Uai... o sf.net deve com certeza ter alguma coisa totalmente gratuita e aberta onde além de deixar minha esposa se divertir, poderia colaborar de alguma forma com o crescimento do projeto...&amp;quot; e foi o que fiz... deixei o oráculo (leia-se google), e fui ao sf.net pesquisar... e o que encontrei me surpreendeu demasiadamente: &lt;br&gt;&lt;a href="http://sourceforge.net/project/screenshots.php?group_id=191560"&gt;http://sourceforge.net/project/screenshots.php?group_id=191560&lt;/a&gt;&lt;br&gt;&lt;br&gt; Não posso deixar de compartilhar o quanto fiquei facinado com este aplicativo. Além de ter uma versão portada pra linux, e opcionalmente funcionar via wine esta versão deluxe, conta com um site que permite o download das musicas no formato do aplicativo... o&lt;br&gt;&lt;a href="http://www.ultrastarsongs.com/"&gt;http://www.ultrastarsongs.com/&lt;/a&gt;&lt;br&gt;O download é simples e tem um acervo enorme de músicas em inglês... Porém, este site tem um controle muito rígido dos downloads... se tentar burlar pode ser bloqueado por mais de 6 horas... então o melhor é baixar as musicas via torrent... encontrei uma boa fonte em: &lt;br&gt;&lt;a href="http://www.torrentz.com/search?q=ultrastar"&gt;http://www.torrentz.com/search?q=ultrastar&lt;/a&gt;&lt;br&gt;&lt;br&gt;Se você não tem um client de torrent, necessário para este tipo de download, pode usar o firefox (&lt;a href="http://www.getfirefox.com"&gt;www.getfirefox.com&lt;/a&gt;) com o addon (um plugin) foxtorrent(&lt;a href="http://www.foxtorrent.com/"&gt;http://www.foxtorrent.com/&lt;/a&gt;)&lt;br&gt;&lt;br&gt;Depois de baixar e instalar o aplicativo, e as músicas, é só copiar as pastas das musicas com os arquivos txt, mp3/ogg, e imagens para a subpasta songs da pasta onde você instalou o ultrastar.&lt;br&gt;&lt;br&gt;A versão Deluxe já vem com uma música pra mostrar o potencial do ultrastar e te dar um bom exemplo de como adicionar novas músicas na pasta... não tem segredo.&lt;br&gt;&lt;br&gt;É um aplicativo fantástico para treinar afinação e fonética de inglês... porém tem um outro problema para nós brasileiros... não existem, ou pelo menos eu não encontrei músicas em português... &lt;br&gt;&lt;br&gt;Por isto, pesquisei e descobri uma forma eficaz e relativamente simples de converter os arquivos kar que conseguimos usar com outros aplicativos de karaoke como o microke para o txt usado pelo ultrastar... depois disto é só adicionar o MP3... fiz uma música, ficou ótimo... e não foi difícil...&lt;br&gt;&lt;br&gt;mas vou tratar disto em um outro post.&lt;br&gt;&lt;br&gt;Qualquer dúvida, postem nos comentários e terei prazer em responder...&lt;br&gt;&lt;br&gt;Abs,&lt;br&gt;Ton&lt;br&gt;&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;y1pw_A1ueODsXLJqI7o3OKn7SU2OkQXS93NKKrOxZdatTsQA1hsrqeQE3qzU94Xs5fP"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;284&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+UltraStar+-+A+nova+gera%c3%a7%c3%a3o+de+karaok%c3%aa&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><category>Entertainment</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!283.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!283.entry</guid><pubDate>Mon, 12 Nov 2007 15:28:07 GMT</pubDate><slash:comments>5</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!283/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!283.entry#comment</wfw:comment><dcterms:modified>2007-11-12T15:28:07Z</dcterms:modified></item><item><title>Saudades na madrugada</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!279.entry</link><description>Princesa, são umas 4 da manhã e estou sem sono, sei que é a falta que estou sentindo de você.&lt;br&gt;
&lt;br&gt;
A melhor decisão que eu tomei foi a de me casar com você, e não consigo passar nem um dia longe.&lt;br&gt;
&lt;br&gt;
Acho que isto é bom, porque após 4 anos juntos continuo te amando, mas não te amando como antes... não... te amo bem mais.&lt;br&gt;
&lt;br&gt;
Te amo bem mais não só porque sempre acreditei que o amor era enfatizado pela convivência,&lt;br&gt;
&lt;br&gt;
Te amo bem mais, porque sempre estive procurando por você, e finalmente você chegou... 5 anos atrás... como você demorou !!!&lt;br&gt;
&lt;br&gt;
Te amo bem mais, porque até hoje você acreditou em mim, e um homem só
precisa disto, uma mulher que o ame e que acredite nele, com isto, o
céu não é nenhum limite. &amp;quot;PRO INFINITO E ALÉM!!! &lt;img src="http://shared.live.com/HjKMzTS-xzcms40!CabizA/emoticons/smile_wink.gif" title=Wink alt=Wink style="vertical-align:middle"&gt;&amp;quot;&lt;br&gt;
&lt;br&gt;
Te amo bem mais, porque quando estávamos em nossos momentos críticos,
ao invés de você me humilhar dizendo que eu não estava conseguindo te
dar a vida que você merecia, você me ajudou, me motivou, e me encorajou
a enfrentar os problemas sabendo que iríamos passar vitoriosos por eles.&lt;br&gt;
&lt;br&gt;
Te amo bem mais, porque quando nos conhecemos, me apaixonei por você, e
já te amei desde o início, mas quando passamos por nossas dificuldades,
você me apoiou.&lt;br&gt;
&lt;br&gt;
Quando saímos de Jataí, você acreditou em mim, sem emprego, sem renda,
sem nada... hoje estamos conseguindo tudo que queremos, um passo de
cada vez, sim... mas é assim que se aprende a andar... e depois
correr... chegaremos lá.&lt;br&gt;
&lt;br&gt;
Poderia passar toda a madrugada aqui dizendo o porque te amo mais
hoje... mas se não conseguir dormir posso ter problemas com o trabalho
e não voltar pra casa amanhã... então... vou me esforçar pra pegar no
sono...&lt;br&gt;
&lt;br&gt;
Bjos... e boa noite.&lt;br&gt;
De quem te ama bem mais;&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+Saudades+na+madrugada&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><category>Pessoal</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!279.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!279.entry</guid><pubDate>Fri, 09 Nov 2007 06:10:47 GMT</pubDate><slash:comments>4</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!279/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!279.entry#comment</wfw:comment><dcterms:modified>2007-11-09T06:10:47Z</dcterms:modified></item><item><title>ANSI C - Portabilidade - WINMAIN LPSTR lpCmdLine to char **argv</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!246.entry</link><description>Sempre tento criar minhas rotinas portáveis... mesmo que elas sejam apenas para aprendizado.&lt;br&gt;&lt;br&gt;Recentemente testei o SDL_mixer que traz uma rotina exemplo bem legal de como funciona, roda todos os formatos suportados, wav, ogg, mp3... etc. Segue o link:&lt;br&gt;&lt;a href="http://jcatki.no-ip.org/SDL_mixer/demos/"&gt;http://jcatki.no-ip.org/SDL_mixer/demos/&lt;/a&gt;&lt;br&gt;Mas enfrentei alguns problemas de compilação por causa dos argumentos passados pela linha de comando, com certeza a rotina foi desenvolvida em linux... aprecio isto... mas não acho interessante para um software ser restrito pelo sistema operacional, mesmo que este seja aberto.&lt;br&gt;&lt;br&gt;Pesquisei coisas como &lt;font face="Courier New"&gt;LPSTR to char**&lt;/font&gt; e &lt;font face="Courier New"&gt;LPWSTR* to char*&lt;/font&gt; mas sem sucesso.&lt;br&gt;&lt;br&gt;É, a microsoft sempre nos dá um trabalho extra totalmente desnecessário, mas vamos lá... &lt;br&gt;&lt;br&gt;Como vocês já sabem (ou deveriam saber), o windows possui uma forma diferente de iniciar o programa.&lt;br&gt;ao invés do famoso, fácil e perfeito:&lt;br&gt;&lt;font style="background-color:rgb(216, 216, 216)" color="#000000" face="Courier New"&gt;int main(int argc, char **argv)&lt;/font&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;ele usa&lt;br&gt;&lt;font style="background-color:rgb(216, 216, 216)" color="#000000" face="Courier New"&gt;INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, &lt;br&gt;            LPSTR lpCmdLine, INT nShowCmd)&lt;/font&gt;&lt;font color="#000000"&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;/font&gt;&lt;br&gt;Assim sendo, você não tem o array para pegar is itens da linha de comando da forma que está acostumado.&lt;br&gt;Então tive que criar uma forma de resolver isto para que eu possa criar meu código sem me preocupar com OS em que está sendo compilado.&lt;br&gt;&lt;br&gt;Segue:&lt;br&gt;&lt;font color="#000000" face="Courier New"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;#ifndef WIN32&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;int main(int argc, char **argv)&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;{&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;#else&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;#include &amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, &lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;            LPSTR lpCmdLine, INT nShowCmd)&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;{&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    int argc;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    char **argv;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    LPWSTR *szArglist;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    szArglist = CommandLineToArgvW(GetCommandLineW(), &amp;amp;argc);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    int __i;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    if( NULL == szArglist ) {&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;        wprintf(L&amp;quot;CommandLineToArgvW failed\n&amp;quot;);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;        return 0;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    } else {&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;        argv = malloc(sizeof(char *) * argc);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;        for( __i=0; __i&amp;lt;argc; __i++) {&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;            int tmp = wcslen(szArglist[__i]);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;            char *c = malloc(sizeof(char) * tmp);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;            wcstombs(c, szArglist[__i], tmp);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;            argv[__i] = c;&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;      &lt;/span&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;  }&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    }&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    // Free memory allocated for CommandLineToArgvW arguments.&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;    LocalFree(szArglist);&lt;/span&gt;&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;span style="background-color:rgb(216, 216, 216)"&gt;#endif&lt;br&gt;    &lt;br&gt;    // O código vem aqui...&lt;br&gt;    // e vc pode acessar o argv normalmente:&lt;br&gt;       int i;&lt;br&gt;       for( i=0; i&amp;lt;argc; i++)&lt;br&gt;           printf(&amp;quot;%d: %s\n&amp;quot;, i, argv[i]);&lt;br&gt;#ifdef WIN32&lt;br&gt;    // Free memory allocated for CommandLineToArgvW arguments.&lt;br&gt;    for ( __i = 0; __i &amp;lt; argc; __i++ )&lt;br&gt;        free(argv[__i]);&lt;br&gt;    free(argv);&lt;br&gt;#endif&lt;br&gt;    return(0);&lt;br&gt;}&lt;br style="background-color:rgb(216, 216, 216)"&gt;&lt;/span&gt;&lt;/font&gt;&lt;br&gt;Me avise se isto for util pra você, ficarei feliz em saber.&lt;br&gt;&lt;br&gt;Até a próxima,&lt;br&gt;Abs,&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+ANSI+C+-+Portabilidade+-+WINMAIN+LPSTR+lpCmdLine+to+char+**argv&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><category>Computers and Internet</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!246.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!246.entry</guid><pubDate>Mon, 20 Aug 2007 19:43:40 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!246/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!246.entry#comment</wfw:comment><dcterms:modified>2007-12-10T17:02:29Z</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><category>Computadores e a Internet</category><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>cheguei na IBM !</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!228.entry</link><description>Olá a todos,&lt;br&gt;&lt;br&gt;Até meu último post relacionado com meu trabalho, estava trabalhando na ACSYS Consultoria e Sistemas, mas por razões alheias à minha vontade (e à da vontade acsys também), fui forçado a buscar outras oportunidades de trabalho... &lt;br&gt;  Tenho que deixar relatado aqui o respeito que tenho pelo Marcos Atílio da ACSYS que é um excelente progamador e um homem que não desiste nunca... desejo que Deus o abençoe... e que a ACSYS volte aos seus dias de glória... foi muito importante o período que trabalhei lá. e realmente não vou esquecer disto.&lt;br&gt;&lt;br&gt;   Bem... um mês depois... tendo passado por várias entrevistas, inclusive uma empresa de RH que queria me forçar a pagar R$ 1.000,00 por um tal exame de aptidão e competência (golpe no qual eu quase caí), fui contactado e contratado, pela SystemPlan e comecei a trabalhar na IBM no último dia 6 de Novembro de 2006.&lt;br&gt;Para quem não conhece a IBM (é difícil acreditar, mas tem muita gente que nem sabe oque é IBM) leiam: &lt;a href="http://pt.wikipedia.org/wiki/IBM"&gt;http://pt.wikipedia.org/wiki/IBM&lt;/a&gt;&lt;br&gt;Para quem não conhece a estrutura da IBM, à primeira vista parece coisa de outro mundo... o emprego perfeito... mas logo percebe-se que tem muita gente trabalhando e que ainda se tem muito a crescer aqui dentro. Foi assim comigo... fiquei um tanto abobado nos primeiros dias com a estrutura gigantesca... e muito satisfeito por trabalhar com a empresa que criou a informática como conhecemos hoje e que continua sendo a maior do mundo.&lt;br&gt;Não posso dar maiores informações sobre o projeto em que fui colocado e nem mesmo sobre a IBM... as regras aqui dentro são claras... praticamente tudo aqui é &amp;quot;IBM Confidential&amp;quot;. e não vou ser eu que vou violar isto... nem fotos são permitidas aqui dentro. Acho uma pena... mas regras são regras.&lt;br&gt;&lt;br&gt;Achei bem engraçada a situação depois que entrei aqui na IBM... havia ficado mais de 45 dias procurando emprego... entrevistas e mais entrevistas... participando de uns 6 ou 7 processos seletivos... e de repente quando a IBM me contrata, nas duas semanas seguintes, 5 das 7 empresas entraram em contato comigo para efetivar a contratação... É interessante como as empresas não estão se importando tanto com a necessidade de concluir com dinamismo os processos seletivos... o resultado é que não conseguem contratar quem escolhem... bom pra IBM que é um pouco mais rápida. =) .&lt;br&gt;&lt;br&gt;Agora é continuar fazendo o meu máximo e conquistar dia-a-dia meu espaço aqui dentro... crescer vai ser questão de tempo.&lt;br&gt;&lt;br&gt;Claro que não posso deixar de citar o apoio que minha esposa me deu nestes dias... é bom saber que tenho alguém do meu lado que não se importa de passar necessidade e que nunca deixa de acreditar que eu vou dar a volta por cima... eu não poderia ter me casado melhor. &amp;quot;te amo gatinha&amp;quot;!&lt;br&gt;&lt;br&gt;Sim... Deus está do meu lado, e eu me dedico para que a posição que Ele me coloca seja sempre suprida. Dou graças a Deus por tudo... e por ter me dado capacidade de continuar reconhecendo que Ele tem me direcionado por caminhos que não sonhava em chegar.&lt;br&gt;&lt;br&gt;Até a próxima...&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+cheguei+na+IBM+!&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><category>Pessoal</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!228.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!228.entry</guid><pubDate>Sat, 02 Dec 2006 17:45:00 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!228/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!228.entry#comment</wfw:comment><dcterms:modified>2006-12-14T12:29:15Z</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><category>Computadores e a Internet</category><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>Links de estudo vestibular</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!217.entry</link><description>Vestibular:&lt;br&gt;    Português:&lt;br&gt;        * Reconhecimento e uso dos diferentes níveis de linguagem:&lt;br&gt;            http://www.universia.com.br/html/noticia/noticia_clipping_bgdhj.html&lt;br&gt;            http://www.portrasdasletras.com.br/pdtl2/sub.php?op=artigos/docs/culto-coloquial&lt;br&gt;            http://www2.uol.com.br/aprendiz/n_simulado/revisao/revisao02/por.htm&lt;br&gt;&lt;br&gt;        * Domínio da norma padrão da língua:&lt;br&gt;            http://www.proex.ufes.br/arteeducadores/downloads/Superinteressante_n.225_abr_2006.pdf &lt;br&gt;            http://www.consciencia.net/educacao/barreto01.html&lt;br&gt;            http://www.universia.com.br/materia/materia.jsp?id=6971&lt;br&gt;&lt;br&gt;        * Textualidade:&lt;br&gt;            http://bbs.metalink.com.br/~lcoscarelli/oqueetexto.htm&lt;br&gt;            http://www.linguistica.pro.br/Texto%20Textualidade.pdf#search=%22%22textualidade%22%22&lt;br&gt;            http://bbs.metalink.com.br/~lcoscarelli/costavalrepensando.doc&lt;br&gt;&lt;br&gt;        * Descrição, Narração, Dissertação:&lt;br&gt;            http://lportuguesa.malha.net/content/view/27/1/&lt;br&gt;            http://www.graudez.com.br/redacao/ch02.html&lt;br&gt;            http://www.neymourao.com.br/redacao/dicas/definicoes.htm&lt;br&gt;&lt;br&gt;        * Tipos de texto ou &amp;quot;Tipologia Textual&amp;quot; - Natureza, finalidade, estrutura:&lt;br&gt;            http://www.filologia.org.br/soletras/2/06.htm&lt;br&gt;            http://www.unicamp.br/iel/site/alunos/publicacoes/textos/g00003.htm&lt;br&gt;            http://www3.unisul.br/paginas/ensino/pos/linguagem/0402/05.htm&lt;br&gt;&lt;br&gt;        * Coesão e coerência:&lt;br&gt;            http://www.filologia.org.br/soletras/9/08.htm&lt;br&gt;            http://www.redacional.com.br/coesao.htm&lt;br&gt;&lt;br&gt;        * Redação:&lt;br&gt;            http://www.vestibular1.com.br/menu/redacao.htm&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Links+de+estudo+vestibular&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><category>Pessoal</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!217.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!217.entry</guid><pubDate>Tue, 26 Sep 2006 15:53:58 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!217/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!217.entry#comment</wfw:comment><dcterms:modified>2006-09-26T19:42:02Z</dcterms:modified></item><item><title>Crimes Ambientais em Jataí</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!214.entry</link><description>&lt;pre&gt;Pessoal&lt;br&gt;Estou enviando em anexo, umas fotos sobre MAIS UM CRIME AMBIENTAL COMETIDO &lt;br&gt;PELA PREFEITURA DE JATAÍ, o aterramento de nascentes naquela área do fundo &lt;br&gt;do Colégio Nestório Ribeiro. A desculpa desta vez é que vão abrir uma rua &lt;br&gt;ali.&lt;br&gt;Vale ressaltar, que muitas pessoas passam por ali e não percebem que naquele &lt;br&gt;local, jorra mais água e possui muito mais nascentes do que aquela área do &lt;br&gt;Lago Diacuí. Mas as nascentes do Diacuí foram transformadas em lago pelo &lt;br&gt;prefeito anterior e essas nascentes próximas ao Colégio Nestório Ribeiro, &lt;br&gt;que apesar de estarem mais no centro da cidade e necessitarem até com mais &lt;br&gt;urgência de serem preservadas, estão sendo destruídas desde a semana passada &lt;br&gt;e ninguém fala nada.&lt;br&gt;Aquela área toda ao redor do Nestório Ribeiro é o local onde mais nasce água &lt;br&gt;na área da cidade de Jataí e o local perfeito para a cosntrução de um parque &lt;br&gt;ecológico como o Diacuí e o JK. Área que muitas cidades como Rio Verde &lt;br&gt;sonham em ter dentro de sua área urbana para ser aproveitada como parque &lt;br&gt;ecológico e lago, mas que infelizmente não tem. Jataí tem, mas por causa da &lt;br&gt;mentalidade do governo da cidade, destroi!!!&lt;br&gt;Vale lembrar, que este é só mais um da lista de crimes cometidos pela &lt;br&gt;Prefeitura. Veja a lista abaixo dos últimos crimes ambientais cometidos pela &lt;br&gt;nossa Prefeitura:&lt;br&gt;1.	Aterramento e destruição da Nascente do “Olho D`Água” na área atrás do &lt;br&gt;Centro Cultural no Centro da cidade.&lt;br&gt;2.	Abertura de uma rua dentro da área de reserva da Mata do Açude, ao lado &lt;br&gt;do Cohacol 01, a poucos metros da nascente do Córrego Açude que corta toda a &lt;br&gt;região leste da cidade. Abriram esta rua para não ter o trabalho de abrir a &lt;br&gt;continuação daquela rua ao lado da Transa Tom e que liga da mesma forma os &lt;br&gt;bairros da região.&lt;br&gt;3.	Derrubada de toda a vegetação ciliar do córrego ao redor de um bueiro &lt;br&gt;construído na estrada JTI-202 no Ribeirão da Comprida. Derrubaram no intuito &lt;br&gt;de mostrar melhor o bueiro nas fotos da obra.&lt;br&gt;4.	Derrubada de árvores seculares com mais de 10 m de altura na área do &lt;br&gt;“Olho D`Água”.&lt;br&gt;5.	Estão aceitando silenciosamente aquele laticínio logo abaixo do Lago &lt;br&gt;Diacuí e que está numa área ilegal dentro da cidade, desviar TODA água do &lt;br&gt;Córrego para dentro de suas instalações e devolvider esta água absolutamente &lt;br&gt;poluída e podre de volta ao córrego.&lt;br&gt;6.	Aprovaram o Projeto do Anel Viário passando dentro da Mata do Queixada , &lt;br&gt;a poucos metros da nascente do Córrego Queixada. Vale ressaltar, que esta &lt;br&gt;área é protegida como reserva.&lt;br&gt;7. Estão trazendo indústrias consideradas altamente poluentes pelos órgãos &lt;br&gt;ambientais, sem o menor critério técnico, sem consultar a sociedade ou sem &lt;br&gt;no mínimo ir à Rio Verde ver os prejuízos que este tipo de indústria trouxe &lt;br&gt;para a cidade (sabemos que foram muitos!!). Basta visitar a Cachoeira do &lt;br&gt;Lajeado, no córrego que passa no fundo da antiga Frango Galé (hoje Perdigão) &lt;br&gt;para vocês verem o grau alarmante de poluição do córrego. Esta é uma das &lt;br&gt;cachoeiras mais linda de Jataí, tem uns 15 m de altura e fica a uns 10 km da &lt;br&gt;cidade. Poderia estar se tornando um ponto turístico, mas está sendo &lt;br&gt;destruída!!&lt;br&gt;A lista ainda é imensa. Mas temos que reagir porque NOSSA CIDADE ESTÁ SENDO &lt;br&gt;DESTRUÍDA!!!  Chega de esperar que os políticos mudem esse país e &lt;br&gt;principalmente nossa cidade!! VAMOS FAZER NOSSA PARTE denunciando esses &lt;br&gt;absurdos aos órgãos responsáveis. Essa é a contribuição mínima que podemos &lt;br&gt;fazer para nossa geração e para as gerações futuras. Pois, depois que tudo &lt;br&gt;acabar, não tem mais volta!!&lt;br&gt;Denunciem para a LINHA VERDE DO IBAMA(LIGAÇÃO GRATUITA): 0800-61-8080.&lt;br&gt;Muitas pessoas de Jataí estão ligando lá e quanto mais pessoas ligarem mais &lt;br&gt;rápido eles agem. Se demorarmos a denunciar e a repassar esse e.mail &lt;br&gt;adiante, ai já será tarde.&lt;br&gt;Desde já, muito obrigado pela contribuição!! JATAÍ AGRADECE!!!&lt;br&gt;&lt;br&gt;&lt;/pre&gt; &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;y1pqT0eSh8zIDGO1WjZIxJGxvxDGRp8h4nNwU_5Wk8ee2QL9_OEeDjEORivmYsz_mck"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;215&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://blufiles.storage.live.com&amp;#47;y1p89aIBA90HfHPqZDOHIzgDs655_ufSaRD4x55tg4_SrvY-GAtzq5dgXp1fRgus38G"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;216&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+Crimes+Ambientais+em+Jata%c3%ad&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><category>Notícias e política</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!214.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!214.entry</guid><pubDate>Mon, 25 Sep 2006 13:57:00 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!214/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!214.entry#comment</wfw:comment><dcterms:modified>2007-11-22T00:42:58Z</dcterms:modified></item><item><title>OPERAÇÃO DESMONTE JATAÍ</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!213.entry</link><description>&lt;p align=center&gt;&lt;font size=3&gt;&lt;br&gt;&lt;/font&gt;
&lt;p align=left&gt;&lt;font size=2&gt;Operação que visa retirar tudo o que é
de mais importante em nível regional da cidade de Jataí, para a cidade
de Rio Verde, no intuito de retirar o status de Pólo Regional de Jataí
e passá-lo para Rio Verde.&lt;/font&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PERDA DE UMA VARA DA JUSTIÇA FEDERAL&lt;/strong&gt;&lt;/ul&gt;
&lt;p&gt;Fiquei sabendo que o Dep. Vilmar Rocha retirou uma vara da Justiça Federal de Jataí e a implantou em Rio Verde.&lt;br&gt; Me
informaram que eles estavam achando humilhante terem que se deslocar de
Rio Verde para Jataí para resolverem assuntos de natureza federativa.&lt;br&gt; O
que muitos esquecem é que esta vara é para atender a Polícia Federal, O
Exército, a UFG, o CINDACTA (FAB), O INSS, a Receita Federal e diversos
outros orgãos federais que tem como base logística a cidade de Jataí
(Por enquanto). Pois, Jataí é considerado há muitos anos pelo Governo
Federal, como Pólo Regional (IBGE) ou o ponto logístico regional (Por
enquanto!!)&lt;br&gt; Eles estão afirmando que a próxima perda será a UFG. SERÁ??!!
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PERDA DA UFG&lt;/strong&gt;&lt;/ul&gt;
&lt;p&gt;  Durante comício em Rio Verde e diante de pressões, o presidenciável &lt;strong&gt;Geraldo Alckmin &lt;/strong&gt;prometeu instalar uma universidade federal naquela cidade. O que significa dizer &lt;strong&gt;retirar a UFG de Jataí e instalá-la em Rio Verde.&lt;/strong&gt;
Já que a região não comporta duas Universidades de grande porte como a
UFG. Isso inclusive publicado no último Jornal Folha do Sudoeste.&lt;br&gt; Todos
nós sabemos que ha muitos anos eles vem lutando para levar o Campus da
UFG de Jataí para lá. Esta é a grande estratégia da operação &amp;quot;DESMONTE
JATAÍ&amp;quot; realizada pelos rioverdenses. Feito o isso, o resto da &amp;quot;OPERAÇÃO
DESMONTE&amp;quot; ficará fácil!!&lt;br&gt; Inclusive saiu na Folha do Sudoeste que
enquanto nós ficamos penando para federalizar o Campus Avançado da UFG
em Jataí, eles pretendem instalar a UFG lá, já com o status de
Universidade Federal.&lt;br&gt; Pergunto novamente: 
KD NOSSOS REPRESENTANTES??!! SERÁ QUE ISSO VAMOS PERDER MAIS ESTE BENEFÍCIO PARA RIO VERDE??!! 
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PERDA DA REGIONAL DA CELG&lt;/strong&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;Pouco tempo atrás, a Regional da Celg era em Jataí
e todos os assuntos desta estatal em nível regional eram resolvidos em
Jataí. Porém, o nosso excelentíssimo governador Marconi Perillo, que
chegou ao ponto de receber Título de Cidadão Jataiense (rsrs) e os
mandatários da OPERAÇÃO DEMONTE JATAÍ não mediram esforços para fechar
esta regional de Jataí e mandá-la para Rio Verde.
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PERDA DE SOLDADOS CONCURSADOS DA POLÍCIA MILITAR&lt;/strong&gt;&lt;/ul&gt;
&lt;p&gt;Recentemente houve um concurso para que soldados da Polícia
Militar ocupassem vagas na cidade de Jataí. O concurso foi realizado,
só que os soldados que vinham para Jataí foram enviados para a cidade
de Rio Verde e Mineiros (que tem duas vezes mais policiais do que Jataí
rsrs). 
&lt;p&gt;O Batalhão de Polícia de Jataí possui uma demanda e foi estruturado
para receber 440 homens, porém esse número não chega nem a 100 (cem),
segundo informações de lá de dentro do Batalhão. 
&lt;ul&gt;&lt;li&gt;Perda do Batalhão do Corpo de Bombeiros&lt;/ul&gt;
&lt;p dir=ltr&gt;Jataí perdeu o Status de Batalhão do Corpo de Bombeiros e
foi rebaixado para Companhia Independente. Ficando subordinado ao
Batalhão de Rio Verde.
&lt;p dir=ltr&gt; Ressalto ainda, que apesar de termos uma cidade deste
porte e inúmeros lagos e rios em nosso entorno, todos os benefícios são
direcionados para as cidades de Rio Verde e Mineiros, pois lá é que
possuem Batalhão do Corpo de Bombeiros (Ridículo isso!!). Por exemplo,
o Batalhão do Corpo de Bombeiros de Rio Verde possui todos os
equipamentos de mergulho, 05 Jet Ski, mergulhadores e lá não possui um
rio do porte do Rio Claro, nem lagos como os daqui de Jataí e muito
menos a quantidade de vítimas de afogamento como aqui em Jataí.
&lt;p dir=ltr&gt;Tem muito mais perdas como a Regional de Saúde, a UTI do
Centro Médico, a Regional da Brasil Telecom e etc. Essa lista só cresce
a cada dia em consequência da &amp;quot;OPERAÇÃO DESMONTE JATAÍ&amp;quot;.&lt;br&gt; 
&lt;p dir=ltr&gt; KD NOSSOS REPRESENTANTES POLÍTICOS QUE ESTÃO
DEIXANDO ESSAS PERDAS ACONTECEREM PARA RIO VERDE, QUE ESTÁ ENCAMPANDO
UMA VERDADEIRA &amp;quot;OPERAÇÃO DESMONTE&amp;quot; CONTRA JATAÍ, ARRASTANDO TUDO O QUE
É DE MAIS IMPORTANTE NA CIDADE DE JATAÍ, PARA LÁ?!!! &lt;br&gt;
&lt;p&gt;Mas como digo sempre: 
&lt;p&gt;JATAÍ DESENVOLVE POR TENDÊNCIA. PORÉM, OUTRAS CIDADES SUAM, PORQUE SÓ PODEM SE DESENVOLVEREM POR ESFORÇO E POR FALCATRUAS! 
&lt;p&gt;DESCOBRIRAM QUE PARA ELES DESENVOLVEREM, JATAÍ TEM QUE ESTAR FORA DA JOGADA!! &lt;br&gt;&lt;br&gt;ME PERDOEM O DESABAFO!!VISITEM NOSSA COMUNIDADE NO ORKUT &amp;quot;EU LUTO PELA CIDADE DE JATAÍ&amp;quot;&lt;br&gt;&lt;br&gt;&lt;br&gt;Cláudio&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+OPERA%c3%87%c3%83O+DESMONTE+JATA%c3%8d&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><category>Notícias e política</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!213.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!213.entry</guid><pubDate>Mon, 25 Sep 2006 13:51:50 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!213/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!213.entry#comment</wfw:comment><dcterms:modified>2006-09-25T13:51:50Z</dcterms:modified></item><item><title>UFG Campus Jataí - 3 Meses de Salários Atrasados</title><link>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!212.entry</link><description>&lt;div&gt;
&lt;p&gt;Recebi e estou repassando. 
&lt;p align=center&gt;A Universidade que é orgulho para a
cidade de Jataí-GO é um problema para quem trabalha lá dentro e depende do Governo
Estadual e do Governo Municipal para receberem. &lt;strong&gt;Isso é uma vergonha para nossa cidade!! &lt;br&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;Cláudio 




&lt;blockquote&gt;&lt;font style="font-size:11px;font-family:tahoma,sans-serif"&gt;&lt;font size=2&gt;&amp;gt;   Caros Amigos,&lt;br&gt;&lt;/font&gt;&amp;gt;&lt;br&gt;&amp;gt;  &lt;font size=2&gt;
Resolvi circular este e-mail a fim de expressar minha indignação e
revolta com o que esta ocorrendo na minha cidade de Jataí, na esperança
que esta forma de protesto apresente resultados mais eficientes, pois
passeatas e greves não estão sendo o bastante para sensibilizar os
dirigentes responsáveis pela situação.&lt;br&gt;&amp;gt;   A Universidade Federal
de Goiás Campus Jataí funciona graças a um convenio que garante a
contratação dos professores por meio da Fundação Educacional de Jataí.
Para quem não sabe 90 famílias entre professores e funcionários
dependem diretamente dos salários da Fundação.&lt;br&gt;&amp;gt;               Em um país onde absurdidades acontecem
todos os dias não é de se alarmar que nesta cidade que sempre atraiu
políticos famosos para discursarem suas propostas políticas desde a
época de JK, um curioso convênio existe para a manutenção de um Campus
da Universidade Federal de Goiás onde &lt;strong&gt;os verdadeiros responsáveis pela assinatura do mesmo não assumem suas responsabilidades.&lt;br&gt;&lt;/strong&gt;&amp;gt;   Há mais de 20 anos este convênio firmado entre a Universidade Federal de Goiás e a Prefeitura de Jataí existe e &lt;strong&gt;até
hoje não se encontrou uma forma de tratar os funcionários e professores
com a dignidade que qualquer cidadão que trabalha merece que é a de
receber seus salários no final do mês trabalhado.&lt;/strong&gt; A fim de encontrar remédios paliativos o governo do Estado de 
Goiás foi solicitado a colaborar para viabilizar os pagamentos dos funcionários.&lt;br&gt;&amp;gt;  
Para que esta colaboração seja efetivada, o convênio deve ser renovado
e assinado anualmente e para isto é necessário que a proposta seja
votada na Assembléia Legislativa. Este ano está sendo o pior de todos
até o momento, pois o convênio que deveria ser votado e assinado no mês
de março &lt;strong&gt;não foi votado até hoje porque os 41 deputados goianos não comparecem na assembléia para trabalhar &lt;/strong&gt;e por sinal ontem dia de votação 20 de setembro de 2006 apenas UM deputado compareceu na assembléia para trabalhar e &lt;strong&gt;o povo continua pagando os salários milionários para eles fazerem campanhas e não cumprir com suas responsabilidades.&lt;br&gt;&lt;/strong&gt;&amp;gt;  
Que realidade vergonhosa. Enquanto aguarda-se a boa vontade dos
deputados em fazer somente a obrigação deles, os professores e
funcionários estão sem receber seus salários há dois meses, o último
salário foi pago no mês de junho. Muitos recorreram aos juros
exorbitantes de bancos e empréstimos particulares, outros sobrevivem
graças à solidariedade da família e amigos e agora com a falta de
perspectivas e o terrorismo das autoridades em não fazer nada para
resolver a situação, a mobilização e ajuda dos alunos e habitantes da
cidade que arrecadam cestas básicas na tentativa de minimizar a
situação, é que está sendo a saída para muitos professores.&lt;br&gt;&amp;gt;  
Protestos, passeatas e negociações foram tentados em vão. Atualmente os
professores se encontram de greve, sem seus salários e na angústia de
como conseguir o pão para o dia de amanhã para suas famílias, &lt;strong&gt;muitos com crianças pequenas já se encontram com água e a luz cortados entre outras dificuldades que cada um pode imaginar com 
quase três meses sem receber seus vencimentos&lt;/strong&gt;.&lt;br&gt;&amp;gt;   &lt;strong&gt;O
governo afirmou varias vezes estar investindo na educação. Que
investimento é esse que professores têm que recorrer a passeatas para
receber o que é deles por direito?&lt;/strong&gt; &lt;strong&gt;Que importância é essa que se da aos professores, que se quer possuem condições de ter o que comer em casa?&lt;br&gt;&lt;/strong&gt;&amp;gt;  
Realmente o nosso Brasil está mal. Onde estão os deputados que deveriam
estar trabalhando dois dias por semana quatro horas por dia, enquanto
nós trabalhamos oito horas por dia durante seis dias e mesmo com uma
carga de trabalho dessas eles não têm a dignidade de comparecer lá? E o
pior são eles que estão pedindo para todos votarem neles, não se
esqueçam amanhã pode ser cada um de nós que poderá estar na situação
dos professores de Jataí e os deputados continuarão a não fazer nada,
pois o salário deles nunca atrasam e com certeza não precisam tomar
dinheiro emprestado para cumprir com as obrigações familiares.&lt;br&gt;&amp;gt;   &lt;strong&gt;Pergunto
ainda onde está o prefeito de Jataí e o Reitor da Universidade Federal
de Goiás, os dois responsáveis pela assinatura do convênio? Será que o
salário deles atrasa também? Será que eles conseguem dormir enquanto
seus funcionários têm que trabalhar e ver seus filhos de barriga vazia?
Sem remédios e sem o mínimo que uma criança necessita que é se
alimentar corretamente?&lt;br&gt;&lt;/strong&gt;&amp;gt;   Que país é este onde não tem
justiça? propaganda sobre os direitos humanos e trabalhistas todos
fazem mas os procuradores da república, os advogados, enfim as
autoridades que deveriam defender os menos favorecidos afirmam que
deve-se esperar o período de eleição ou que é um caso que não tem
solução a não ser esperar a boa vontade dos políticos?&lt;br&gt;&amp;gt;   Enquanto a mídia mostra quatro vezes por dia
políticos negociando denuncias entre si e transportando milhões de
reais que ninguém sabe de onde veio, &lt;strong&gt;em Jataí e em Goiás não se consegue publicar o conteúdo desse desabafo em um jornal local mesmo pagando?&lt;br&gt;&lt;/strong&gt;&amp;gt;  
Não se esqueçam, esses professores são a elite pensante desta cidade e
do país, e são tratados como criminosos, estão vivendo como maus
pagadores e caloteiros, são mestres e doutores obrigados a passar por
uma situação humilhante dessa como eles poderão ter coragem de
enfrentar seus alunos e seus filhos se não conseguem ter dignidade?
Isso não é um trabalho escravo? Porque o Ministério Público recusa
ajuda-los?&lt;br&gt;&amp;gt;   Espero que esta forma de expressar minha revolta
chegue aos ouvidos de alguém com poder, inteligência e sensatez que
poderá interferir e mudar este quadro, afinal essas famílias não estão
pedindo esmolas, doações ou caridade, eles querem somente o salário de
quem trabalhou duro durante meses e que de acordo com a lei tem direito
a recebê-lo.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;   Atenciosamente,&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;   Aurélie Piochon&lt;br&gt;&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+UFG+Campus+Jata%c3%ad+-+3+Meses+de+Sal%c3%a1rios+Atrasados&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><category>Notícias e política</category><comments>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!212.entry#comment</comments><guid isPermaLink="true">http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!212.entry</guid><pubDate>Mon, 25 Sep 2006 13:50:28 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!212/comments/feed.rss</wfw:commentRss><wfw:comment>http://glaudiston.spaces.live.com/Blog/cns!50A3054EE15AB96C!212.entry#comment</wfw:comment><dcterms:modified>2006-09-25T13:50:28Z</dcterms:modified></item><item><title>Photo Album: Papeis de parede</title><link>http://glaudiston.spaces.live.com/photos/cns!50A3054EE15AB96C!203/</link><description>&lt;p&gt;Papeis de parede&lt;/p&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://glaudiston.spaces.live.com&amp;#47;photos&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;203&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;204"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;204&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1129488548.Hacker Lab Logon Screen&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://glaudiston.spaces.live.com&amp;#47;photos&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;203&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;205"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;205&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1138203655.firefox&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://glaudiston.spaces.live.com&amp;#47;photos&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;203&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;206"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;206&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1138882381.NextEvolutions&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://glaudiston.spaces.live.com&amp;#47;photos&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;203&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;207"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;207&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Brasil_Art&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://glaudiston.spaces.live.com&amp;#47;photos&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;203&amp;#47;cns&amp;#33;50A3054EE15AB96C&amp;#33;208"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;50A3054EE15AB96C&amp;#33;208&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;cheat&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+Photo+Album%3a+Papeis+de+parede&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><guid isPermaLink="false">cns!50A3054EE15AB96C!203</guid><pubDate>Fri, 11 Aug 2006 17:21:22 GMT</pubDate><msn:type>photoalbum</msn:type><live:type>photoalbum</live:type><live:typelabel>Photo album</live:typelabel><cf:itemRSS>http://glaudiston.spaces.live.com/photos/cns!50A3054EE15AB96C!203/feed.rss</cf:itemRSS><dcterms:modified>2006-08-11T17:21:22Z</dcterms:modified></item><item><title>Custom List: Custom List</title><link>http://glaudiston.spaces.live.com/Lists/cns!50A3054EE15AB96C!103</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.dicas-l.com.br"&gt;Dicas Linux&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Excelente site que tem um sistema de lista de discuss&amp;#227;o, para voc&amp;#234; receber direto em seu email variadas dicas de Linux.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.guiadohardware.net"&gt;guiadohardware&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Site oficial do Carlos E. Morimoto, criador e mantenedor do Kurumin uma das distros mais populares do Brasil, e possui tamb&amp;#233;m um dos melhores &amp;#40;ou o melhor&amp;#41; f&amp;#243;runs de linux em l&amp;#237;ngua portuguesa.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.unidev.com.br"&gt;UniDev&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Um excelente site com recursos para desenvolvedores de games, possui uma comunidade colaborativa formando um f&amp;#243;rum de qualidade. Recomendo o f&amp;#243;rum de C&amp;#47;C&amp;#43;&amp;#43;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://andersonataides.tripod.com&amp;#47;arl&amp;#47;monografia&amp;#47;book1.html"&gt;Desenvolvimento de sistemas em Linux&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Um passo a passo pra mostrar como &amp;#233; f&amp;#225;cil programar aplicativos comerciais ERP Desktop em linux.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.ddphackradio.org&amp;#47;"&gt;DDP HackRadio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The &amp;#34;online hacker radio&amp;#34; home page.&amp;#10;Entrevistas com desenvolvedores, hackers e muita zueira sobre tecnologia...&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://twiki.softwarelivre.org&amp;#47;bin&amp;#47;view&amp;#47;TWikiBar&amp;#47;WebHome"&gt;Livro completo sobre Shell Script&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Este &amp;#233; um livro completo e divertido totalmente em portugu&amp;#234;s sobre Shell Script... Uma &amp;#243;tima leitura... Recomendo.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.bugmenot.com"&gt;Bug Me Not &amp;#33;&amp;#33;&amp;#33;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Sabe aqueles sites que te obrigam a se cadastrar e dar seu email pra vc acessar um conte&amp;#250;do&amp;#63; n&amp;#227;o se cadastre antes de ver este site. Ele &amp;#233; um site de compartilhamento de senhas destes sites. Fant&amp;#225;stica iniciativa.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Custom+List%3a+Custom+List&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><guid isPermaLink="false">cns!50A3054EE15AB96C!103</guid><pubDate>Mon, 26 Nov 2007 17:22:08 GMT</pubDate><msn:type>list</msn:type><live:type>list</live:type><live:typelabel>List</live:typelabel><cf:itemRSS>http://glaudiston.spaces.live.com/Lists/cns!50A3054EE15AB96C!103/feed.rss</cf:itemRSS><dcterms:modified>2007-11-26T17:22:08Z</dcterms:modified></item><item><title>Music List: Santa Geração</title><link>http://glaudiston.spaces.live.com/Music/cns!50A3054EE15AB96C!106</link><description>&lt;p&gt;Santa Gera&amp;#231;&amp;#227;o&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;: 01 Enche este lugar&lt;/li&gt;&lt;li&gt;: 01 Faixa 1&lt;/li&gt;&lt;li&gt;: 01 Faixa 1&lt;/li&gt;&lt;li&gt;: 01 Faixa 1_&lt;/li&gt;&lt;li&gt;: 01 Jesus, Jesus, Jesus&lt;/li&gt;&lt;li&gt;: 02 Abra&amp;#231;a-me&lt;/li&gt;&lt;li&gt;: 02 Faixa 2&lt;/li&gt;&lt;li&gt;: 02 Faixa 2&lt;/li&gt;&lt;li&gt;: 02 I Timoteo 3 16&lt;/li&gt;&lt;li&gt;: 02 Josu&amp;#233; 22 5&lt;/li&gt;&lt;li&gt;: 03 A recompensa&lt;/li&gt;&lt;li&gt;: 03 Eu Busco ao Senhor&lt;/li&gt;&lt;li&gt;: 03 Faixa 3&lt;/li&gt;&lt;li&gt;: 03 Faixa 3&lt;/li&gt;&lt;li&gt;: 03 Seu Nome &amp;#233; Jesus&lt;/li&gt;&lt;li&gt;: 04 C&amp;#225;lice da salva&amp;#231;&amp;#227;o&lt;/li&gt;&lt;li&gt;: 04 Faixa 4&lt;/li&gt;&lt;li&gt;: 04 Faixa 4&lt;/li&gt;&lt;li&gt;: 04 Junto &amp;#224; Cruz&lt;/li&gt;&lt;li&gt;: 04 N&amp;#227;o h&amp;#225; outro igual a Ti&lt;/li&gt;&lt;li&gt;: 05 Em arrependimento&lt;/li&gt;&lt;li&gt;: 05 Faixa 5&lt;/li&gt;&lt;li&gt;: 05 Faixa 5&lt;/li&gt;&lt;li&gt;: 05 Instrumental&lt;/li&gt;&lt;li&gt;: 05 Uma Chamada para as Na&amp;#231;&amp;#245;es&lt;/li&gt;&lt;li&gt;: 06 Eu Quero Viver Para Deus&lt;/li&gt;&lt;li&gt;: 06 Faixa 6&lt;/li&gt;&lt;li&gt;: 06 Faixa 6&lt;/li&gt;&lt;li&gt;: 06 Me Arrastar&lt;/li&gt;&lt;li&gt;: 06 Sangue precioso&lt;/li&gt;&lt;li&gt;: 07 A Quem tenho eu al&amp;#233;m de T&amp;#237;&lt;/li&gt;&lt;li&gt;: 07 Em teu jardim&lt;/li&gt;&lt;li&gt;: 07 Faixa 7&lt;/li&gt;&lt;li&gt;: 07 Faixa 7&lt;/li&gt;&lt;li&gt;: 07 Toca-me&lt;/li&gt;&lt;li&gt;: 08 Eu Quero &amp;#233; Mais de T&amp;#237;&lt;/li&gt;&lt;li&gt;: 08 Faixa 8&lt;/li&gt;&lt;li&gt;: 08 Jeremias 29 11&lt;/li&gt;&lt;li&gt;: 08 Sacrif&amp;#237;cios espirituais&lt;/li&gt;&lt;li&gt;: 09 Acende Teu Fogo&lt;/li&gt;&lt;li&gt;: 09 Faixa 9&lt;/li&gt;&lt;li&gt;: 09 Fome e Sede de Ti&lt;/li&gt;&lt;li&gt;: 10 Arrependimento das Obras Mortas&lt;/li&gt;&lt;li&gt;: 10 Eu Amo o Nome de Jesus&lt;/li&gt;&lt;li&gt;: 11 Palavra Prof&amp;#233;tica&lt;/li&gt;&lt;li&gt;: 12 Santa Gera&amp;#231;&amp;#227;o&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=5810493780584479084&amp;page=RSS%3a+Music+List%3a+Santa+Gera%c3%a7%c3%a3o&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.space