<?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>JulioGreff.net &#187; boas práticas</title>
	<atom:link href="http://juliogreff.net/tag/boas-praticas/feed/" rel="self" type="application/rss+xml" />
	<link>http://juliogreff.net</link>
	<description>A mesma web, um novo estilo de desenvolvimento</description>
	<lastBuildDate>Sat, 07 May 2011 17:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Backup: Um Salvador de Vidas</title>
		<link>http://juliogreff.net/backup-um-salvador-de-vidas/</link>
		<comments>http://juliogreff.net/backup-um-salvador-de-vidas/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 07:41:44 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[filosofia]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=154</guid>
		<description><![CDATA[Quanto tempo você leva desenvolvendo algum projeto, trabalhando em um freelance, mantendo um blog? Não muito pouco, creio eu. E quanto tempo você pode levar para perder tudo isso? Uma &#8220;catástrofe&#8221; pode acontecer a qualquer momento, levando todo seu trabalho embora. Não teria sido muito mais fácil manter um backup? Ninguém está livre de um [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pc-formatado-e-agora/' rel='bookmark' title='Permanent Link: PC formatado, e agora?'>PC formatado, e agora?</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Quanto tempo você leva desenvolvendo algum projeto, trabalhando em um freelance, mantendo um blog? Não muito pouco, creio eu. E quanto tempo você pode levar para perder tudo isso? Uma &#8220;catástrofe&#8221; pode acontecer a qualquer momento, levando todo seu trabalho embora. Não teria sido muito mais fácil manter um backup?</p>
<p>Ninguém está livre de um desastre. A qualquer momento seu HD pode queimar, seus arquivos podem ser infectados por algum vírus, algum raio pode cair em cima de seu computador, ou até mesmo o <a href="http://juliogreff.net/servidor-fora-do-ar/" title="Servidor Fora do Ar">seu servidor de hospedagem pode explodir</a> (pergunta, vai!). Esse é o tipo de coisa que ninguém espera, e não há como dizer &#8220;hoje vou perder todos meus arquivos, é bom fazer uma cópia&#8221;. O destino é cruel e impiedoso, principalmente com os descuidados.</p>
<p>A maneira mais eficaz, e também mais sensata, é sempre manter um backup de seus dados importantes. É bom sempre fazer isso com uma certa regularidade. Backups diários podem ser custosos e até impraticáveis em certos casos, então realizá-lo uma vez por semana já parece suficiente. Por pior que seja a catástrofe, você sempre terá para onde correr.</p>
<p>Mantendo cópias regulares, com certeza em pouco tempo você terá uma quantidade enorme de dados armazenados. Aí o jeito é organizar! Manter uma lista dos arquivos copiados, data de gravação, enfim. Não adianta TER os dados e não saber onde encontrá-los. Pode acreditar, essa sensação é ainda pior.</p>
<p>Por que esse texto estilo sermão? Eu explico. Semana retrasada, uma explosão no data center H1 do The Planet derrubou uma montanha de servidores (e três paredes, segundo me consta), e <a href="http://juliogreff.net/servidor-fora-do-ar/" title="Servidor Fora do Ar">eu estava em um deles</a>. Antes que eu ficasse sabendo de mais informações, se abateu o pânico: eu não tinha um backup. Por sorte não houve perda de dados, mas já foi o suficiente para abrir o olho, e ser um pouco mais cauteloso. Nem mesmo armazenados remotamente nossos dados estão seguros.</p>
<p>Um pequeno esforço que pode salvar muito retrabalho, e até sua vida, dependendo de quão dependente ela seja de seu trabalho. E você, <strong>mantém um backup</strong>? Nem que seja mensal, apenas de trabalhos correntes, ou o que quer que seja importante para você guardar?</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pc-formatado-e-agora/' rel='bookmark' title='Permanent Link: PC formatado, e agora?'>PC formatado, e agora?</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/backup-um-salvador-de-vidas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Hijax: Ajax Acessível</title>
		<link>http://juliogreff.net/hijax-ajax-acessivel/</link>
		<comments>http://juliogreff.net/hijax-ajax-acessivel/#comments</comments>
		<pubDate>Thu, 22 May 2008 20:08:11 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Usabilidade/Acessibilidade]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[hijax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[kiss]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=145</guid>
		<description><![CDATA[De longe, um dos maiores problemas no uso de Ajax é a acessibilidade. A facilidade em atualizar apenas uma parte da página tornou os desenvolvedores menos preocupados com a acessibilidade de seus projetos. Sem JavaScript, sites inteiros tornam-se completamente inacessíveis. Então, qual a solução para esse problema? Para evitar que o caos venha a este [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>De longe, um dos maiores problemas no uso de Ajax é a acessibilidade. A facilidade em atualizar apenas uma parte da página tornou os desenvolvedores menos preocupados com a acessibilidade de seus projetos. Sem JavaScript, sites inteiros tornam-se <strong>completamente inacessíveis</strong>. Então, qual a solução para esse problema?</p>
<p>Para evitar que o caos venha a este mundo, surge outra palavrinha: <strong>Hijax</strong>. Mas primeiro vamos voltar a algumas premissas do desenvolvimento web: <strong>aprimoramento progressivo</strong> (<strong>progressive enhancement</strong>) e <strong>degradação elegante</strong> (<strong>graceful degradation</strong>), e me desculpem se errei a tradução dos termos&#8230;</p>
<h3>Aprimoramento Progressivo &#8211; Primeiro o Conteúdo</h3>
<p>Ninguém começa (ou pelo menos não deveria começar) a desenvolver uma aplicação primeiro pela camada de comportamento, isso vai completamente contra a filosofia de desenvolvimento em camadas (primeiro o conteúdo, depois a apresentação e, por último, o comportamento).</p>
<p>A idéia é começar o desenvolvimento de baixo. Em outras palavras, desenvolva da maneira antiga, usando links como sempre se usou desde que a Internet é Internet, devolvendo páginas inteiras como resposta. Depois, somente depois, comece a adicionar funcionalidades <strong>que melhorem a experiência do usuário</strong> (nada de frescuras que o usuário só vai achar bonito, <a href="http://juliogreff.net/ajax-vs-acessibilidade/" title="Ajax vs. Acessibilidade">pra que reinventar o link?</a>).</p>
<h3>Degradação Elegante &#8211; Útil sem perder a elegância</h3>
<p>&#8220;Degradação elegante&#8221; significa perder alguns recursos sem perder suas funcionalidades. Pode-se perder algumas animações e outros fru-frus, mas perder acesso ao conteúdo é inadmissível. CSS não é tão importante quanto as informações que queremos mostrar. Nunca ouviu a frase &#8220;mais ajuda quem não atrapalha&#8221;? A idéia é a mesma.</p>
<p>O desenvolvimento progressivo e em camadas é o caminho mais rápido para a degradação elegante. Mesmo utilizando Ajax, o conteúdo ainda deve continuar acessível através de um link comum. É aí onde <strong>Hijax</strong> entra.</p>
<h3>Hijax &#8211; Seqüestrando os Links</h3>
<p>O próprio termo explica bem o uso da técnica. <a href="http://domscripting.com/blog/display/41" title="Hijax - DOM Scripting" rel="external">Hijax</a>, do inglês hijack (&#8220;seqüestrar&#8221;), quer dizer <strong>seqüestrar</strong> os links comuns, e transformá-los em links Ajax. Simples assim.</p>
<p>&#8220;Simples assim&#8221;? Bem, nem tanto, eu confesso. Seus scripts server-side precisam estar preparados para decidir se enviam o &#8220;pacote completo&#8221; ou a &#8220;versão básica&#8221; da página, se for uma requisição normal ou uma requisição assíncrona, respectivamente. Uma breve dica: header <code>X-Requested-With</code>. Duas versões do site? Nunca mais, isso morreu junto com o Netscape, há muito tempo.</p>
<p>Vale lembrar que somente o uso de Hijax não faz uma aplicação completamente acessível, usável e rica. Há muito mais a se pensar. Já falei sobre <a href="http://juliogreff.net/a-aplicacao-ajax-perfeita/" title="A Aplicação Ajax Perfeita">alguns aspectos para uma boa aplicação Ajax</a>, mas tenho absoluta certeza que não passei nem perto de tudo que é necessário. Mas tudo isso já é uma boa base a ser levada em consideração, e com isso já é possível criar algo melhor que muita coisa que existe por aí, tenha certeza. E você, tem feito seu dever de casa e seguido princípios para tornar sua aplicação disponível a todos?</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/hijax-ajax-acessivel/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>A Aplicação Ajax Perfeita</title>
		<link>http://juliogreff.net/a-aplicacao-ajax-perfeita/</link>
		<comments>http://juliogreff.net/a-aplicacao-ajax-perfeita/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 16:39:00 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[cross browser]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/a-aplicacao-ajax-perfeita/</guid>
		<description><![CDATA[Tempos atrás andei pensando sobre uma aplicação Ajax. O que ela deveria ser, como deveria funcionar, tudo o que precisaria ter. Incrementei a idéia, pensando na acessibilidade, usabilidade, unobstrusividade, essas coisas. Cheguei a conclusão que não existem muitas dessas por aí. Não que essa idéia fosse &#8220;a aplicação ajax perfeita&#8221;, mas sim a ideal. Demoraria [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Tempos atrás andei pensando sobre uma aplicação Ajax. O que ela deveria ser, como deveria funcionar, tudo o que precisaria ter. Incrementei a idéia, pensando na <a href="http://juliogreff.net/ajax-vs-acessibilidade/">acessibilidade</a>, usabilidade, unobstrusividade, essas coisas. Cheguei a conclusão que não existem muitas dessas por aí.</p>
<p>Não que essa idéia fosse &#8220;a aplicação ajax perfeita&#8221;, mas sim a ideal. Demoraria muito a ser feita, mas eu consideraria uma obra de arte.</p>
<h3>Padronização</h3>
<p>Essa parte é a parte fácil, que todo mundo <strong>sempre</strong> deveria se dar ao trabalho de fazer: manter seu trabalho dentro dos web standards.</p>
<p>Validar sua marcação, seus CSSs, isso todo mundo faz (ou deveria). Mas às vezes um certo item é deixado de lado: seus XMLs, que não causariam muito problema, a não ser um XML em especial: os feeds. Ou seja, valide tudo que possa ser validado.</p>
<h3>Manutenção</h3>
<p>Código bom é código comentado. Disso ninguém discorda. Sempre comente seus códigos, tanto para seu uso em futuras manutenções e atualizaçãoes, quanto para seus visitantes que querem descobrir o segredo daquela técnica inovadora que você implementou. JavaScript ninguém esconde, e uma técnica nova deveria poder chegar a todos que quisessem, mesmo que seja investigando seu código. Melhor ainda se ele estiver comentado, mesmo que seja somente em partes mais obscuras.</p>
<p>E o tamanho do código não aumentaria? Sim, mas você só precisará comentar partes essenciais, aquelas mais complicadas que você sabe que irá esquecer com o tempo. Além do mais, se você esquecer de seu código, perderá muito tempo até lembrar o que cada parte faz.</p>
<h3>Compatibilidade</h3>
<p>Outra parte facílima, mas indispensável. Se tudo for seguido, nem tanto, mas ainda assim se torna muito mais agradável usar uma aplicação que funcione como deveria funcionar.</p>
<p>Com todas as opções de browsers existentes hoje, sempre haverá aquele que terá problemas (geralmente o azulzinho que todo mundo já conhece). Mas existem maneiras de amenizar o problema. Isso não só com Ajax, mas qualquer &#8220;defeito&#8221; de JavaScript e CSS que possa atrapalhar a experiência do usuário.</p>
<p>Essa parte pode, sem problemas, ser deixada para os frameworks já existentes, que fazem seu trabalho muito bem. A compatibilidade vem sendo muito focada por essas bibliotecas, facilitando, e muito, seu trabalho.</p>
<h3>Controle de readyStates</h3>
<p>Agora começa a parte divertida. Tudo que está logo acima qualquer um faz. Vamos começar adicionando nossos diferenciais.</p>
<p>Geralmente, costuma-se cuidar de apenas dois readyStates: 1 e 4 (aberto e carregado), que resultam no clássico &#8220;Carregando&#8230;&#8221; e a requisição completa. Não que seja necessário, mas um controle completo de estados poderia ser bom.</p>
<p>O usuário saber que sua requisição está sendo processada ajuda, já que não pensaria que a requisição travou (isso acontece bastante quando a requisição demora demais).</p>
<p>Coloquei os readyStates, o que significam e uma sugestão para o texto de carregamento. Os readyStates 0 e 4 não precisam disso, já que 0 não tem muito uso, e 4 terá sua própria função.</p>
<ul>
<li><strong>Não Inicializado (0)</strong></li>
<li><strong>Aberto (1)</strong>: &#8220;Abrindo Requisição&#8221; ou &#8220;Iniciando Requisição&#8221;</li>
<li><strong>Enviado (2)</strong>: &#8220;Enviando Dados&#8221;</li>
<li><strong>Recebendo (3)</strong>: &#8220;Carregando&#8221; ou &#8220;Recebendo Dados&#8221;</li>
<li><strong>Completo (4)</strong></li>
</ul>
<p>Não que seja necessário, mas também seria válido cuidar dos status da requisição também, pelo menos 200 (OK), 404, 500, e os outros erros mais comuns.</p>
<h3>Histórico</h3>
<p>Esse é o maior problema das aplicações Ajax. Já faz tempo que <a title="Ativando o Botão Voltar" href="http://juliogreff.net/ativando-o-botao-voltar/">as primeiras soluções para histórico apareceram</a>, e <a title="Histórico para Navegação via JavaScript" href="http://juliogreff.net/historico-para-navegacao-via-javascript/">outras melhoradas</a>, e ainda há centenas de aplicações que não se dão ao trabalho de implementar qualquer das soluções.</p>
<p>O histórico <strong>sempre</strong> deve ser implementado, mesmo que sua aplicação não queira dominar o mundo.</p>
<h3>Cache</h3>
<p>O cache, considerado uma praga por muitos, pode ser de uma grande ajuda para sua aplicação. Sempre que se faz uma requisição estática (que não muda em pouco tempo), deve-se usar o cache, pois quando refizermos essa requisição, ela terminará mais rápido.</p>
<p>Além do mais, usando o histórico, podemos guardar requisições &#8220;cacheadas&#8221; no próprio JavaScript. Assim, mais rápido ainda.</p>
<p>É claro que, em requisições dinâmicas, não devemos usar essa técnica. Ela pode prejudicar o usuário, pois não há maneira de atualizar a página através do F5.</p>
<h3>Filas de Requisição</h3>
<p>Todos sabem que se quando uma requisição estiver em andamento, e outra for iniciada, a primeira será cancelada.</p>
<p>Assim como o histórico, já existem milhares de soluções diferentes para <a title="Fila de Requisições em Ajax" href="http://juliogreff.net/fila-de-requisicoes-em-ajax/">fila de requisições</a>. Esse recurso deve também ser usado sempre que possível (ou seja, sempre). Isso pode evitar aborrecimentos ao usuário.</p>
<h3>Inobstrusividade</h3>
<p>Essa é a questão mais polêmica. Sua aplicação não deve usar JavaScript obstrusivo (ou usar o menos possível), fazendo-a de maneira que funcione corretamente em qualquer browser.</p>
<p>E o Ajax sem JavaScript, como fica? Também tive idéias mirabolantes quanto a isso. Você deve usar o mesmo script server-side tanto para requisições assíncronas (Ajax) quanto para as síncronas (me refiro àquelas via browser). Para isso, usamos aquele header <code>X-Requested-With</code>, que seu server-side deve identificar.</p>
<p>Dessa maneira, não &#8220;trancamos&#8221; o conteúdo nem ao usuário nem aos buscadores e afins. Benefícios ao usuário e a você (e ao seu bolso, se for o caso).</p>
<p>Lembre-se de tornar o conteúdo Ajax-less atrativo aos olhos do usuário também, usando o mesmo layout do resto da aplicação (ou a mesma estrutura, caso seja XML).</p>
<h3>Desempenho</h3>
<p>O desempenho é outra característica muito essencial. Em tráfego de dados muito grande, devemos tomar cuidado com o JavaScript. Muito <a title="responseXML" href="http://juliogreff.net/responsexml/">XML</a> gera muitas chamadas ao DOM, e isso leva tempo. Aí o <a title="JavaScript Object Notation" href="http://juliogreff.net/javascript-object-notation/">JSON</a> entra em cena.</p>
<p>O Profiler do Firebug pode ser muito útil, já que ele monitora o tempo de execução da sua aplicação e das requisições que ela faz.</p>
<p>Bem, é isso. Quem sabe um dia veremos uma aplicação destas. Estou trabalhando em uma função que faça boa parte disso, espero que consiga terminar. Fui!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/a-aplicacao-ajax-perfeita/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PC formatado, e agora?</title>
		<link>http://juliogreff.net/pc-formatado-e-agora/</link>
		<comments>http://juliogreff.net/pc-formatado-e-agora/#comments</comments>
		<pubDate>Sun, 20 May 2007 17:09:45 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[boas práticas]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/pc-formatado-e-agora/</guid>
		<description><![CDATA[Usuários do Windows sempre estão sujeitos a ter seu PC formatado. Tudo bem, todo mundo sabe que essa hora um dia vai chegar, e geralmente você faz um backup de tudo antes de digitar &#8220;format c:&#8221;. O problema é quando você não tem um backup, e quando o comando (e seus eventos subseqüentes) não é [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/backup-um-salvador-de-vidas/' rel='bookmark' title='Permanent Link: Backup: Um Salvador de Vidas'>Backup: Um Salvador de Vidas</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/pra-quem-voce-escreve/' rel='bookmark' title='Permanent Link: Pra quem você escreve?'>Pra quem você escreve?</a></li>
<li><a href='http://juliogreff.net/codificacao-de-caracteres/' rel='bookmark' title='Permanent Link: Codificação de Caracteres'>Codificação de Caracteres</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Usuários do Windows sempre estão sujeitos a ter seu PC formatado. Tudo bem, todo mundo sabe que essa hora um dia vai chegar, e geralmente você faz um backup de tudo antes de digitar &#8220;format c:&#8221;. O problema é quando você não tem um backup, e quando o comando (e seus eventos subseqüentes) não é dado por você.</p>
<p>E foi assim que tudo aconteceu&#8230; Lá estava eu, feliz da vida, recuperando o backup no meu pen-drive 0km. Terminei tudo e desliguei o PC. Normal, quem não desliga o PC de vez em quando? <a href="http://juliogreff.net/fim-ou-recomeco/" title="Fim ou Recomeço?">O problema aconteceu quando eu voltei</a>.</p>
<p>Após todo o desespero, chutes nas paredes, palavrões e outras coisas que geralmente não se costuma fazer, o PC foi pra chave de fenda. Uma semana (e um dia) depois, o PC estava de volta. Procura daqui, procura dali e nada do DVD de backup (que já era antigo, não iria ajudar muito). Não era nem pelos dados, eles já estavam no HD, a meu pedido. O problema foi com os programas: apesar de pirateados (eu sei, eu sei), não tinha o CD de alguns.</p>
<p>Crianças, sempre mantenham um backup atualizado. Até agora estou correndo pra arrumar uma cópia emprestada (tá bom, já sei, já sei) de alguns programas.</p>
<p>Mas como todo feliz usuário de HD com Windows zero bala, eu tive meus benefícios. Apesar de ter instalado o Windows XP SP2 (antes eu usava o SP1), tudo está rodando mais rápido que de costume, e não apresenta aqueles erros comuns do Windows &#8220;mais passado&#8221;.</p>
<p>Mas o melhor de tudo, no meu caso, são as atualizações. Como uma atualização gera uma enorme dor de cabeça, eu não costumo fazê-la. Mas minha &lt;sarcasmo&gt;querida&lt;/sarcasmo&gt; assistência técnica fez o trabalho sujo por mim. Tudo novinho em folha. O único problema foi com Apache+PHP+BD, já que eu nunca acerto a instalação de primeira, mas dessa vez foi culpa do auto-instalador.</p>
<p>Fechando o balanço, odeio formatar o PC. Mesmo com os benefícios. Os efeitos prolongam-se por muito tempo (sempre tem aquela hora que você vai tentar abrir um arquivo que não está associado&#8230;). Mas aprendi a lição (aliás, duas, antes que me torrem a paciência): compre programas originais, aí você se obriga a guardar os CDs, e <a href="http://juliogreff.net/backup-um-salvador-de-vidas/" title="Backup, um Salvador de Vidas">mantenha sempre um backup atualizado</a>. Tá certo que sai caro comprar um DVD todos os dias, mas duas vezes por mês já serve pra salvar sua pele.</p>
<p>Agora, voltamos com nossa programação normal.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/backup-um-salvador-de-vidas/' rel='bookmark' title='Permanent Link: Backup: Um Salvador de Vidas'>Backup: Um Salvador de Vidas</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/pra-quem-voce-escreve/' rel='bookmark' title='Permanent Link: Pra quem você escreve?'>Pra quem você escreve?</a></li>
<li><a href='http://juliogreff.net/codificacao-de-caracteres/' rel='bookmark' title='Permanent Link: Codificação de Caracteres'>Codificação de Caracteres</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/pc-formatado-e-agora/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ajax vs. Moda vs. Performance</title>
		<link>http://juliogreff.net/ajax-vs-moda-vs-performance/</link>
		<comments>http://juliogreff.net/ajax-vs-moda-vs-performance/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 16:24:31 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Usabilidade/Acessibilidade]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=77</guid>
		<description><![CDATA[Lendo o Tableless, &#8220;Cuidado para não regredir&#8220;, continua a velha discussão sobre o que é bom, o que é moda e o que realmente não presta pra nada (esse último não é o caso de nenhum dos dois posts&#8230;). Vamos à uma discussão rapidinha. Pense: vale a pena escrever uma montanha de código JavaScript, correndo [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Lendo o <a title="Tableless" rel="external" href="http://www.tableless.com.br">Tableless</a>, &#8220;<a title="Cuidado para não regredir" rel="external" href="http://www.tableless.com.br/cuidado-para-nao-regredir">Cuidado para não regredir</a>&#8220;, continua a velha discussão sobre o que é bom, o que é moda e o que realmente não presta pra nada (esse último não é o caso de nenhum dos dois posts&#8230;).</p>
<p>Vamos à uma discussão rapidinha. Pense: vale a pena escrever uma montanha de código JavaScript, correndo o risco de ficar completamente inacessível para alguns browsers, quebrar a cabeça, fazer algo bonitinho que demora o dobro pra carregar, sabendo que você podia escrever uma (uma só, nada mais, sem exagero) única linha? É o caso do pessoal que faz todos os links usando Ajax.</p>
<p>E não é só isso. Há muita coisa que poderia ser evitada. Carregar páginas quase inteiras, pequenos textos estáticos (babem&#8230;), outras coisinhas irritantes que pulam na tela&#8230; Quer que eu prove que não melhora a performance?  <a title="XML HTTP Performance and Caching" rel="external" href="http://me.eae.net/archive/2005/04/02/xml-http-performance-and-caching/">XML HTTP Performance and Caching</a>. Creio que posso te convencer.</p>
<p>Descartando a acessibilidade por enquanto. Um site que use Ajax, pra ser mais útil e mais rápido, precisa de muito planejamento. Um ótimo exemplo de planejamento é o Gmail e Google Reader. Inclua a acessibilidade: ainda temos o Google na frente (Gmail sem Ajax também existe). Uma <a title="As Verdadeiras Restrições do Ajax" rel="external" href="http://ajaxonline.com.br/forum/viewtopic.php?t=7">boa discussão</a> sobre isso também rolou lá no Ajax Online.</p>
<p>Apesar de tudo, ainda acredito que já evoluímos muito, e estamos evoluindo. O Ajax no Brasil já amadureceu bastante (até o Ajax Online abandonou a versão 100% Ajax, evolução). Ainda temos muito a progredir, e vai demorar, eu sei, mas não podemos parar. Graças a muita gente já temos trabalhos bons. Agora queremos trabalhos ótimos, basta amadurecer a idéia.</p>
<p>Esta é a minha opinião, não tomem como certa. Apenas pense sobre isso, concorde ou não. Até!</p>
<p class="post-see">Também já havia falado sobre essas algumas questões relacionadas a Ajax em <a href="http://juliogreff.net/ajax-vs-acessibilidade/" title="Ajax vs. Acessibilidade">Ajax vs. Acessibilidade</a>. Também falei sobre <a href="http://juliogreff.net/a-aplicacao-ajax-perfeita/" title="A Aplicação Ajax Perfeita">A Aplicação Ajax Perfeita</a>, que pode colocar algumas minhocas em sua cabeça&#8230;</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/ajax-vs-moda-vs-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fila de Requisições em Ajax</title>
		<link>http://juliogreff.net/fila-de-requisicoes-em-ajax/</link>
		<comments>http://juliogreff.net/fila-de-requisicoes-em-ajax/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 21:30:56 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[boas práticas]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=63</guid>
		<description><![CDATA[O Ajax está amadurecendo. Hoje já se vê aplicações bem pensadas, onde deveriam estar. Sempre tem o pessoal que abusa, mas já diminuiu muito. Estamos caminhando na direção certa. Já faz um certo tempo que não falo nesse assunto, mas hoje estou de volta, nem que seja só por agora. Vamos ver como fazer um [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>O Ajax está amadurecendo. Hoje já se vê aplicações bem pensadas, onde deveriam estar. Sempre tem o pessoal que abusa, mas já diminuiu muito. Estamos caminhando na direção certa.<br />
Já faz um certo tempo que não falo nesse assunto, mas hoje estou de volta, nem que seja só por agora. Vamos ver como fazer um fila de requisições, pra que todas sejam completadas sem interferência.</p>
<h3>Preparação</h3>
<p>A fila de requisições baseia-se em uma variável (lógico). Usaremos um simples array:</p>
<pre><code>var fila = new Array();
</code></pre>
<p>Precisaremos também de duas funções, uma que coloca a requisição na fila, e outra que executa a fila em ordem.</p>
<h3>Colocando na Fila</h3>
<p>Para colocarmos um item na fila, usaremos a função <code>queueAjax</code>, descrita abaixo.</p>
<pre><code>var queueAjax = function(id, url) {
  // Usando o id, você pode colocar um carregando:
  document.getElementById(id).innerHTML = "Carregando...";
  // Adicionando nossa requisição:
  fila.push([id, url]);
  // Não tendo requisições pendentes, lançamos outra função
  if(fila.length &gt; 1) executeQueue();
}</code></pre>
<p>Analisando: colocamos <code>id</code> e <code>url</code> na fila, de uma forma ou outra. Se não houverem mais que uma requisição na fila, executamos a função <code>executeQueue()</code> (sem argumentos mesmo). Ela se encarregará de todo o resto.</p>
<h3>Executando cada Requisição&#8230;</h3>
<p>Não precisaremos executar cada requisição manualmente (lógico, a fila é pra isso). Usaremos a função <code>executeQueue()</code> pra isso. Neste momento, estou assumindo que você tem a variável <code>xmlhttp</code> configurada como um objeto <code>XMLHttpRequest</code>.</p>
<pre><code>var executeQueue = function() {
  var current = fila.shift(); // Retiramos o primeiro membro do array
  xmlhttp.open("GET", current[1], true);
  xmlhttp.onreadystatechange = function() {
    // Aqui você cuida dos readyStates
    // Quando for 4: (não coloquei o código, poupando espaço)
    document.getElementById(current[0]).innerHTML = xmlhttp.responseText;
    // Tá pronto, e passamos ao próximo item, se houver
</code><code>    if(fila.length &gt; 0) setTimeout(executeQueue, 100);
</code><code>  }
  xmlhttp.send(null);
}
</code></pre>
<p>Analisando de novo: fazemos nossa requisição como sempre (poupei código, também pra prevenir Ctrl + C e V). Note que tiramos o primeiro item do array, e colocamos em uma variável.<br />
Quando a nossa requisição atual estiver prontinha, e o resultado no lugar, podemos executar a próxima (se houver), sem que precisemos fazer nada.</p>
<h3>Usando tudo isso</h3>
<p>Pra usar você só vai precisar chamar uma função: <code>queueAjax(id, url)</code>, pra cada requisição que você quiser fazer. Nada mais.<br />
Você também pode estender muito mais esse script, colocando opções, tratamento para as saídas&#8230; Dê asas a sua criatividade.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/fila-de-requisicoes-em-ajax/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Controle de Erros em JS</title>
		<link>http://juliogreff.net/controle-de-erros-em-js/</link>
		<comments>http://juliogreff.net/controle-de-erros-em-js/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 20:39:21 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[erros]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=54</guid>
		<description><![CDATA[Esse necessita de criatividade: controle de erros em JavaScript. Sabe aqueles erros de linguagem que mostram uma mensagem muito bem escrita? E sabe aqueles erros que (para os usuários) parecem inexplicáveis quando eles rodam seus scripts? Podemos transformar a segunda situação na primeira. Em JavaScript existe um objeto chamado Error, que é obviamente uma mensagem [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-3/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 3'>JavaScript Orientado a Objetos &#8211; Parte 3</a></li>
<li><a href='http://juliogreff.net/poo-na-vida-real/' rel='bookmark' title='Permanent Link: POO na Vida Real'>POO na Vida Real</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-1/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 1'>JavaScript Orientado a Objetos &#8211; Parte 1</a></li>
<li><a href='http://juliogreff.net/json-valido/' rel='bookmark' title='Permanent Link: JSON Válido'>JSON Válido</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Esse necessita de criatividade: controle de erros em JavaScript. Sabe aqueles erros de linguagem que mostram uma mensagem muito bem escrita? E sabe aqueles erros que (para os usuários) parecem inexplicáveis quando eles rodam seus scripts? Podemos transformar a segunda situação na primeira.</p>
<p>Em JavaScript existe um objeto chamado <code>Error</code>, que é obviamente uma mensagem de erro. Essa mensagem pode conter também um número. Veja:</p>
<pre><code>
var comNumero = new Error(0, "Erro Desconhecido");
var semNumero = new Error("Erro sem número");</code></pre>
<p>Tá certo, isso não faz sentido. Geralmente eu começo explicando assim, é um vício. Mas as coisas começarão a ficar claras.<br />
Quando criamos nossos scripts (para nosso próprio uso), dificilmente eles funcionarão com erros, pois nós sabemos (ou devíamos) o que o script faz e os erros que podem acontecer se não fizermos. Portanto, não fazemos um controle de erros por que não é necessário. Já se criarmos um script para ser distribuído, o usuário pode não saber exatamente o que acontece, e isso fatalmente resultará em um erro, que poderá ser fatal, fatalmente acabando com os planos do pobre coitado. Talvez o usuário não entenda exatamente o que quer dizer os erros do console, resultando em um pequeno problema.<br />
É pra isso que usamos esse controle de erros. Ele pode prevenir uma entrada de dados errada, uma função com algum parâmetro faltando, essas coisas, fazendo com que o script gere um erro antes, com a mensagem que você deseja, tornando tudo mais claro.</p>
<p>Só que há uma situação atenuante: criando um erro não quer dizer que ele aconteceu. Entretanto podemos fazer isso através da palavra-chave <code>throw</code>.</p>
<pre><code>var erro = new Error("Erro Desconhecido");
throw erro;</code></pre>
<p>Isso, no console do Firefox, resultaria: &#8220;Erro Desconhecido [nova linha]throw erro;&#8221;, ou coisa parecida. Se tivermos um número de erro, a coisa seria assim: &#8220;0 [nova linha]Erro Desconhecido&#8221;, onde &#8220;0&#8243; é o número do erro.<br />
E como testamos se alguma coisa aconteceu errado? Com <code>if</code>, seria o mais lógico. Mas se quisermos saber quando uma função retornou um erro:</p>
<pre><code>try { funcErro(); }
catch(e) { alert("O erro foi " + e); }</code></pre>
<p><code>try</code> é o que tentamos. <code>catch</code> é quando dá algo errado, usando geralmente <code>e</code> como erro retornado. Também há o <code>finally</code>, que é executado de qualquer maneira no final disso tudo aí.<br />
Como estava sem nada mais interessante pra fazer, criei o código abaixo para criação e retorno de erros, pra deixar o negócio mais abreviado.</p>
<pre><code>var JsError = {
  "Throw": function() {
    this.message = arguments[0] || "Erro Desconhecido";
	this.number = arguments[1] || 0;
	this.error = new Error(this.number, this.message);
	throw this.error;
  },
  "Create": function() {
    this.message = arguments[0] || "Erro Desconhecido";
	this.number = arguments[1] || 0;
	this.error = new Error(this.number, this.message);
  	return this.error;
  }
}</code></pre>
<p><strong>Observação:</strong> o número da linha retornado pelo erro é onde o erro foi criado (<code>new Error</code>), e não no throw (pelo menos no Firefox).</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-3/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 3'>JavaScript Orientado a Objetos &#8211; Parte 3</a></li>
<li><a href='http://juliogreff.net/poo-na-vida-real/' rel='bookmark' title='Permanent Link: POO na Vida Real'>POO na Vida Real</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-1/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 1'>JavaScript Orientado a Objetos &#8211; Parte 1</a></li>
<li><a href='http://juliogreff.net/json-valido/' rel='bookmark' title='Permanent Link: JSON Válido'>JSON Válido</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/controle-de-erros-em-js/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Títulos e Usabilidade</title>
		<link>http://juliogreff.net/titulos-e-usabilidade/</link>
		<comments>http://juliogreff.net/titulos-e-usabilidade/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 21:38:44 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Usabilidade/Acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=39</guid>
		<description><![CDATA[Ultimamente meus posts estão saindo todos dos meus feeds, então esse é mais um: HTML Page Titles &#38; Usability. Recomendaria que todos lessem, mas como tem gente que não domina o inglês, vou fazer um pequeno resumo. Seguinte: você entra em um site, como um catálogo (o exemplo usado foi o iStockPhoto). Aí você clica [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/disponibilize-seus-feeds-completos/' rel='bookmark' title='Permanent Link: Disponibilize seus feeds completos'>Disponibilize seus feeds completos</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ultimamente meus posts estão saindo todos dos meus feeds, então esse é mais um: <a href="http://www.brandspankingnew.net/archive/2006/11/html_page_titles_usability.html" rel="external" title="HTML Page Titles &amp; Usability">HTML Page Titles &amp; Usability</a>. Recomendaria que todos lessem, mas como tem gente que não domina o inglês, vou fazer um pequeno resumo.</p>
<p>Seguinte: você entra em um site, como um catálogo (o exemplo usado foi o iStockPhoto). Aí você clica em vários links, lógico. Quando vai voltar para algum, vê algo assim:</p>
<p class="center"><img src="http://www.brandspankingnew.net/img/headers/pagetitles_usability.jpg" alt="Usabilidade em Títulos" title="Usabilidade em Títulos" /></p>
<p>Isso é realmente irritante. Você vai procurar, daqui a pouco ou amanhã mesmo em seus históricos, e só vai encontrar o título da página e o nome do site. Chato pra caramba.</p>
<p>A sugestão foi a seguinte: utilizar <code>Title of this page  &lt;  Section of the Website  &lt;  Name of the Website</code>. Bem mais útil.</p>
<p>Explicando: não posso mudar aqui, antes que me chamem de chato que não cumpre o que diz. Esse WP não permite, é versão MU. Nesse caso, me guentem até poder pagar um servidor pago&#8230; Até!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/disponibilize-seus-feeds-completos/' rel='bookmark' title='Permanent Link: Disponibilize seus feeds completos'>Disponibilize seus feeds completos</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/titulos-e-usabilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pra quem você escreve?</title>
		<link>http://juliogreff.net/pra-quem-voce-escreve/</link>
		<comments>http://juliogreff.net/pra-quem-voce-escreve/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 22:18:29 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[boas práticas]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=37</guid>
		<description><![CDATA[Chegou no Bloglines hoje: Campanha FEED-SE todo mundo e deixe o feed do jeito que você quiser, do Henrique Pereira. Um texto muito interessante, onde ele fala que &#8220;O blog é meu, faço como eu quero&#8221; (mais ou menos assim). Concordo em partes com ele&#8230; Também do Bloglines: Pra quem você escreve?. É um resumo [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/qual-curso-devo-fazer-pra-me-tornar-um-desenvolvedor-web/' rel='bookmark' title='Permanent Link: Qual curso devo fazer pra me tornar um desenvolvedor web?'>Qual curso devo fazer pra me tornar um desenvolvedor web?</a></li>
<li><a href='http://juliogreff.net/qual-editor-voce-usa/' rel='bookmark' title='Permanent Link: Qual editor você usa?'>Qual editor você usa?</a></li>
<li><a href='http://juliogreff.net/voce-sabe-webstandards/' rel='bookmark' title='Permanent Link: Você sabe Webstandards?'>Você sabe Webstandards?</a></li>
<li><a href='http://juliogreff.net/o-que-voce-faz-em-4kb/' rel='bookmark' title='Permanent Link: O que você faz em 4Kb?'>O que você faz em 4Kb?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Chegou no Bloglines hoje: <a href="http://www.revolucao.etc.br/archives/campanha-feed-se-todo-mundo-e-deixe-o-feed-do-jeito-que-voce-quiser/" rel="external" title="Campanha FEED-SE todo mundo e deixe o feed do jeito que você quiser">Campanha FEED-SE todo mundo e deixe o feed do jeito que você quiser</a>, do Henrique Pereira.</p>
<p>Um texto muito interessante, onde ele fala que &#8220;O blog é meu, faço como eu quero&#8221; (mais ou menos assim). Concordo em partes com ele&#8230;</p>
<p>Também do Bloglines: <a href="http://www.brpoint.net/arquivo/2006/11/24/para-quem-voce-escreve.html" rel="external" title="Pra quem você escreve?">Pra quem você escreve?</a>. É um resumo do que eu acho sobre o assunto, mesmo que não tenha sido eu que escrevi&#8230;</p>
<p>Minha idéia é a seguinte: sim, você manda no seu blog. É ditadura mesmo, faz o que quiser. Mas o seu site é para os outros (geralmente), e não apenas para você mesmo. Se for para você mesmo, faça exatamente como quiser. O problema é que você escreve para outras pessoas, e não para si mesmo. Nesse caso, por mais abobrinha que seja seu blog, você deve pensar no melhor para o visitante, seja feed completo ou parcial (isso interessa aqui?).</p>
<p>Então, o que você tem a dizer? É pra você ou pro mundo? Fico por aqui, e até a semana que vem, já que vou estar viajando e não vai dar pra postar até 2ª feira.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/qual-curso-devo-fazer-pra-me-tornar-um-desenvolvedor-web/' rel='bookmark' title='Permanent Link: Qual curso devo fazer pra me tornar um desenvolvedor web?'>Qual curso devo fazer pra me tornar um desenvolvedor web?</a></li>
<li><a href='http://juliogreff.net/qual-editor-voce-usa/' rel='bookmark' title='Permanent Link: Qual editor você usa?'>Qual editor você usa?</a></li>
<li><a href='http://juliogreff.net/voce-sabe-webstandards/' rel='bookmark' title='Permanent Link: Você sabe Webstandards?'>Você sabe Webstandards?</a></li>
<li><a href='http://juliogreff.net/o-que-voce-faz-em-4kb/' rel='bookmark' title='Permanent Link: O que você faz em 4Kb?'>O que você faz em 4Kb?</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/pra-quem-voce-escreve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feeds Parciais para Móveis</title>
		<link>http://juliogreff.net/feeds-parciais-para-moveis/</link>
		<comments>http://juliogreff.net/feeds-parciais-para-moveis/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 21:32:30 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Usabilidade/Acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[feed]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=28</guid>
		<description><![CDATA[Quando aderi a campanha dos feeds completos, do Rafael Arcanjo, pensei em contentar gregos e troianos com os feeds completos. Mas acabou de entrar no meu Bloglines um post de Aldemir Silva, Feeds Parciais para Dispositivos Portáteis. A &#8220;campanha&#8221; não é dele, mas fiquei sabendo pelo blog. Em resumo, a &#8220;campanha&#8221; fala sobre &#8220;analisar o [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/disponibilize-seus-feeds-completos/' rel='bookmark' title='Permanent Link: Disponibilize seus feeds completos'>Disponibilize seus feeds completos</a></li>
<li><a href='http://juliogreff.net/meus-feeds-favoritos/' rel='bookmark' title='Permanent Link: Meus Feeds Favoritos'>Meus Feeds Favoritos</a></li>
<li><a href='http://juliogreff.net/tag-objetivos-para-2007/' rel='bookmark' title='Permanent Link: Tag: Objetivos para 2007'>Tag: Objetivos para 2007</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Quando <a href="http://juliogreff.net/disponibilize-seus-feeds-completos/" title="Disponibilize seus Feeds Completos">aderi a campanha dos feeds completos</a>, do Rafael Arcanjo, pensei em contentar gregos e troianos com os feeds completos. Mas acabou de entrar no meu Bloglines um post de <a href="http://aldemirsilva.blogspot.com/" rel="external" title="Aldemir Silva">Aldemir Silva</a>, <a href="http://aldemirsilva.blogspot.com/2006/11/feeds-parciais-para-dispositivos.html" rel="external" title="Feeds Parciais para Dispositivos Portáteis">Feeds Parciais para Dispositivos Portáteis</a>. A &#8220;campanha&#8221; não é dele, mas fiquei sabendo pelo blog. Em resumo, a &#8220;campanha&#8221; fala sobre &#8220;analisar o outro lado da moeda&#8221;, ou seja, disponibilizar feeds resumidos para dispositivos móveis. Por quê? Leia <a href="http://www.odontopalm.com.br/gsf/arquivo/2006/11/o_outro_lado_da.html#more" rel="external" title="O Outro Lado da Moeda - Garota Sem Fio">aqui</a>, &#8220;O outro lado da campanha dos feeds completos&#8221;. Realmente, existem vantagens e desvantagens.</p>
<p>A solução? Disponibilizar dois feeds: um resumido, um completo. <del datetime="2006-11-10T21:38:02+00:00">Infelizmente, se depender do WordPress, vou ficar fora dessa. Estou dando uma olhada no FeedBurner agora, pra ver se a situação se resolve. Se alguém tiver uma idéia, me passe.</del> Já está funcionando o feed parcial também: <a href="http://feeds.feedburner.com/juliogreff_parcial" rel="external" title="JulioGreff Parcial">JulioGreff Parcial</a>.</p>
<p>Na minha opinião, é bem legal essas idéias que surgem. E até concordo com a Bia. Visitei meu blog ontem pelo celular. Levou um tempinho pra carregar, mas estava lá. Meio desconfigurado, mas gostei. E espero que mais gente experimente os dispositivos móveis (eu só pude experimentar mesmo, não tenho dinheiro suficiente para grande tráfego de dados mesmo).</p>
<p>Enfim, está dada a largada para mais uma corrida de acessibilidade! E lá vou eu ver o que posso fazer&#8230;</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/disponibilize-seus-feeds-completos/' rel='bookmark' title='Permanent Link: Disponibilize seus feeds completos'>Disponibilize seus feeds completos</a></li>
<li><a href='http://juliogreff.net/meus-feeds-favoritos/' rel='bookmark' title='Permanent Link: Meus Feeds Favoritos'>Meus Feeds Favoritos</a></li>
<li><a href='http://juliogreff.net/tag-objetivos-para-2007/' rel='bookmark' title='Permanent Link: Tag: Objetivos para 2007'>Tag: Objetivos para 2007</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/feeds-parciais-para-moveis/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

