<?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>Certamente! &#187; class</title>
	<atom:link href="http://pauloquerido.pt/tag/class/feed/" rel="self" type="application/rss+xml" />
	<link>http://pauloquerido.pt</link>
	<description>O amor é uma vida dentro da vida</description>
	<lastBuildDate>Wed, 08 Sep 2010 10:14:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Oito medidas que vão tornar o seu blogue mais rápido</title>
		<link>http://pauloquerido.pt/blogosfera/oito-medidas-que-vao-tornar-o-seu-blogue-mais-rapido/</link>
		<comments>http://pauloquerido.pt/blogosfera/oito-medidas-que-vao-tornar-o-seu-blogue-mais-rapido/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 14:00:09 +0000</pubDate>
		<dc:creator>Paulo Querido</dc:creator>
				<category><![CDATA[blogosfera]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[optimização]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pauloquerido.pt/tecnologia/oito-medidas-que-vao-tornar-o-seu-blogue-mais-rapido/</guid>
		<description><![CDATA[Comece o leitor por perguntar a si mesmo: quantas vezes já desistiu de esperar que a página de um blogue carregasse e partiu para o seguinte? Eu faço-o cada vez mais &#8212; o que é uma tristeza para os bloggers portugueses, que andam a deixar-se ficar para trás no caminho evolutivo da auto-edição. Decidi por [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pauloquerido.pt/ficheiros/netspeed.jpg" alt="netspeed.jpg" align="left" /><span class="caps">C</span>omece o leitor por perguntar a si mesmo: <strong>quantas vezes já desistiu de esperar que a página de um blogue carregasse e partiu para o seguinte?</strong><br />
Eu faço-o cada vez mais &#8212; o que é uma tristeza para os <em>bloggers</em> portugueses, que andam a deixar-se ficar para trás no caminho evolutivo da auto-edição. Decidi por isso compilar uma série de <strong>medidas simples destinadas a acelerar qualquer blogue</strong>, podendo em muitos casos reduzir o tempo de carregamento a um quinto e menos! Seleccionei-as com cuidado, de forma a que a maioria delas esteja ao alcance dos <em>bloggers</em> menos familiarizados com o código e os <em>templates</em>.<br />
A lista de situações práticas que se segue não é nem exaustiva nem trabalhosa, como verá, e começa com as medidas de execução mais simples, ao alcance de qualquer autor com um blogue na mais fácil das plataformas, o <a href="http://ww.blogger.com">Blogger</a>. No final as duas mais complexas são para autores capazes de mexer nos <em>templates</em> do seu <a href="http://wordpress.org">WordPress</a> (ou equivalente). Eis o sumário:</p>
<ol>
<li> Use imagens mais leves!</li>
<li> Indique no código HTML as dimensões da imagem</li>
<li> Limite os widgets e botões ao essencial</li>
<li> Diminua a quantidade de posts apresentada na primeira página</li>
<li> Veja-se livre de código desnecessário</li>
<li> Reduza a quantidade de pedidos HTTP</li>
<li> Diminua o tamanho dos ficheiros CSS e JS</li>
<li> Limpe o código redundante dos templates</li>
</ol>
<p>A abundância de largura de banda, o preço reduzido do espaço em disco e do processamento criaram uma atmosfera de facilidade. Sobrou contudo uma razão bastante boa, racionalmente falando, para optimizar o peso de uma página e seus componentes: a velocidade a que o destinatário a recebe. E mesmo ao nível do servidor, cada milissegundo conta.<span id="more-158"></span></p>
<ol>
<li><strong>Use imagens mais leves</strong>!
<ul>
<li>A maioria dos autores envia fotos sem prestar atenção às dimensões reais, por vezes muito grandes; é vulgar vermos a instrução para o limite da dimensão das imagens dado através do código na altura da inserção (o <em>width</em> e o <em>height</em>), mas esse &#8220;truque&#8221; só reduz a dimensão de exibição: o ficheiro da imagem mantém-se inalterado e quase sempre tem um peso extraordinário!</li>
<li><strong>A solução</strong>: edite as imagens ANTES de as enviar para a Net. Qualquer editor de imagem serve, até o Paint, embora não o recomende de todo: antes usar um serviço web de optimização de imagens como <a href="http://tools.dynamicdrive.com/imageoptimizer/">este</a>, que é versátil quanto baste.</li>
<li>Tome por referência a largura de 600 pixels: acima disso é garantido que a imagem vai sair do espaço útil da janela de uma grande parte dos <em>browsers</em>. Eu faço as minhas imagens com 450 pixels de largura, no máximo. Preste também atenção, no caso das fotos tiradas de máquinas digitais, à resolução. Guarde a versão grande, mas para publicar na Web faça uma cópia com o máximo de 72 pixels: acima disso os monitores simplesmente não mostram, cortam os pixels do meio.</li>
<li>Com esta medida, <strong>reduzi o peso</strong> total da primeira página de um determinado blogue <strong>de uns incríveis 4 Megabytes para uns 700 Kb</strong> &#8212; ainda acima do ideal &#8212; <strong>sem que o próprio autor notasse qualquer alteração</strong> na visualização do seu blogue!</li>
</ul>
</li>
<li><strong>Indique no código HTML as dimensões da imagem</strong>.
<ul>
<li>Parece disparate, meter nos preencher os parâmetros <em>width</em> e <em>height</em> com as dimensões correctas da imagem &#8212; mas não é: esta indicação poupa tempo ao computador do leitor, cujo <em>browser</em> fica a saber que espaço deve reservar para a imagem mesmo antes dela chegar (o código da página é mais leve e chega primeiro), fazendo a apresentação correcta do texto enquanto a imagem ainda está em trânsito.</li>
<li>Além da velocidade, torna a recepção da página mais agradável, causando impressão positiva.</li>
</ul>
</li>
<li><strong>Limite os <em>widgets</em> e botões ao essencial</strong>.
<ul>
<li>Nem falo do ruído visual que provoca o excesso de <em>widgets</em> e botões que &#8220;adornam&#8221; tantos blogues respeitáveis. Limito a análise ao respectivo mau contributo para a velocidade.</li>
<li>Verifique se todos os <em>widgets</em> e botões estão funcionais; sei de casos em que o serviço já está desactivado há algum tempo&#8230;</li>
<li>Verifique se têm de facto alguma utilidade. <strong>A maior parte dos botões torna-se inútil ao fim de um certo tempo, quando surge uma nova moda, um novo &#8220;top blogs&#8221;</strong>, o último grito do <em>widget</em>&#8230;</li>
<li>Verifique, através do seu contador, se a quantidade de tráfego enviado pelo serviço é de molde a justificar a sua permanência. Se não for, e se não achar que é um botão ou <em>widget</em> particularmente prestigiante, tire-o. Só está a fazer peso, ninguém lhe liga, não serve para nada.</li>
<li>Uma boa regra para a selecção do que vai colocar (ou deixar&#8230;) na sua barra lateral é: o que tem a ganhar? Prestígio? Links? Tráfego? <strong>Meça o que dá e o que recebe. A maioria das widgets não dá nada, ou dá muito pouco </strong>para o que recebe da exposição na SUA página.</li>
</ul>
</li>
<li><strong>Diminua a quantidade de posts apresentada na primeira página</strong>.
<ul>
<li>O tempo em que percorríamos uma página inteira, por aí abaixo, já lá vai há que anos&#8230; Hoje, o visitante ou é seu leitor regular, e visita-o com frequência suficiente para já ter lido os posts da semana passada (e para saber maquinalmente onde está o arquivo&#8230;), ou é um leitor novo, a quem a primeira impressão do seu blogue é o que está acima da linha de água &#8212; e a velocidade a que este lhe surge no monitor!</li>
<li>Não se fie no mau exemplo de alguns <em>bloggers </em>históricos que mantém lençóis de um mês (!) na primeira página: o seu blogue ainda não é daquele campeonato. Use as suas armas, porque não dispõe das deles. Seja como for, mesmo para um blogger de topo é um erro uma página longa e só os anacrónicos <em>bloggers</em> as mantém.</li>
<li>Nas blogosferas mais adiantadas<strong> a tendência</strong> <strong>é para páginas de entrada pequeníssimas</strong>. Não aconselho mudanças dramáticas: ir encurtando aos poucos é mais prudente.</li>
</ul>
</li>
<li><strong>Veja-se livre de código desnecessário</strong>.
<ul>
<li>O meu último <em>template</em> carregava por defeito um Javascript com 28 Kb que nunca era processado porque eu não usava uma determinada funcionalidade da minha instalação WordPress&#8230; Isto diz tudo.</li>
<li> Verifique se todos os ficheiros carregados pelo seu <em>template</em> são realmente necessários e elimine as chamadas no código se não forem. Evitará o duplo desperdício de tempo, do lado do servidor e do lado do cliente.</li>
</ul>
</li>
<li><strong>Reduza a quantidade de pedidos HTTP</strong>.
<ul>
<li>Quantos mais elementos tem uma página, mais pedidos HTTP são enviados pelo <em>browser</em> para o servidor, aumentando o tempo de resposta deste para &#8220;construir&#8221; a página que vai servir. Há sempre imagens a mais num <em>template</em>, por exemplo.</li>
<li><strong>Limite o número de objectos e junte-os: um único ficheiro CSS contendo todos os elementos é melhor que três</strong>, ou quatro &#8212; até cinco, como tenho visto em tantos casos. O mesmo é válido para os ficheiros de <em>scripting</em> (Javascript, nomeadamente).</li>
<li>(<em>Esta é uma optimização que ainda não fiz no </em><strong>C!</strong><em> por falta de tempo, mas não tarda.</em>)</li>
</ul>
</li>
<li><strong>Diminua o tamanho dos ficheiros CSS e JS</strong>.
<ul>
<li>Contém sempre anotações do autor que podem ser retiradas sem prejuízo algum, bem pelo contrário. É cada vez mais frequente nos fabricantes de <em>plugins</em><em>templates</em> o cuidado em disponibilizarem versões leves, com menos funcionalidades, ou no mínimo documentação que permite ao autor saber que parte do código Javascript pode retirar se não usa determinada função.</li>
<li>Mantenha as cópias anotadas à parte, para as alturas em que vai trabalhar no template, e use cópias depuradas. Vai ver que <strong>consegue facilmente ganhos de 15 a 30%</strong> no tamanho desses ficheiros.</li>
</ul>
</li>
<li><strong>Limpe o código redundante dos templates</strong>.
<ul>
<li>No WordPress como nas outras plataformas, os templates são feitos para adaptação a milhares de casos diferentes. Daí os códigos como <code>&lt;?php bloginfo('name'); ?&gt;</code> e <code>&lt;?php bloginfo('rss_url'); ?&gt;</code>. O primeiro coloca naquele ponto do <em>template</em> o nome do blogue e o segundo coloca o endereço do feed RSS. Eis duas informações que não mudam muitas vezes&#8230; Pelo que ao substitui-las pelo nome e pelo endereço estamos a poupar chamadas à base de dados. São milissegundos, certo, mas repetem-se de cada vez que uma página é mostrada &#8212; num dia de muito tráfego fará alguma diferença ao seu servidor.</li>
</ul>
</li>
</ol>
<p>Há técnicas mais extremas de limpeza de <em>templates</em>. Aprendi algumas delas por causa dos problemas de crescimento tanto do weblog.com.pt como agora da TubarãoEsquilo. Com a última, reduzi num quarto de segundo o tempo de carregamento de cada uma das páginas do <a href="http://arrastao.org">Arrastão</a>! Falarei disso num próximo artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://pauloquerido.pt/blogosfera/oito-medidas-que-vao-tornar-o-seu-blogue-mais-rapido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter: dos debates entre Obama e Clinton ao falso Sócrates</title>
		<link>http://pauloquerido.pt/media/twitter-dos-debates-entre-obama-e-clinton-ao-falso-socrates/</link>
		<comments>http://pauloquerido.pt/media/twitter-dos-debates-entre-obama-e-clinton-ao-falso-socrates/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 09:30:58 +0000</pubDate>
		<dc:creator>Paulo Querido</dc:creator>
				<category><![CDATA[media]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://pauloquerido.pt/media/twitter-dos-debates-entre-obama-e-clinton-ao-falso-socrates/</guid>
		<description><![CDATA[O Twitter é o serviço web mais revolucionário e marcante depois dos wikis e dos blogues. Até porque não é apenas um serviço para a web: é ubíquo fora da web seja em software específico que corre no nosso desktop, seja no Instant Messaging (Google Talk, MSN só em regime experimental). E também fora da [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pauloquerido.pt/ficheiros/twitter.thumbnail.jpg" alt="twitter.jpg" align="left" /><span class="caps">O</span> Twitter é o serviço web mais revolucionário e marcante depois dos wikis e dos blogues. Até porque não é apenas um serviço para a web: é ubíquo fora da web seja em <em>software</em> específico que corre no nosso <em>desktop</em>, seja no <em>Instant Messaging</em> (Google Talk, MSN só em regime experimental). E também fora da Internet: recebo e envio <em>twitters</em> por SMS, por exemplo, ou sigo os meus contactos através de aplicativos para o telemóvel ou PDA.<br />
A fazer dois anos este mês, o Twitter continua em grande medida por explorar. <span id="more-96"></span>Tem aplicações criativas, como servir de sistema de alertas: há aplicativos externos que avisam com um SMS instantâneo se um um determinado servidor for abaixo. Tem uma forma de interacção por programas externos (API) bem desenhada e robusta &#8212; e muito usada.<br />
Nos Estados Unidos o Twitter é uma febre &#8212; os debates televisivos dos candidatos presidenciais geram quantidades colossais de mensagens, com centenas de milhar em todo o mundo a comentar entre si, apaixonadamente e na forma peculiar do Twitter: cada mensagem tem um limite de 140 caracteres.<br />
O cenário é um pouco diferente na Europa, onde se nota algum atraso na adopção do Twitter. Mas diferenciado por países: os britânicos e os franceses &#8220;twitterizam&#8221; mais que os portugueses, que continuam a resistir galhardamente à inovação e renovação do espaço comunicacional. Parece que quem se atreveu a criar um blogue esgotou nesse acto a sua capacidade para o novo. Mas isso são outros quinhentos.<br />
Carlos Duarte, licenciado em jornalismo, identifica no seu blogue <a href="http://carlosduarte.org/2008/03/twitters/">seis classes de twitters</a>:</p>
<ol>
<li>O curioso</li>
<li>O social</li>
<li>O reservado</li>
<li>O introvertido</li>
<li>O oportunista (não negativo, sublinha)</li>
<li>O arrivista</li>
</ol>
<p>Auto-classifico-me na classe dos oportunistas: uso o Twitter sobretudo como canal alternativo de distribuição do que escrevo na Internet (<a href="http://twitter.com/PauloQuerido">PauloQuerido</a>) e dos fluxos noticiosos do <a href="http://twitter.com/ExpressoOnline">Expresso</a>, da <a href="http://twitter.com/SICtv">SIC</a> e da <a href="http://twitter.com/TubaraoEsquilo">TubarãoEsquilo</a>, e muito pouco como <em>microblogging</em>, interagindo raramente através do serviço.<br />
Uma curiosidade: também o Twitter atrai os <em>fakers</em> &#8212; indivíduos que usam (ou abusam) de nomes muito populares, criando contas de apelo irresistível como a de <a href="http://twitter.com/JoseSocrates">José Sócrates</a>. Mas ao contrário da bitola americana, onde só triunfam <em>fakers</em> com piada e/ou inteligência, este <em>faker</em> português é tosco e não tem arcaboiço para aguentar a farsa. É pena &#8212; alguns dos melhores momentos da web social têm sido proporcionados pelo brilhantismo irreverente de <em>fakers</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pauloquerido.pt/media/twitter-dos-debates-entre-obama-e-clinton-ao-falso-socrates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como redireccionar o feed para o FeedBurner?</title>
		<link>http://pauloquerido.pt/tecnologia/como-redireccionar-o-feed-para-o-feedburner/</link>
		<comments>http://pauloquerido.pt/tecnologia/como-redireccionar-o-feed-para-o-feedburner/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 12:55:46 +0000</pubDate>
		<dc:creator>Daniel Marques</dc:creator>
				<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[feedburner]]></category>
		<category><![CDATA[guest-post]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://pauloquerido.pt/tecnologia/como-redireccionar-o-feed-para-o-feedburner/</guid>
		<description><![CDATA[Como redireccionar o feed para o FeedBurner? &#8212; é um guest post de Daniel Marques Tudo vai bem quando corre bem, até que o inesperado acontece. Desta vez a minha dor de cabeça envolveu o plugin recomendado pelo FeedBurner: o FeedSmith. O FeedSmith limita-se a detectar e redireccionar o feed do nosso blog, para o [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><strong>Como redireccionar o feed para o FeedBurner? &#8212; é um guest post de Daniel Marques</strong></p>
<p><span class="caps">T</span>udo vai bem quando corre bem, até que o inesperado acontece. Desta vez a minha dor de cabeça envolveu o <em>plugin</em> recomendado pelo FeedBurner: o FeedSmith. O FeedSmith limita-se a detectar e redireccionar o feed do nosso blog, para o nosso endereço feed no FeedBurner.<br />
Eis a mensagem de erro que surgiu:<br />
<code>Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used after 'URL-Rewriter' in /home/danielma/public_html/wp-includes/functions.php on line 408</code></p>
<p>O erro surgia no topo do blog e no próprio feed impedindo que os meus artigos chegassem aos assinantes.</p>
<p><strong>A solução</strong><br />
A solução foi mais simples de encontrar do que o que eu julgava. Bastou desactivar o <em>plugin</em> e inserir umas linhas de código no ficheiro .htaccess:</p>
<p><code><ifmodule><br />
RewriteEngine on<br />
RewriteCond %{HTTP_USER_AGENT} !FeedBurner<br />
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/NomeDoMeuFeed [R,L]<br />
</ifmodule></code></p>
<p>Este código deverá ser copiado para a zona antes da secção de código adicionada pelo WordPress<br />
e &#8220;NomeDoMeuFeed&#8221; deverá ser substituído pela designação do vosso <em>feed</em> no FeedBurner.</p>
<p>( <a href="http://www.danielmarques.net">Daniel Marques</a> tem um blogue pessoal e é um dos mais recentes autores TubarãoEsquilo com o <a href="http://controloremoto.net">Controlo remoto</a> &#8212; um blogue de marca sobre televisão digital. )</p>
]]></content:encoded>
			<wfw:commentRss>http://pauloquerido.pt/tecnologia/como-redireccionar-o-feed-para-o-feedburner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links indesejáveis e como retaliar</title>
		<link>http://pauloquerido.pt/tecnologia/links-indesejaveis-e-como-retaliar/</link>
		<comments>http://pauloquerido.pt/tecnologia/links-indesejaveis-e-como-retaliar/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 08:58:00 +0000</pubDate>
		<dc:creator>Paulo Querido</dc:creator>
				<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[cibercrime]]></category>
		<category><![CDATA[ciberdefesa]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[cyberbullying]]></category>
		<category><![CDATA[hipertexto]]></category>

		<guid isPermaLink="false">http://pauloquerido.pt/tecnologia/links-indesejaveis-e-como-retaliar/</guid>
		<description><![CDATA[Por indesejáveis que sejam, e desagradáveis os seus autores, não podemos evitar que façam links para os nossos posts e blogues. Mas há formas de destruir grande parte do efeito de um link, frustrar as intenções de quem os faz e evitar a maior parte do tráfego induzido por pessoas cujas &#8220;recomendações&#8221; dispensamos. Não se [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pauloquerido.pt/ficheiros/phibernet.thumbnail.jpg" alt="phibernet.jpg" align="left" />Por indesejáveis que sejam, e desagradáveis os seus autores, não podemos evitar que façam <em>links</em> para os nossos <em>posts</em> e blogues. Mas há formas de destruir grande parte do efeito de um <em>link</em>, frustrar as intenções de quem os faz e evitar a maior parte do tráfego induzido por pessoas cujas &#8220;recomendações&#8221; dispensamos.<br />
Não se trata de fórmulas mágicas. A arquitectura da Internet &#8212; uma rede de redes &#8212; e a filosofia do hipertexto blindam por completo qualquer tentativa de manter quintas isoladas. Nem mesmo os mestres chineses conseguem bloquear por completo o acesso a servidores: na Internet há sempre formas alternativas de chegar a um dado ponto a partir de outro, não importa o que se faça para o evitar. Só há uma forma comprovada de o fazer: desligar a corrente.<br />
Mas isto não impede que alguns filtros e técnicas tenham graus de eficácia aceitáveis. Sobretudo tendo em conta a relação custo (uns minutos gastos) / benefício (a maior parte das pessoas que viriam dali, já não vêm; o <em>link</em> é inutilizado).<br />
Há mais de um ano que bloqueio o tráfego oriundo de três blogues (e ao fazer a pesquisa de rotina para este <em>post</em> tive, até, o grato prazer de verificar que um deles tirou o <em>link</em> para o Certamente!, o que considero uma vitória pessoal.)<br />
E como faço tal coisa? Uso algumas linhas de código muito fáceis de empregar, tão fáceis que qualquer pessoa pode repetir no seu blogue ou página, como comprovei esta semana ao ceder o código a um amigo que por e-mail me perguntou: <em>como é que eu consigo despistar o link que o meu troll de estimação fez no blog dele para o meu?</em><span id="more-67"></span><br />
O mais curioso é que o e-mail chegou precisamente quando eu estava a iniciar este <em>post</em>, que já me andava na cabeça há meses!<br />
Respondi-lhe e em menos de dez minutos resolvemos o assunto &#8212; infelizmente, não vemos as caras dos desarmados no momento em que percebem que o seu <em>link</em> deixou de funcionar.<br />
Ou por outra: passou a funcionar de outra maneira.<br />
No meu caso, simplesmente redirecciono os leitores para o <em>site</em> de onde vieram. Não pretendo publicitar que blogues excomunguei, pelo que farei a demonstração usando uma página que eu próprio criei. Ora<a href="http://lnkths.com/certamente-teste/"> vá aqui</a>, leia, experimente &#8212; e regresse premindo o botão de voltar do seu browser.<br />
Como viu, o link <em>aparentemente</em> não funcionou.<br />
O que se passou na realidade, mas a uma velocidade imperceptível a olho nú, é que durante milisegundos o seu computador &#8220;visitou&#8221; o meu servidor, mas este analisou a sua proveniência e com base nela recusou mostrar-lhe o <em>site</em>, devolvendo-o à página de onde tinha vindo.<br />
Repetindo o que disse acima, é claro que isto não evita que a pessoa visite mesmo o nosso endereço. Basta copiar o endereço e introduzi-lo manualmente, em vez de clicar. Mas a maioria das pessoas não o fará. E o sinal de indesejado fica claro num ambiente onde em regra os sinais são pouco elucidativos &#8212; a menos que sejam expressos directamente.<br />
Nuances, também vivemos delas.</p>
<p>O melhor disto é que a explicação é mais complicada do que o código. Vamos lá.</p>
<p><img src="http://pauloquerido.pt/ficheiros/ciberdefesa1.jpg" alt="ciberdefesa1.jpg" align="right" /><strong>Como proceder</strong><br />
(<em>Esta técnica foi produzida em código PHP mas é traduzível para outras linguagens. O exemplo é de aplicação imediata, por copia+cola, a um blogue em WordPress</em>)</p>
<p>Localize o ficheiro index.php na raiz do seu blogue. No WordPress é simples: menu Gerir -&gt; Ficheiros e clique no Modelo do Índice Principal (ver figura).<br />
O conteúdo actual do ficheiro deverá ser este ou muito similar:<br />
<code>&lt;?php<br />
/* Short and sweet */<br />
define('WP_USE_THEMES', true);<br />
require('./wp-blog-header.php');<br />
?&gt;<br />
</code></p>
<p>O que vamos lá colocar é isto (a <strong>negrito</strong> os acrescentos e a <span style="color: red">vermelho</span> o que deverá mudar):<br />
<code>&lt;?php<br />
<strong>$idepassear = 0;<br />
if (preg_match("/<span style="color: red">lnksts</span>/", $_SERVER['HTTP_REFERER'])) {<br />
$idepassear = 1;<br />
}<br />
if ($idepassear == 1) {<br />
header("HTTP/1.1 307 Temporary Redirect");<br />
header("Location: <span style="color: red">http://lnkths.com/certamente-teste</span>");<br />
exit;<br />
}</strong><br />
/* Short and sweet */<br />
define('WP_USE_THEMES', true);<br />
require('./wp-blog-header.php');<br />
?&gt;<br />
</code></p>
<p><strong>A explicação do código</strong><br />
$idepassear é uma variável. O nome dela&#8230; foi suavizado para publicação e trata-se de homenagem a um hacker que me ensinou umas artimanhas e que tem um gosto particular pelo calão. Podia chamar-se $variavelum. É inicializada a zero (era dispensável; mas incluí-a por uma questão de clareza &#8212; e não só; num post lá mais para a frente voltaremos a esta variável para mais acções de ciberdefesa).<br />
A linha seguinte verifica se o cliente vem de alguma página através de um <em>link</em> e se sim, verifica se o sítio de origem contém a expressão <strong>lnkths</strong>. Se contiver, a variável $idepassear passa a ter o valor 1. Com essa expressão, qualquer <em>link</em> produzido em lnkths.com será dinamitado. (Cuidado com a expressão a escolher para colocar aqui; se for demasiado abrangente, pode bloquear mais endereços do que gostaria. Imagine que lá metia &#8220;blogspot&#8221;&#8230;)<br />
A seguir, o coração do sistema (como eu gosto desta expressão): se o conteúdo de $idepassear for igual a 1, o cabeçalho (header) que o index.php envia para o <em>browser</em> contém a nova localização para onde o cliente deve ir. Como já disse, eu devolvo-os à procedência mas podemos aí colocar qualquer endereço! Como Location: http://google.com/search?q=troll <img src='http://pauloquerido.pt/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
A parte do código 307 destina-se a eventuais motores de pesquisa que venham por ali: indica um redireccionamento temporário, pelo que o nosso domínio não será afectado (sem a indicação, não é claro se poderia perder algum &#8220;sumo&#8221; em termos de Google, que desconfia dos redireccionamentos, sobretudo dos condicionais. Não considerei no âmbito deste <em>post</em> qual o melhor código de redireccionamento &#8212; que, estou certo, alguns leitores gostarão de debater, e eu também.)<br />
Se a variável $idepassear contiver o valor 0, o index.php salta para a instrução seguinte e desenvolve-se o pedido de página normal.</p>
<p><strong>É importante</strong><br />
1. fazer primeiro uma cópia de segurança do conteúdo do index.php<br />
2. copiar o código tal e qual, basta uma aspa a menos ou a mais, ou a omissão de um ponto e vírgula, para o index.php não funcionar! (pode sempre repor o conteúdo salvaguardado e repetir as instruções com mais cuidado)<br />
3. colocar o bloco de alterações ANTES do resto do conteúdo do index.php.</p>
<p><strong>Nota final</strong><br />
No meu caso, o uso destas simples linhas é uma acção ciberdefensiva activa &#8212; sobretudo sanitária, devo dizer, tendo em conta os &#8220;blogues&#8221; que bloqueei. Mas no caso do amigo que já beneficiou do código &#8212; que aplicou sem problema algum, embora eu suspeite que foi a primeira vez que mexeu em PHP &#8212; trata-se de mais do que isso. Sendo vítima de <em>cyberbullying</em>, evitar os <em>links</em> do seu <em>troll</em>, como carinhosamente o trata, tornou-se também num conforto moral.<br />
Saber que podemos fazer algo, por pouco que seja, que afecte as intenções do perseguidor, é por um lado um sinal interior de resistência e por outro representa uma vitória num jogo onde nos avisaram que só teríamos derrotas.</p>
<p><strong>Adendas</strong><br />
1. Este código é fornecido na versão <em>it works for me</em> &#8212; isto é, funciona comigo, é  uma prova de conceito despretenciosa e não foi feito a pensar em uso por profissionais, que estão convidados desde já a apresentar versões mais robustas e decentes, que possam filtrar também por agente (browser), por exemplo.<br />
2. Não sou versado em Javascript, pelo que atrever-me a escrever a versão nessa linguagem seria consumidora de tempo e o mais certo era não ficar obra decente às primeiras. Mas certamente algum leitor meu é, pelo que fica o repto para a versão Javascript &#8212; que tem a vantagem de alargar a utilização a muito mais plataformas, nomeadamente às plataformas de <em>blogging</em> comerciais como o Blogspot, ou o WordPress.com.<br />
3. A mesma técnica pode ser usada, com eficácia forte e feia, para minorar os efeitos de ataques pontuais, ou súbitos, de spam. Foi, aliás, por aí que começou a vida do meu index.php reforçado com a variável $idepassear. Só mais tarde vi este seu potencial escondido e o modifiquei em conformidade (e o spam combate-se melhor a um nível mais perto da máquina.)</p>
]]></content:encoded>
			<wfw:commentRss>http://pauloquerido.pt/tecnologia/links-indesejaveis-e-como-retaliar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
