<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debugando.com &#187; Programação</title>
	<atom:link href="http://www.debugando.com/categoria/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Microsoft lança serviço de ‘auto suporte’ do Windows 7 para XP e Vista</title>
		<link>http://www.debugando.com/microsoft-lanca-servico-de-%e2%80%98auto-suporte%e2%80%99-do-windows-7-para-xp-e-vista/</link>
		<comments>http://www.debugando.com/microsoft-lanca-servico-de-%e2%80%98auto-suporte%e2%80%99-do-windows-7-para-xp-e-vista/#comments</comments>
		<pubDate>Mon, 24 May 2010 17:54:06 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[centro de açoes]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[suporte]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=1154</guid>
		<description><![CDATA[


A ferramenta, chamada de Fixit Center, é similar à Central de Ações do  Windows 7 e está em fase de testes, mas já pode ser baixada.

A Microsoft lançou um serviço de auto-suporte para os usuários do  Windows XP e Vista, tecnologia que já está presente no Windows 7.
A combinação de clientes desktop e [...]]]></description>
			<content:encoded><![CDATA[<p><strong>A ferramenta, chamada de Fixit Center, é similar à Central de Ações do  Windows 7 e está em fase de testes, mas já pode ser baixada.</strong></p>
<div>
<div>A Microsoft lançou um serviço de auto-suporte para os usuários do  Windows XP e Vista, tecnologia que já está presente no Windows 7.</div>
<div>A combinação de clientes desktop e serviços de back-end dá aos  usuários de versões antigas do sistema algumas das funcionalidades que o  Windows 7 oferece nativamente, afirmou a diretora geral de suporte da  Microsoft, Lori Brownell. O cliente<strong> Fixit  Center</strong> ainda está em fase de testes, mas já pode ser baixado gratuitamente.</div>
<div>“Independente de quais versões estão sendo utilizadas, muitos não  estão rodando o Windows 7 hoje, e precisamos oferecer suporte a esses  consumidores também”, afirmou Brownell, explicando a decisão da empresa.</div>
<div>A tecnologia é a mesma utilizada no recurso de diagnóstico do  Windows 7, conhecido como “<strong>Central  de Ações</strong>” e, em alguns casos, o mesmo código é utilizado nas  versões para o Windows XP e Vista.</div>
<div>“Não é tão completo como no Windows 7”, disse Brownell,  lembrando que o serviço de soluções de redes do Windows 7 tambem integra  recursos como mensagens quando os usuários têm algum problema ao  executar o Internet Explorer 8. “Mas muitos dos solucionadores de  problemas são exatamente os mesmos.” A companhia projetou a ferramenta  para o Windows 7, mas a desenvolveu pensando na compatibilidade com  versões anteriores da plataforma.</div>
</div>
<div><strong><br />
Fonte:</strong> PC World</div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/microsoft-lanca-servico-de-%e2%80%98auto-suporte%e2%80%99-do-windows-7-para-xp-e-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quais as maiores Duvidas sobre FLEX</title>
		<link>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/</link>
		<comments>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:12:38 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[duvidas]]></category>
		<category><![CDATA[flex 4]]></category>
		<category><![CDATA[o que é flex]]></category>
		<category><![CDATA[o que é ria]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=1102</guid>
		<description><![CDATA[1-O que é Flex?
Flex é um produto da Adobe que possui a finalidade de desenvolver aplicativos RIA &#8211; Rich Internet Applications.
2-Como o Flex funciona?
O Flex tem como base a linguagem Action Script 3.0, junto com uma outra linguagem de desenvolvimento chamada MXML.
3-O Flex é gratuito?
Sim, o Flex Framework é gratuito. Isso significa que você pode [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1-O que é Flex?</strong></p>
<p>Flex é um produto da Adobe que possui a finalidade de desenvolver aplicativos RIA &#8211; Rich Internet Applications.</p>
<p><strong>2-Como o Flex funciona?</strong></p>
<p>O Flex tem como base a linguagem Action Script 3.0, junto com uma outra linguagem de desenvolvimento chamada MXML.</p>
<p><strong>3-O Flex é gratuito?</strong></p>
<p>Sim, o Flex Framework é gratuito. Isso significa que você pode editar o seu código no Notepad (ou no seu editor de preferência) e compilar (iremos mostrar como criar um arquivo .bat).</p>
<p><strong>4-O que é RIA?</strong></p>
<p>A RIA é uma tendência de desenvolvimento web que vem crescendo no mundo inteiro, e possui a proposta de criar aplicativos web (que funcionem no seu navegador) que são &#8220;ricos&#8221; em sua interface.</p>
<p><strong>5-O Flex conecta no banco de dados?</strong></p>
<p>Não.</p>
<p><strong>6-O que é Flex 2 SDK?</strong></p>
<p>Flex 2 SDK é parte do Software Development Kit que a Adobe distribui como parte de sua estratégia de adoção do Flex 2 no mercado.</p>
<p><strong>7-Quais as vantagens de se usar o Flex 2 SDK?</strong></p>
<p>A grande vantagem é que é gratuito, você pode usar o Flex 2 SDK em qualquer editor de XML ou até mesmo o notepad que você desejar. Um exemplo típico é o próximo exemplo logo abaixo que será mostrado, o uso do Flex 2 SDK com um editor freeware, o notepad++.</p>
<p><strong> <img src='http://www.debugando.com/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> Flex 2 SDK é realmente gratuito?</strong></p>
<p>Sim, o Flex 2 SDK é totalmente gratúito e pode ser usado para fins comerciais as aplicações feitas com ele, e não o SDK em sí. No próprio diretório onde você descompactou o Flex 2 SDK, tem um arquivo chamado License.htm onde você pode ler detalhadamente o termo de licença de software do Flex 2 SDK.</p>
<p><strong>9-Onde posso fazer o download do Flex 2 SDK?</strong></p>
<p>O Flex 2 SDK pode ser baixado diretamente do site da Adobe, pelo seguinte endereço abaixo.</p>
<p>http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex</p>
<p><strong>10-Qual a diferença entre o Flex Builder 2 e o Flex 2 SDK?</strong></p>
<p>Ambos são parte integrantes da família Adobe Flex, porém Flex Builder 2 é uma ferramenta de desenvolvimento conhecida por IDE, para criação com melhor visual de suas aplicações, é uma ferramenta integral como o Microsoft Visual Studio, traz uma forma nova e fácil de se usar com recursos visuais igual ao Eclipse WTD para criar layouts de forma fácil. O Flex Builder 2 usa o Flex 2 SDK que é gratuito, como parte de sua IDE, facilitando a vida do desenvolveor, com isso o Flex Builder é pago.</p>
<p><strong>11-Não sei nada de Flex, devo estudar primeiro o 3 ou partir para o 4?</strong></p>
<p>Pode ir direto ao Flex 4! Muitos conceitos mudaram e será perda de tempo aprender 3 para depois ir ao 4.</p>
<p><strong>1</strong><strong>2-Devo investir no Flex 4?</strong></p>
<p>Absolutamente sim! Flex 4 é uma &#8220;baita&#8221; evolução e você deve segui-la para os seus novos projetos. Além do Flex 4, tem o Adobe Air 2.0 e, em breve, suporte à tecnologia Android e a dispositivos móveis. Então a Apple torceu o nariz para o Flash Player, o Google se uniu à Adobe e juntas vão lançar o Flash Player 10 para a plataforma Android. O futuro com certeza é bastante promissor, e ainda nem falamos dos tablets!!</p>
<p>Ae galera é isso espero que tenham aproveitado algumas dessas perguntas e respostas, Obrigado!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inscrições para o Google Code Jam 2010 já estão abertas</title>
		<link>http://www.debugando.com/inscricoes-para-o-google-code-jam-2010-ja-estao-abertas/</link>
		<comments>http://www.debugando.com/inscricoes-para-o-google-code-jam-2010-ja-estao-abertas/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 17:57:29 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Google Code Jam 2010]]></category>
		<category><![CDATA[inscriçoes abertas]]></category>
		<category><![CDATA[promadores]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=1019</guid>
		<description><![CDATA[Edição deste ano do concurso de programação criado em 2003 terá quatro triagens online e final na Irlanda, no dia 30 de julho, Participe Voce tambem.

Programadores de todo o mundo já podem se preparar. Desde quarta-feira (07/04) estão abertas as inscrições para o Google Code Jam 2010, concurso de programação promovido anualmente pelo Google.
Na competição, [...]]]></description>
			<content:encoded><![CDATA[<p><b>Edição deste ano do concurso de programação criado em 2003 terá quatro triagens online e final na Irlanda, no dia 30 de julho, Participe Voce tambem.<br />
</b></p>
<p><b><a href="http://www.debugando.com/wp-content/uploads/2010/04/image_preview.jpg" mce_href="http://www.debugando.com/wp-content/uploads/2010/04/image_preview.jpg"><img class="alignleft size-full wp-image-1020" style="margin: 5px;" mce_style="margin: 5px;" title="image_preview" src="http://www.debugando.com/wp-content/uploads/2010/04/image_preview.jpg" mce_src="http://www.debugando.com/wp-content/uploads/2010/04/image_preview.jpg" alt="" width="150" height="100"></a></b>Programadores de todo o mundo já podem se preparar. Desde quarta-feira (07/04) estão <a href="http://code.google.com/codejam" mce_href="http://code.google.com/codejam" target="_blank">abertas as inscrições</a> para o Google Code Jam 2010, concurso de programação promovido anualmente pelo Google.</p>
<p>Na competição, que existe desde 2003, os programadores seram desafiados por problemas de construção de algoritmos, que deverão ser resolvidos dentro de um limite de tempo.</p>
<p>Segundo a empresa, cerca de 23 mil progamadores competiram no concurso do ano passado, quando o campeão foi um chinês, Lou Tiancheng.</p>
<p>As quatro primeiras rodadas serão realizadas pela própria internet. A primeira prova terá início em 7 de maio (veja calendário abaixo). Os 25 melhores colocados viajarão para Dublin, na Irlanda, para a rodada final prevista para 30 de julho.</p>
<p>O primeiro colocado receberá um prêmio de 5 mil dólares. Candidatos interessados poderão testar sua habilidade com as provas das competições passadas, que podem ser obtidas a partir do <a href="http://code.google.com/codejam" mce_href="http://code.google.com/codejam" target="_blank">site do concurso</a>.</p>
<p><b>Google Code Jam 2010<br />
Calendário:</b></p>
<p style="text-align: center;"><b><a href="http://www.debugando.com/wp-content/uploads/2010/04/image_preview1.jpg" mce_href="http://www.debugando.com/wp-content/uploads/2010/04/image_preview1.jpg"><img class="size-full wp-image-1021 aligncenter" title="image_preview" src="http://www.debugando.com/wp-content/uploads/2010/04/image_preview1.jpg" mce_src="http://www.debugando.com/wp-content/uploads/2010/04/image_preview1.jpg" width="400" height="195"></a></b></p>
<p></p>
<p><b>Fonte: </b>PCWorld<b><br />
</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/inscricoes-para-o-google-code-jam-2010-ja-estao-abertas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tudo Sobre JavaScript</title>
		<link>http://www.debugando.com/tudo-sobre-javascript/</link>
		<comments>http://www.debugando.com/tudo-sobre-javascript/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 18:43:35 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript/Ajax]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[o que e javascript]]></category>
		<category><![CDATA[plugin noscript]]></category>
		<category><![CDATA[tudo sobre javascript]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=957</guid>
		<description><![CDATA[
O que é Javascript? É perigoso permitir Javascript no             navegador? Quais os riscos inerentes a ele e quais formas de             se proteger? 
 

Javascript é uma linguagem de programação usada  [...]]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://www.debugando.com/wp-content/uploads/2010/03/038610939-FMMP00.jpg"><img class="alignleft size-full wp-image-958" style="margin: 5px;" title="0,,38610939-FMMP,00" src="http://www.debugando.com/wp-content/uploads/2010/03/038610939-FMMP00.jpg" alt="" width="69" height="92" /></a></em></p>
<p><em><strong>O que é Javascript? É perigoso permitir Javascript no             navegador? Quais os riscos inerentes a ele e quais formas de             se proteger? </strong><br />
</em> <strong><br />
</strong></p>
<p>Javascript é uma linguagem de programação usada         por sites para adicionar recursos dinâmicos em páginas de         internet. O Javascript permite ao desenvolvedor do site muita         flexibilidade. Um exemplo é aquele botao que permite aumentar ou diminuir as fontes existentes em varios sites.</p>
<p>Há tantas possibilidades de uso de Javascript que         seria impossível citar todas. Há até mesmo joguinhos simples         feitos em Javascript.</p>
<p>É claro que essa riqueza de possibilidades resulta         em uma linguagem complexa. Para piorar, o Javascript foi         “crescendo” com o tempo e cada navegador web decidiu interpretar         comandos diferentes da mesma forma. Isso adicionou ainda mais         complexidade, tanto para quem faz códigos Javascript como para         quem faz os navegadores, que precisam funcionar com o maior         número possível de códigos.</p>
<p>O Javascript é, portanto, o tipo de código mais         complexo com o qual os navegadores precisam lidar. E quanto mais         difícil é fazer algo, maior a probabilidade de ocorrerem erros.         Não existe nenhum risco inerente ao Javascript, exceto pela         complexidade desnecessária criada pelo histórico conturbado da         linguagem.</p>
<p>De qualquer forma, problema maior está no fato de         que os programadores podem cometer muitos erros na criação do         componente responsável pelo processamento dos códigos. Isso         resulta em vulnerabilidades.</p>
<p>Como o Javascript interage com a página, além dos         erros existentes nele mesmo, ele também pode ser peça-chave na         exploração de erros em outras funcionalidades do navegador. É         por isso que tantas falhas têm como solução temporária a         desativação de Javascript.</p>
<p>Diferentemente de outras linguagens de         programação, existe muita tolerância na programação de páginas         web. Mesmo códigos “errados” funcionam devido aos esforços dos         navegadores para tentar fazer a página aparecer na tela. Além         disso, erros em navegadores web também moldaram as linguagens,         quer dizer, programadores acabaram dependendo de erros para         fazer as páginas aparecerem do jeito que queriam. Ainda hoje, os         navegadores precisam detectar esses “erros” e “saber” o que o         criador da página pretende.</p>
<p>É por isso que não apenas Javascript, mas até uma         linguagem aparentemente simples como o HTML – principal         responsável pelas páginas de internet – acabam sendo difíceis de         “digerir” pelos softwares.</p>
<p>Não é possível navegar na internet sem Javascript.         A grande maioria dos sites apresentará defeito ou perda de         funcionalidade. Para o Firefox, o <strong><a href="https://addons.mozilla.org/pt-BR/firefox/addon/722" target="_blank">plugin NoScript</a></strong> limita os poderes do         Javascript, mas também adiciona transtornos na navegação. Fica a         critério de cada um optar pela segurança ou pela comodidade. De         qualquer maneira, manter o navegador sempre atualizado é essencial         para que qualquer brecha conhecida, seja no processamento de         Javascript ou outro componente, seja eliminada.</p>
<p><strong>Fonte:</strong> G1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/tudo-sobre-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seu AntiVirus funciona mesmo?</title>
		<link>http://www.debugando.com/seu-antivirus-funciona-mesmo/</link>
		<comments>http://www.debugando.com/seu-antivirus-funciona-mesmo/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 17:42:10 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[download antivirus]]></category>
		<category><![CDATA[testar antivirus]]></category>
		<category><![CDATA[teste para antivirus]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=752</guid>
		<description><![CDATA[Voce tem instalado um antivírus em seu computador, mais você tem certeza que esse seu antivírus está mesmo protegendo o seu computador? aqui vai uma dica interessante que você pode testar seu antivírus apenas com um código. Pois vale lembrar se você colocar esse código e o antivírus não apitar&#8230; Esta na hora de voce [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.debugando.com/wp-content/uploads/2010/01/antivirus.jpg"><img class="alignleft size-thumbnail wp-image-755" style="margin: 5px;" title="antivirus" src="http://www.debugando.com/wp-content/uploads/2010/01/antivirus-150x150.jpg" alt="" width="150" height="150" /></a>Voce tem instalado um antivírus em seu computador, mais você tem certeza que esse seu antivírus está mesmo protegendo o seu computador? aqui vai uma dica interessante que você pode testar seu antivírus apenas com um código. Pois vale lembrar se você colocar esse código e o antivírus não apitar&#8230; Esta na hora de voce deve migrar<strong> </strong>de<strong> </strong>antivírus<strong> </strong>ou<strong> </strong>atualiza-lo. Este código não é  vírus ou algo semelhante,  apenas o antivírus reconhece como vírus</p>
<p>Para testar seu antivirus abre o bloco de notas e cole o seguinte código,sem as aspas.</p>
<p>&#8220;X5O!P%@AP[4P\ZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*&#8221;</p>
<p>Depois va em &#8220;<strong>Arquivo/Salvar</strong>&#8221; escolha um local para salvar (de preferencia na área de trabalho) e salve com o nome &#8220;<strong>testevirus.com</strong>&#8221; (sem aspas), Pode ser qualquer nome mais terá que ter no final &#8220;.com&#8221; e clique em salvar. Feito isso logo o antivírus vai apitar!. Se isso nao aconteceu vá até o local onde você salvo, la vai está o ícone do &#8220;testevirus.com&#8221; de dois cliques, se mesmo assim o antivírus não tiver apitado, faz o que aconselhei acima.</p>
<p>Fonte: dica.info</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/seu-antivirus-funciona-mesmo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Resolvendo a incompatibilidade do IE8 com antivirus</title>
		<link>http://www.debugando.com/resolvendo-a-incompatibilidade-do-ie8-com-antivirus/</link>
		<comments>http://www.debugando.com/resolvendo-a-incompatibilidade-do-ie8-com-antivirus/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 19:26:29 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[AntiVírus]]></category>
		<category><![CDATA[download ie8]]></category>
		<category><![CDATA[download internet explorer 8]]></category>
		<category><![CDATA[incompatibilidade]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[internet explorer 8]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=728</guid>
		<description><![CDATA[Lançada oficialmente há pouco mais de três meses, a versão final do Internet Explorer 8, conhecida por IE8, chegou prometendo, entre suas inovações, o reforço da segurança. O novo browser da Microsoft veio com uma série de ferramentas para proteger seus usuários contra ameaças online. Entretanto, alguns internautas reclamam que o navegador desabilita programas de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.debugando.com/wp-content/uploads/2010/01/internet-explorer-8.jpg"><img class="alignleft size-thumbnail wp-image-729" style="margin: 5px;" title="internet-explorer-8" src="http://www.debugando.com/wp-content/uploads/2010/01/internet-explorer-8-150x150.jpg" alt="" width="150" height="150" /></a>Lançada oficialmente há pouco mais de três meses, a versão final do<strong> Internet Explorer 8</strong>, conhecida por <strong>IE8</strong>, chegou prometendo, entre suas inovações, o reforço da segurança. O novo browser da Microsoft veio com uma série de ferramentas para proteger seus usuários contra ameaças online. Entretanto, alguns internautas reclamam que o navegador desabilita programas de <strong>antivírus</strong>.</p>
<p>Essa foi uma das grande dúvidas de leitores que enfrentaram problema após a instalação do IE8. Um deles informou que o navegador desliga o Norton Internet Security quando abre páginas na internet. A reportagem do WNews entrou em contato com especialistas da Microsoft no Brasil em busca de uma resposta.</p>
<p>Segundo a empresa microsoft, “é natural que o navegador e o antivírus tenham interações já que a internet é a porta de entrada de muitos tipos de malware”. Porém, afirma que uma avaliação mais detalhada desse problema é preciso mais informações sobre as configurações do usuário.</p>
<p>Apesar disso, a Microsoft admite que o novo navegador pode desabilitar o antiphishing do Norton ou vice-versa.  Para evitar que isso aconteça, recomenda que o usuário verifique se antivírus que está instalado em sua máquina está atualizado e rodando a última versão do programa de segurança.</p>
<p>A Microsoft ressalta que as versões 2009, 360 2.0 e 3.0 do Norton são  compatíveis com o IE8, conforme informa a Symantec em seu site.</p>
<p>Outro argumento que Microsoft deu é que o IE8 por ser um navegador que tem novas ferramantas de segurança se encarrega de fazer a função de antiphishing (Clicar em “Segurança” / Opção “filtro do SmartScreen”).</p>
<p>Mas como o antivírus também vem com essa função, a Microsoft volta a lembrar que pode haver conflito entre os dois programas. Além de verificar se a ferramenta de segurança está atualizada, a produtora do IE8 aconselha que o usuário entre em contato com o fabricante do antivírus para verificar a compatibilidade entre ambos.</p>
<p>Enquanto o problema não for solucionado, a Microsoft orienta o usuário a adotar apenas uma das ferramentas antiphishing desabilitando a outra”.<br />
entao para nao entrar em conflito desabilite uma das ferramentas antiphishing deixando apenas uma ativa.</p>
<p>Fonte: WNews</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/resolvendo-a-incompatibilidade-do-ie8-com-antivirus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conheça a bibliteca JavaScript jQuery</title>
		<link>http://www.debugando.com/conheca-a-bibliteca-javascript-jquery/</link>
		<comments>http://www.debugando.com/conheca-a-bibliteca-javascript-jquery/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:55:06 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[JavaScript/Ajax]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=678</guid>
		<description><![CDATA[
As apps da web 2.0 são uma doce verdade, isso tudo graças à uma metodologia chamada Ajax(Asynchronous Javascript And XML). O Ajax ficou famoso após o lançamento do Gmail em 2004, muitos acham que o Gmail é o começo do plano de conspiração do Google, mas isso é outra história.
O Ajax trouxe muitas vantagens aos [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-47" style="margin: 10px" title="jQuery Logo" src="http://www.comandodigital.com.br/wp-content/uploads/2009/02/jquery-logo1.jpg" alt="jQuery Logo" width="174" height="144" align="left" /></p>
<p>As apps da web 2.0 são uma doce verdade, isso tudo graças à uma metodologia chamada Ajax(<strong>Asynchronous Javascript And XML</strong>). O Ajax ficou famoso após o lançamento do Gmail em 2004, muitos acham que o Gmail é o começo do plano de conspiração do Google, mas isso é outra história.</p>
<p>O Ajax trouxe muitas vantagens aos internautas, antigamente quando clicava-se em um link, uma nova página era aberta, e todas as imagens e menus anteriores eram carregados inumeras  vezes, com o Ajax é diferete, apenas partes especifícas são recarregados.</p>
<p>Essa mania pegou rapidamente, pois a agilidade que isso tras ao programador é imensa, o problema é que existem muitos navegadores, e o <strong>JavaScript</strong> se comporta de varias maneiras, tudo isso pelo fato de que o programador tem que criar um objeto <strong>XMLHTTP Request</strong> para o IE, Firefox, Safari, Chrome e outros.</p>
<p>Nesse ponto, surge o <strong>jQuery</strong>, que se comporta de forma inteligente na maioria dos Navegadores, facilitando ainda mais a vida dos programadores, ou seja, funciona em um, funciona em todos. Para entender um pouco mais sobre o <strong>jQuery</strong> assista o Vídeo Post feito por <a title="Professional Blogger" href="http://www.professionalblogger.com.br" target="_blank">Diego Soares</a> que lhe mostrará as funcionalidades básicas do <strong>jQuery</strong> e como aplicar os códigos em suas aplicações, fique à vontade para comentar este artigo.</p>
<p>Para assistir o vídeo com uma qualidade melhor, acesse <a title="Conheça o jQuery" href="http://www.vimeo.com/3165655" target="_blank">http://www.vimeo.com/3165655</a> ou <a title="Conheça o JavaScript Jquery" href="http://videolog.uol.com.br/video.php?id=410377" target="_blank">http://videolog.uol.com.br/video.php?id=410377</a> ou assista no player abaixo.</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="504" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.videolog.tv/ajax/codigoPlayer.php?id_video=410377&amp;relacionados=S&amp;default=N&amp;cor_fundo=ndefined&amp;swf=1&amp;width=504&amp;height=405" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="504" height="405" src="http://www.videolog.tv/ajax/codigoPlayer.php?id_video=410377&amp;relacionados=S&amp;default=N&amp;cor_fundo=ndefined&amp;swf=1&amp;width=504&amp;height=405" allowfullscreen="true"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/conheca-a-bibliteca-javascript-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando um Data Grid com POO e PHP5</title>
		<link>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/</link>
		<comments>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:18:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Data Grid]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=649</guid>
		<description><![CDATA[Um data grid nada mais é do que a apresentação de dados em forma de tabela (lembra das &#60;table&#62;&#60;/table&#62;? Algo assim). Cada conjunto de registros é mostrado em uma linha, e o data grid pode ter funcionalidades de ordenação dos dados e opções para sua edição ou exclusão.
Classe Data Grid PHP
Com esta simples classe é [...]]]></description>
			<content:encoded><![CDATA[<p>Um data grid nada mais é do que a apresentação de dados em forma de tabela (lembra das &lt;table&gt;&lt;/table&gt;? Algo assim). Cada conjunto de registros é mostrado em uma linha, e o data grid pode ter funcionalidades de ordenação dos dados e opções para sua edição ou exclusão.</p>
<h4><strong>Classe Data Grid PHP</strong></h4>
<p>Com esta simples classe é possível criar um data grid a partir de um array com os dados que queremos apresentar na tabela. É simples criar e configurar e, com alguns comandos avançados, é possível alterar o seu comportamento para que seja possível implementar as necessidades habituais em uma estrutura desse tipo.</p>
<p>Essa classe foi criada com POO (Programação Orientada a Objetos) e características que estão disponíveis somente a partir do PHP5. Ela pode ser baixada <a class="ext" href="http://www.phpclasses.org/browse/package/5476.html">clicando aqui</a>.</p>
<p>Vamos começar a ver como funciona a classe utilizando um exemplo simples e inserindo funcionalidades no decorrer do artigo, para deixar nosso exemplo mais robusto.</p>
<p>Para começar é necessário inserir a classe nos scripts PHP antes de utilizá-la.</p>
<div class="codigo">
<pre><em><code><span class="com">//incluimos a classe</span><span class="pln">

</span><span class="kwd">require</span><span class="pln"> </span><span class="str">'DataGrid.php'</span><span class="pun">;</span></code></em></pre>
</div>
<p>Agora temos que criar um Array com os dados que serão apresentados no Data Grid. Será um array associativo, duas dimensões, onde a primeira, o array principal, receberá todos os registros a serem mostrados no data Grid, e na segunda estão cada um dos registros definidos como um array associativo.</p>
<p>Agora construímos o array com um algumas informações, mais adiante veremos como construir esse array através de uma consulta ao banco de dados.</p>
<div class="codigo">
<pre><em><code><span class="com">//criamos o array com os dados a serem apresentados no Data Grid</span><span class="pln">

$alunos </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Pepe Perez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"María Suarez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática avançada"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Roberto Soriano"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Sistemas operacionais"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Alberto Rodriguez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Inglés técnico"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Julia Marcos"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Sociologia"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Socorro Rozas"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">11</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Pablo Reñones"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln">

</span><span class="pun">);</span></code></em></pre>
</div>
<p>Agora, antes de continuarmos com a construção da estrutura, temos que criar alguns estilos CSS para podermos melhorar o aspecto do Data Grid</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">style</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">.</span><span class="pln">linhaI</span><span class="pun">{</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="com">#ffffcc;}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">linhaP</span><span class="pun">{</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="com">#ffcc99;}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">fdg_sortable </span><span class="pun">{</span><span class="pln">cursor</span><span class="pun">:</span><span class="pln">pointer</span><span class="pun">;</span><span class="pln">text</span><span class="pun">-</span><span class="pln">decoration</span><span class="pun">:</span><span class="pln">underline</span><span class="pun">;</span><span class="pln">color</span><span class="pun">:</span><span class="com">#00c;}</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="tag">style</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Foram criadas três classes CSS, com seus respectivos estilos. As classes &#8220;linhaI&#8221; (linha ímpar) e &#8220;linhaP&#8221; (linha par) aplicaram estilo às linhas do Data Grid e a classe &#8220;fdg_sortable&#8221; é responsável por estilizar os títulos de cada coluna do Data Grid.</p>
<p>Vamos criar o data grid a partir dos dados que temos no array.</p>
<div class="codigo">
<pre><em><code><span class="com">//instanciamos o objeto data grid, passando como parâmetro o array anterior</span><span class="pln">

Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">

</span><span class="com">//VAMOS LANÇANDO DIVERSOS MÉTODOS SOBRE O OBJETO INSTANCIADO</span><span class="pln">

</span><span class="com">//atributos gerais para a tabela</span><span class="pln">

</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))

//permitimos que hajam características de ordenação

-&gt;enableSorting(true)

//fazemos um setup das colunas do data grid, indicando o valor que será mostrado na primeira linha do data grid

-&gt;setup(array(

'</span><span class="pln">id</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">ID</span><span class="str">'),

'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),

'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),

'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">')

))

//definimos os estilos para as linhas ímpares

-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')

//definimos os estilos para as linhas pares

-&gt;setAlterRowClass('</span><span class="pln">linhasP</span><span class="str">')

//chamamos o método que construirá o data grid

-&gt;render();</span></code></em></pre>
</div>
<p>Todas as linhas foram comentadas para que o entendimento se torne mais simples.</p>
<p>Agora vejamos como inserir ou apagar coisas do data grid, para personalizá-lo. Faremos algumas coisas como:</p>
<ol>
<li>Vamos ocultar o &#8220;ID&#8221; do array associativo, para que não seja mostrado.</li>
<li>No campo de nível do cursos, vamos mostrar o nível com alguns asteriscos usando uma função que converterá os números em uma cadeia de asteriscos.</li>
<li>Vamos coluna no data grid, que aparecerá antes de qualquer outra, para mostrar um contador que indicará a quantidade de registros apresentados.</li>
</ol>
<p>Destas três coisas, a mais complicada é fazer um modelo para alterar a forma como é mostrado um campo. Para começar, precisaremos de uma função que devolva o dado que se quer mostrar, com o formato desejado.</p>
<div class="codigo">
<pre><em><code><span class="kwd">function</span><span class="pln"> nivel_estrelas</span><span class="pun">(</span><span class="pln">$num</span><span class="pun">){</span><span class="pln">

$estrelas </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln"> $i</span><span class="pun">&lt;</span><span class="pln">$num</span><span class="pun">;</span><span class="pln"> $i</span><span class="pun">++){</span><span class="pln">

$estrelas </span><span class="pun">.=</span><span class="pln"> </span><span class="str">"*"</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">return</span><span class="pln"> $estrelas</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span></code></em></pre>
</div>
<p>Utilizaremos essa função para atribuir como &#8220;template&#8221; para o campo nível de curso.</p>
<p>Vamos agora ao código utilizado para implementar todas as funcionalidades citadas no data grid:</p>
<div class="codigo">
<pre><em><code><span class="com">//OCULTAR UM CAMPO NO DATA GRID</span><span class="pln">

</span><span class="com">//COLOCAR UMA FUNÇÂO PARA MOSTRAR UM CAMPO</span><span class="pln">

</span><span class="com">//COLOCAR UM CAMPO ANTES DAS COLUNAS DO ARRAY DO DATA GRID</span><span class="pln">

Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">

</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))

-&gt;enableSorting(true)

//fazemos com que o campo "id" do array associativo não seja mostrado

-&gt;removeColumn('</span><span class="pln">id</span><span class="str">')

-&gt;setup(array(

'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),

'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),

//utilizamos a função template para mostrar o nivel do curso com umas estrelas

'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">', '</span><span class="pln">cellTemplate</span><span class="str">' =&gt; '</span><span class="pun">[[</span><span class="pln">nivel_estrelas</span><span class="pun">:%</span><span class="pln">data</span><span class="pun">%]]</span><span class="str">')

))

//inserimos uma coluna em todos os registros do data grid(a primeira coluna será esta)

//nesta coluna mostramos um contador de registros

-&gt;addColumnBefore('</span><span class="pln">Contador</span><span class="str">', '</span><span class="pun">%</span><span class="pln">counter</span><span class="pun">%</span><span class="pln">.</span><span class="str">', '</span><span class="pln">Num</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">right</span><span class="str">'))

//definimos a partir de que número será iniciado o contador

-&gt;setStartingCounter(1)

-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')

-&gt;setAlterRowClass('</span><span class="pln">linhaP</span><span class="str">')

-&gt;render();</span></code></em></pre>
</div>
<p>Novamente as linhas foram comentadas para facilitar o entendimento. Chamo a atenção sobre a linha que faz uso da função anterior como um template para um campo.</p>
<div class="codigo">
<pre><em><code><span class="str">'nivel'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'header'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Nivel curso'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'cellTemplate'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'[[nivel_estrelas:%data%]]'</span><span class="pun">)</span></code></em></pre>
</div>
<p>Isto faz com que o campo &#8220;nivel&#8221;, quando for mostrado em linhas distintas do data grid, chame a função nivel_estrelas(), passando como parâmetro %data%, que é o valor que tem cada um dos registros do array associativo, no campo &#8220;nível&#8221;.</p>
<p>Por último vamos ver outro exemplo, um pouco mais desenvolvido, para mostrar os dados do mesmo array. Neste caso vamos simplesmente mostrar uma coluna adicional ao final de cada registro do data grid, onde iremos inserir uns links para editar e/ou apagar o registro atual.</p>
<div class="codigo">
<pre><em><code><span class="com">//PARA COLOCAR UM BOTÃO PARA EDITAR OU APAGAR</span><span class="pln">
Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">
</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))
-&gt;enableSorting(true)
-&gt;removeColumn('</span><span class="pln">id</span><span class="str">')
-&gt;setup(array(
'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),
'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),
'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">', '</span><span class="pln">cellTemplate</span><span class="str">' =&gt; '</span><span class="pun">[[</span><span class="pln">nivel_estrelas</span><span class="pun">:%</span><span class="pln">data</span><span class="pun">%]]</span><span class="str">')
))
-&gt;addColumnBefore('</span><span class="pln">Contador</span><span class="str">', '</span><span class="pun">%</span><span class="pln">counter</span><span class="pun">%</span><span class="pln">.</span><span class="str">', '</span><span class="pln">Num</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">right</span><span class="str">'))
//agora mostro um campo depois de cada elelemto, com links para editar ou apagar o registro
//no interior deste campo utilizo $id$ para enviar o valor "id" do array
-&gt;addColumnAfter('</span><span class="pln">actions</span><span class="str">', '</span><span class="pun">&lt;</span><span class="pln">a href</span><span class="pun">=</span><span class="str">"exemplo3.php?editar=$id$"</span><span class="pun">&gt;</span><span class="typ">Editar</span><span class="pun">&lt;</span><span class="str">/a&gt; ?
&lt;a href="exemplo3.php?apagar=$id$" onclick="return confirm('Está certo que quer apagar $nome$?')"&gt;Apagar&lt;/</span><span class="pln">a</span><span class="pun">&gt;</span><span class="str">', '</span><span class="pln">Actions</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">center</span><span class="str">'))
-&gt;setStartingCounter(1)
-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')
-&gt;setAlterRowClass('</span><span class="pln">linhaP</span><span class="str">')
-&gt;render();</span></code></em></pre>
</div>
<p>Neste exemplo apenas inserimos uma linha de código para fazer uma chamada ao método addColumnAfter(), que serve para inserir uma coluna depois das colunas que formamos com o array.</p>
<div class="codigo">
<pre><em><code><span class="pun">-&gt;</span><span class="pln">addColumnAfter</span><span class="pun">(</span><span class="str">'actions'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'&lt;a href="exemplo3.php?editar=$id$"&gt;Editar&lt;/a&gt; ? &lt;a
href="exemplo3.php?apagar=$id$" onclick="return confirm('</span><span class="typ">Est</span><span class="pun">á</span><span class="pln"> certo que
quer apagar $nome$</span><span class="pun">?</span><span class="str">')"&gt;Apagar&lt;/a&gt;'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Actions'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'align'</span><span class="pln">
</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'center'</span><span class="pun">))</span></code></em></pre>
</div>
<p>Neste caso simplesmente temos que indicar como parâmetro a addColumnAfter() dois dados: o primeiro para especificar um título para a coluna e o segundo para especificar o seu conteúdo. O conteúdo dessa coluna, neste caso, são os links para editar e apagar, onde são utilizadas urls que enviam os dados por GET, que é o identificador do registro.</p>
<h4><strong>Montando o data grid a partir de um banco de dados</strong></h4>
<p>Só falta agora falar sobre como extrair os dados de uma base de dados para fazer o array de elementos que será utilizado na montagem do data grid.</p>
<p>No exemplo que acompanha a classe data_grid há um código para extrair a informação do MySQL, como pode ser visto nas linhas abaixo.</p>
<div class="codigo">
<pre><em><code><span class="pln">$users </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">

$result </span><span class="pun">=</span><span class="pln"> mysql_query</span><span class="pun">(</span><span class="str">"SELECT * FROM user"</span><span class="pun">,</span><span class="pln"> $dbLinkId</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$row </span><span class="pun">=</span><span class="pln"> mysql_fetch_assoc</span><span class="pun">(</span><span class="pln">$result</span><span class="pun">))</span><span class="pln">

</span><span class="pun">{</span><span class="pln">

$users</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $row</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span></code></em></pre>
</div>
<p>Como se pode ver, primeiro se cria um array e logo se faz um looping pelos resultados da consulta. Cada um dos elementos retornados pela consulta será introduzido no array criado anteriormente e para ele assinalamos o array associativo que nos devolverá mysql_fetch_assoc() desse primeiro array.</p>
<p>Bom, pessoal, espero que esse artigo possa ser útil a vocês. Clique abaixo para poder fazer o download da classe e de um exemplo.<br />
<strong><br />
<a href="http://www.jlamim.com.br/downloads/php_datagrid.zip">Clique aqui para baixar a classe data grid junto com um exemplo</a></strong></p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/13951/php/criando_um_data_grid_com_poo_e_php5/" target="_blank">Imasters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendendo um pouco a API Google Maps</title>
		<link>http://www.debugando.com/entendendo-um-pouco-a-api-google-maps/</link>
		<comments>http://www.debugando.com/entendendo-um-pouco-a-api-google-maps/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:12:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google API]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=647</guid>
		<description><![CDATA[
O Google dispensa comentários com todas as inovações que ele faz. Hoje falaremos um pouco sobre a API do Google Maps. API (Application Programming Interface ou Interface de Programação de Aplicativos) é a forma que temos de nos comunicar com as funções pré-programadas definidas pelo fornecedor, no caso, Google. Esta API permite a criação de [...]]]></description>
			<content:encoded><![CDATA[<div id="strConteudo">
<p>O Google dispensa comentários com todas as inovações que ele faz. Hoje falaremos um pouco sobre a API do Google Maps. API (Application Programming Interface ou Interface de Programação de Aplicativos) é a forma que temos de nos comunicar com as funções pré-programadas definidas pelo fornecedor, no caso, Google. Esta API permite a criação de mapas com locais definidos, controle de zoom, tipos de mapa, geração de rotas, pesquisa por estabelecimentos, e muitas coisas mais.</p>
<h4>Como começar</h4>
<p>A primeira coisa que devemos fazer é acessar o <a class="ext" href="http://code.google.com/intl/pt-BR/apis/maps/signup.html">link da página inicial da API</a>, ler e aceitar o contrato, digitar a url do site que deseja usar a API e clicar no botão &#8220;Gerar chave da API&#8221;. (veja a figura 1)</p>
<p><img src="http://conteudo.imasters.uol.com.br/13893/1.jpg" alt="" /></p>
<p><span class="c4">Figura 1: Aceitando o contrato</span></p>
<p>Após isso, caso ainda não esteja logado com a sua &#8220;Google Account&#8221;, o Google pedirá para efetuar o login, nesse passo você obterá a chave para usar a API somente na url que digitou o site. Caso queira usar a API em outro site, deverá repetir esse processo para cada site que quiser. (Veja a figura 2)</p>
<p><img src="http://conteudo.imasters.uol.com.br/13893/2.jpg" alt="" /></p>
<p><span class="c4">Figura 2: Chave gerada</span></p>
<p>Agora que já temos a chave, podemos usar a API no site. O Google disponibiliza alguns exemplos, para trabalhar com JavaScript, Flash, Serviço, etc..<br />
Neste artigo abordaremos o uso da API para JavaScript e para isso devemos adicionar o seguinte script dentro do bloco head do HTML, no local &#8220;SUA_CHAVE&#8221;, você deve colocar a chave que o Google gerou para o site, veja o campo Your key is na figura 2.</p>
<div class="codigo">
<pre><code><span class="pun">&lt;</span><span class="tag">script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=true&amp;amp;key=SUA_CHAVE"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="pun">&gt;
&lt;/</span><span class="tag">script</span><span class="pun">&gt;</span></code></pre>
</div>
<p>O código de base para começar o aprendizado está abaixo:</p>
<div class="codigo">
<pre><em><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
	&lt;head&gt;
		&lt;title&gt;Aprendendo a Usar a API Google Maps | Paulo Fernandes &lt;/title&gt;
		&lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/&gt;
		&lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=true&amp;amp;
                  key=ABQIAAAAAaVFxs6kNq7gWY59qf5XMxSec6s_uUscdbTyPSy8oWl8zYzqFRRanjFebOU60thMmEQQDEPx3A3y5Q"
                  type="text/javascript"&gt;&lt;/script&gt;
		&lt;script type="text/javascript"&gt;
			var map = null;
			var geocoder = null;
			function inicializa() {
				if (GBrowserIsCompatible()) {
					map = new GMap2(document.getElementById("mapa_base"));
					map.setCenter(new GLatLng(-22.9035393, -43.2095869), 13);
					geocoder = new GClientGeocoder();
  			    }
			}
    &lt;/script&gt;
	&lt;/head&gt;
	&lt;body onload="inicializa()" onunload="GUnload()"&gt;
		&lt;div id="mapa_base" style="width: 500px; height: 300px"&gt;&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</code></em></pre>
</div>
<p>Este código não está difícil de entender, explicaremos as partes mais importantes:</p>
<ul>
<li>No onload(), a função inicializa() verifica se o navegador do usuário é compatível com a API Google Maps, caso positivo, o método captura uma div com id igual a &#8220;mapa_base&#8221; e define o mapa centralizado. O local padrão que escolhi foi a cidade do Rio de Janeiro, que é representada pelas seguintes coordenadas de latitude e longitude -22.9035393, -43.2095869, respectivamente. O número seguinte, 13, representa o zoom no mapa, quanto menor esse número, menor o zoom.</li>
</ul>
<ul>
<li>No onunload(), a função GUnload() serve para limpar as estruturas internas e liberar a memória.</li>
</ul>
<p>Para mais informações sobre os métodos, acesse a documentação em português, através <a class="ext" href="http://code.google.com/intl/pt-BR/apis/maps/documentation/reference.html">deste link</a>. Essa documentação está interessante, e será a base para o artigo.</p>
<h4>Exemplos simples</h4>
<p><a class="ext" href="http://code.google.com/intl/pt-BR/apis/maps/documentation/demogallery.html">Neste link</a> podemos analisar diversos exemplos do poder desta API.</p>
<p>Para o artigo, colocaremos alguns exemplos interessantes para inserir um mapa personalizado no site.</p>
<ul>
<li><strong>Descobrir qual a latitude e longitude do endereço:</strong> Isso é útil quando se pretende definir algum local como default ao entrar no site. Para isso faremos um formulário onde você digita o endereço e o mapa é carregado no endereço e exibe o posicionamento de latitude e longitude. O código JavaScript é esse:</li>
</ul>
<div class="codigo">
<pre><code><em><span class="kwd">function</span><span class="pln"> mostraEndereco</span><span class="pun">(){</span><span class="pln">
                </span><span class="kwd">var</span><span class="pln"> endereco </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">"endereco"</span><span class="pun">).</span><span class="pln">value</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> geocoder </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        geocoder</span><span class="pun">.</span><span class="pln">getLatLng</span><span class="pun">(</span><span class="pln">endereco</span><span class="pun">,</span><span class="pln">
                                </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">point</span><span class="pun">){</span><span class="pln">
                                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> </span><span class="pun">!</span><span class="pln">point </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                                                alert</span><span class="pun">(</span><span class="pln">endereco </span><span class="pun">+</span><span class="pln"> </span><span class="str">" não encontrado"</span><span class="pun">);</span><span class="pln">
                                        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                                                map</span><span class="pun">.</span><span class="pln">setCenter</span><span class="pun">(</span><span class="pln">point</span><span class="pun">,</span><span class="pln"> </span><span class="lit">13</span><span class="pun">);</span><span class="pln">
                                                </span><span class="kwd">var</span><span class="pln"> marca </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">GMarker</span><span class="pun">(</span><span class="pln">point</span><span class="pun">);</span><span class="pln">
                                                map</span><span class="pun">.</span><span class="pln">addOverlay</span><span class="pun">(</span><span class="pln">marca</span><span class="pun">);</span><span class="pln">
                                                marca</span><span class="pun">.</span><span class="pln">openInfoWindowHtml</span><span class="pun">(</span><span class="pln"> endereco </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> point</span><span class="pun">.</span><span class="kwd">toString</span><span class="pun">()</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
                                        </span><span class="pun">}</span><span class="pln">
                                </span><span class="pun">}</span><span class="pln">
                        </span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        alert</span><span class="pun">(</span><span class="str">"GeoCoder não identificado"</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></em><span class="pln"><em>
</em>E </span><span class="kwd">no</span><span class="pln"> HTML</span><span class="pun">:</span><span class="pln">
</span><em><span class="pun">&lt;</span><span class="pln">form id</span><span class="pun">=</span><span class="str">"form_mapa"</span><span class="pln"> action</span><span class="pun">=</span><span class="str">"#"</span><span class="pln"> method</span><span class="pun">=</span><span class="str">"get"</span><span class="pun">&gt;</span><span class="pln">
     </span><span class="pun">&lt;</span><span class="pln">input type</span><span class="pun">=</span><span class="str">"text"</span><span class="pln"> name</span><span class="pun">=</span><span class="str">"endereco"</span><span class="pln"> id</span><span class="pun">=</span><span class="str">"endereco"</span><span class="pln"> size</span><span class="pun">=</span><span class="str">"50"</span><span class="pln"> value</span><span class="pun">=</span><span class="str">"São Paulo"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
     </span><span class="pun">&lt;</span><span class="pln">input type</span><span class="pun">=</span><span class="str">"button"</span><span class="pln"> name</span><span class="pun">=</span><span class="str">"enviar"</span><span class="pln"> id</span><span class="pun">=</span><span class="str">"enviar"</span><span class="pln"> value</span><span class="pun">=</span><span class="str">"Mostrar Latitude/Longitude"</span><span class="pln"> onclick</span><span class="pun">=</span><span class="str">"mostraEndereco()"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="str">/form&gt;</span></em></code></pre>
</div>
<ul>
<li><strong>Definindo um evento:</strong> Para definir um evento precisamos utilizar o objeto GEvent. Seguindo a mesma linha do código, definiremos um evento, que será disparado toda vez que o marcador for clicado, fazendo com que a posição geográfica seja exibida. Devemos colocar esse evento na função mostrarEndereco(), pois é nela que definimos o marcador.</li>
</ul>
<div class="codigo">
<pre><code><span class="typ">     GEvent</span><span class="pun">.</span><span class="pln">addListener</span><span class="pun">(</span><span class="pln">marca</span><span class="pun">,</span><span class="pln"> </span><span class="str">"click"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
           marca</span><span class="pun">.</span><span class="pln">openInfoWindowHtml</span><span class="pun">(</span><span class="pln"> endereco </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> point</span><span class="pun">.</span><span class="kwd">toString</span><span class="pun">()</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
     </span><span class="pun">});</span></code></pre>
</div>
<ul>
<li><strong>Adicionando zoom no mapa:</strong> Para adicionar o controle de zoom, devemos adicionar um controle ao mapa, através do método addControl() e a esse controle devemos adicionar o controle do mapa, o mais correto é adicionar isso na função de inicialização: inicializa(), a linha completa que deve ser inserida é esta:</li>
</ul>
<div class="codigo">
<pre><code><span class="pln">map</span><span class="pun">.</span><span class="pln">addControl</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">GSmallMapControl</span><span class="pun">()</span><span class="pln"> </span><span class="pun">);</span></code></pre>
</div>
<ul>
<li>Adicionando forma de visualização: Podemos definir um controle para que o usuário possa ver o endereço na forma de mapa, híbrido ou satélite. Para isso devemos seguir a mesma linha de raciocínio para inserir o zoom, que seria adicionar um controle.</li>
</ul>
<div class="codigo">
<pre><code><span class="pln">map</span><span class="pun">.</span><span class="pln">addControl</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">GMapTypeControl</span><span class="pun">()</span><span class="pln"> </span><span class="pun">);</span></code></pre>
</div>
<h4>Exemplo avançado</h4>
<p>Para mostrar algo avançado, que tal traçar a rota do ponto A ao ponto B? Para isso precisaremos que o usuário digite os valores dos pontos A e B. Para traçar a rota, vamos reescrever todo o exemplo, simplificando as configurações.</p>
<div class="codigo">
<pre><em><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;head&gt;
        &lt;title&gt;Aprendendo a Usar a API Google Maps - Obter Rota | Paulo Fernandes &lt;/title&gt;
        &lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/&gt;

    &lt;script
src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=true&amp;amp;
key=ABQIAAAAAaVFxs6kNq7gWY59qf5XMxSec6s_uUscdbTyPSy8oWl8zYzqFRRanjFebOU60thMmEQQDEPx3A3y5Q"
type="text/javascript"&gt;&lt;/script&gt;
        &lt;script type="text/javascript"&gt;
            var map = null;
            var geocoder = null;
            var from;
            var to;
            var directionsPanel = null;
            var directions = null;

            function inicializa() {
                if (GBrowserIsCompatible()) {
                    map = new GMap2(document.getElementById("mapa_base"));
                    map.setCenter(new GLatLng(-22.5489433, -46.6388182), 7);
                    geocoder = new GClientGeocoder();
                    map.addControl( new GSmallMapControl() );
                    map.addControl( new GMapTypeControl() );
                    directionsPanel = document.getElementById("route");
                    directions = new GDirections(map, directionsPanel);

                  }
            }

            function gerarRota(){
                from = document.getElementById("partida").value;
                to = document.getElementById("destino").value;
                if ( geocoder ) {
                    geocoder.getLatLng(from,
                        function(point){
                            if ( !point ) {
                                alert(from + " não encontrado");
                            }
                        }
                    );
                    geocoder.getLatLng(to,
                        function(point){
                            if ( !point ) {
                                alert(to + " não encontrado");
                            }
                        }
                    );

                    var string = "from: " + from + " to: "+to;
                    directions.clear();
                    directions.load(string);
                    GEvent.addListener(directions, "error", erroGetRoute);
                } else {
                    alert("GeoCoder não identificado");
                }
            }

            function erroGetRoute(){
                alert("Não foi possivel traçar a rota de: " + from + " para: " + to );
            }

    &lt;/script&gt;
    &lt;/head&gt;
    &lt;body onload="inicializa()" onunload="GUnload()"&gt;
        &lt;form id="form_mapa" action="#" method="get"&gt;
            &lt;label for="partida"&gt;Partida&lt;/label&gt;
            &lt;input type="text" name="partida" id="partida" value="São Paulo" size="50" /&gt;
            &lt;br /&gt;
            &lt;label for="destino"&gt;Destino&lt;/label&gt;
            &lt;input type="text" name="destino" id="destino" value="Rio de Janeiro" size="50" /&gt;
            &lt;br /&gt;
            &lt;input type="button" name="enviar" id="enviar" value="Obter Rota" onclick="gerarRota()"/&gt;
        &lt;/form&gt;
        &lt;div id="mapa_base" style="width: 800px; height: 500px;"&gt;&lt;/div&gt;
        &lt;div id="route" style="width: 300px; height: 500px; position: absolute; right: 0; top: 0;"&gt;&lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></em></pre>
</div>
<p>Para mostrar a rota, tivemos que criar uma nova div com o id igual à &#8220;route&#8221;, é neste local que exibiremos o passo a passo da rota traçada. Essa captura do local foi feita nesta linha directionsPanel = document.getElementById(&#8220;route&#8221;); Para traçar a rota, devemos instanciar o objeto GDirections e informar para ele carregar a rota através do método directions.load(string);</p>
<p>No método load devemos passar os dois endereços escritos por extenso, antes o endereço de partida devemos atribuir from: e antes do endereço de destino to: , ficando a string completa from: São Paulo to: Rio de Janeiro, por exemplo.</p>
<p>Caso algum dos dois endereços não seja encontrado, o código exibirá um alert informando que a rota não pode ser traçada.</p>
<h4>Conclusão</h4>
<p>Com este artigo pudemos perceber o poder que a API nos dá, ela nos fornece outras diversas possibilidades que podem ser vistas na documentação oficial. O objetivo do artigo foi introduzir os principais conceitos e o que se pode utilizar no site de sua empresa, por exemplo.</p>
<p>Algo que devemos tomar cuidado é na declaração das variáveis, pois o local onde ela é declarada pode fazer com que a API se porte de forma indesejada. Por exemplo, quando declaramos uma marca, se a tivemos declarado fora da função a cada novo endereço, a marca anterior seria perdida, mas repare que a informação de latitude e longitude é perdida, mantendo somente a ultima. Faça o teste, declare a variável fora do método, acredito que achará bem interessante.</p>
<p>Pode ser que exista outra forma de fazer o que demonstramos ou até que o que foi demonstrado esteja errado, mesmo que aparentemente funcionando.</p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/13893/desenvolvimento/entendendo_um_pouco_a_api_google_maps/" target="_blank">Imasters</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/entendendo-um-pouco-a-api-google-maps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Frameworks no PHP: O que, quando, por que e qual?</title>
		<link>http://www.debugando.com/frameworks-no-php-o-que-quando-por-que-e-qual/</link>
		<comments>http://www.debugando.com/frameworks-no-php-o-que-quando-por-que-e-qual/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 20:45:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Codelgniter]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=637</guid>
		<description><![CDATA[
PHP é a linguagem de programação mais famosa do mundo por várias razões: flexibilidade, facilidade de uso e vários outros fatores. Mas algumas vezes a programação se torna monótona e/ou repetitiva, e é aí que um framework pode ajudar.
O que é um framework de PHP?
De forma resumida o framework é uma estrutura, uma fundação para [...]]]></description>
			<content:encoded><![CDATA[<div id="strConteudo">
<p>PHP é a linguagem de programação mais famosa do mundo por várias razões: flexibilidade, facilidade de uso e vários outros fatores. Mas algumas vezes a programação se torna monótona e/ou repetitiva, e é aí que um <strong>framework</strong> pode ajudar.</p>
<h4>O que é um <em>framework</em> de PHP?</h4>
<p>De forma resumida o framework é uma estrutura, uma fundação para você criar a sua aplicação. Em outras palavras o framework te permite o desenvolvimento rápido de aplicações (RAD), o que faz economizar tempo, ajuda a criar aplicações mais sólidas e seguras além de reduzir a quantidade de código repetido. Os frameworks também permitem que os iniciantes criem aplicações mais estáveis garantindo uma boa relação entre o banco de dados e a camada externa de exibição. Isso tudo te permite gastar mais tempo desenvolvendo a aplicação em si do que repetindo os códigos que todas as aplicações têm.</p>
<p>A idéia padrão de trabalho por trás de um framework no PHP está ligada ao modelo MVC (Model View Controller). MVC é uma forma de programação que isola a <strong>lógica de negócio</strong> (como a aplicação funciona) da <strong>camada de exibição</strong> (a parte visual). O <strong>Model</strong> cuida do banco de dados, o <strong>View</strong> cuida da camada de exibição e o <strong>Controller</strong> cuida da lógica de negócio. Isso tudo faz com que você trabalhe mais rápido e de forma setorizada.</p>
<h4>Por que usar um <em>framework</em> de PHP?</h4>
<p>Os desenvolvedores utilizam frameworks por vários motivos, e o maior deles é para agilizar o processo de desenvolvimento. A re-utilização de código em vários projetos vai economizar muito tempo e trabalho? Isso é garantido, pois o framework já traz uma série de módulos pré-configurados (e funcionando) para fazer as mais variadas e comuns tarefas como envio de e-mails, conexão com o banco de dados, sanitização (limpeza) de dados e proteção contra ataques.</p>
<p>Estabilidade é outra grande vantagem dos frameworks. A simplicidade, que é um dos grandes &#8220;feitos&#8221; do PHP, também é o que possibilita inúmeros erros e falhas pelos principiantes? Nem todo código que funciona necessariamente está correto e bem desenvolvido.</p>
<h4>Quando usar um <em>framework</em> de PHP?</h4>
<p>Essa é uma dúvida muito comum em todos os níveis de desenvolvimento. Para a maioria dos iniciantes, usar um framework, além de ser mais fácil, vai ser mais estável, então é bom usá-los sempre que possível.</p>
<p>Em contrapartida vários programadores experientes vêem os frameworks como ferramentas usadas por programadores fracos, que não sabem como criar um código limpo, sólido e seguro.</p>
<p>Quando se trabalha com projetos que têm um prazo muito curto (o que eu chamo de &#8220;prazo Jack Bauer&#8221;) é sempre bom usar um framework, pois ele vai agilizar todo o processo. Outro motivo forte para o uso do framework é que você não está criando &#8220;código artesanal&#8221;? Há todo um padrão que você deve seguir para que as coisas funcionem, e está tudo documentado e explicado em uma vasta comunidade de suporte.</p>
<h3>CakePHP</h3>
<p>O <a href="http://www.cakephp.com.br/">CakePHP</a> é uma grande opção para iniciantes e desenvolvedores avançados. Ele foi criado usando as bases e modelos do Ruby on Rails e é pesadamente focado no desenvolvimento ágil e rápido. Recentemente ele tem se tornado muito famoso por sua simplicidade e facilidade de uso.</p>
<p>Eu <strong>pessoalmente</strong> recomendo o CakePHP. Minha vida de programador mudou depois que eu comecei a usar ele.</p>
<h4>Zend Framework</h4>
<p>O <a class="ext" href="http://framework.zend.com/">Zend Framework</a> é um framework focado no desenvolvimento de aplicações pra web 2.0. Ele tem um grande número de seguidores, fontes de suporte e uma comunidade cheia de usuários ativos e participativos. O Zend é o framework mais famoso hoje em dia, ele é robusto e permite a criação de aplicações <em>enterprise</em> (de grande porte) mas seu uso exige um conhecimento vasto do PHP.</p>
<h4>CodeIgniter</h4>
<p>Já o <a class="ext" href="http://codeigniter.com/">CodeIgniter</a> é bastante conhecido pela sua facilidade de uso, performance e rapidez. É ideal para aplicações rodando em servidores compartilhados. Ele oferece soluções simples e de pequeno porte, com um grande número de tutoriais em vídeo, fóruns e wikis.</p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/13718/php/frameworks_no_php_o_que_quando_por_que_e_qual/" target="_blank">Imasters</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/frameworks-no-php-o-que-quando-por-que-e-qual/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

