Traga mais Readability para o seu blog
Meu amigo Rodrigo Ghedin conseguiu, sem querer, me deixar preocupado com a aparência: Não a minha, é verdade — já que neste caso nem as versões mais avançadas e recentes de Photoshop dariam jeito —, mas com a do meu blog. Tudo isso porquê, há alguns dias atrás, ele falou, em mais um de seus excelentes posts, sobre o conceito de readability.
Para quem não sabe o que readability significa, eu vou simplificar: Trata-se, basicamente, de tornar o processo de leitura mais fácil.
Ao encontrarem condições que lhes permitam ler mais facilmente, os seres humanos têm melhoradas suas capacidades de compreensão, retenção e velocidade de leitura. E para quem estiver se perguntando o que isso pode ter — ainda que de longe — a ver com os blogs que lemos no dia-a-adia, eu explico, mais uma vez. Só que desta vez vou usar um trecho do post onde o Ghedin menciona leituras realizadas na web:
(…) mesmo nas leituras mais rápidas, essenciais ao trabalho que desempenho e muito útil para ler muita coisa boa que aparece em blogs, sites e outros locais, às vezes me sinto incomodado. Não pelo monitor, mas sim pelo layout. Tem gente que publica um texto com fonte branca em fundo preto! A mim, o efeito é o mesmo que ficar meia hora olhando diretamente para uma lâmpada acesa. Meus olhos sentem essa agressão.
E esse problema de contraste é apenas um dos vários que existem. Tipografia mal escolhida, espaçamento inadequado, excesso de anúncios inseridos dentro do texto. Eu costumava pregar a máxima de que não importa aonde você escreva, o que importa, mesmo, é a mensagem. Bobagem! Já deixei de ler muita coisa boa porque a apresentação não colaborava.
Notem que um site mal cuidado, com qualquer um dos deslizes mencionados acima, pode estar prejudicando a facilidade de leitura de seus visitantes. Na prática, isso pode, inclusive, acabar se traduzindo em falta de fidelização dos leitores, ou seja: Eles podem nunca mais querer voltar ao seu site, pois se lembrarão, por exemplo, que precisaram de óculos escuros para proteger os olhos na última vez em que ali estiveram.
Felizmente, visando auxiliar a leitura de informações por milhões de internautas, um pessoal muito bacana desenvolveu um projeto — também, obviamente, chamado de Readability —, onde se encontra disponível um bookmarklet configurável para tornar qualquer página mais agradável de ler. O Rodrigo, muito oportunamente, ensina como fazer a configuração, passo-a-passo.
Com a existência de plugins prontamente disponíveis para a implantação de readability no Firefox e Google Chrome, o lado dos internautas está ainda mais garantido.
Mas acontece que eu fiquei pensando em como garantir que qualquer um que me visitasse pudesse ter acesso aos recursos de readability sem necessariamente contar com bookmarklets, extensões ou plugins. Esse conceito é tão interessante que deveria ficar ao lado de botões como os de compartilhamento de links no del.icio.us, ou de retweet, que hoje são amplamente vistos nos blogs por aí. E felizmente, não é nada complicado deixar o seu blog readability-ready.
O primeiro passo para isso é dar uma olhada no código fonte do bookmarklet que o Rodrigo ensina a configurar. No Firefox, basta clicar o botão direito sobre ele e selecionar a opção Propriedades. Você logo se deparará com algo assim no campo endereço:
javascript:(function(){readConvertLinksToFootnotes=false;readStyle='style-novel';readSize='size-medium';readMargin='margin-medium';_readability_script=document.createElement('script');_readability_script.type='text/javascript';_readability_script.src='http://lab.arc90.com/experiments/readability/js/readability.js?x='+(Math.random());document.documentElement.appendChild(_readability_script);_readability_css=document.createElement('link');_readability_css.rel='stylesheet';_readability_css.href='http://lab.arc90.com/experiments/readability/css/readability.css';_readability_css.type='text/css';_readability_css.media='all';document.documentElement.appendChild(_readability_css);_readability_print_css=document.createElement('link');_readability_print_css.rel='stylesheet';_readability_print_css.href='http://lab.arc90.com/experiments/readability/css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';document.getElementsByTagName('head')[0].appendChild(_readability_print_css);})();
Assustador, não é mesmo?
No entanto, não é necessário se preocupar com o que o código acima faz — que, na verdade, é somente aplicar readability à página que você está lendo. O importante é saber que é este o código que você precisará para permitir que qualquer um que visite seu site aplique readability nele. Na verdade, a coisa é tão simples que você precisará apenas criar um link em qualquer lugar da página onde escreveu um texto para que a pessoa possa clicar sobre ele. Vejamos a seguir como isso funciona no WordPress.
Acessando seu editor de temas, você precisará criar um link com o código acima no arquivo single.php — uma vez que o bookmarklet original é idealizado para transformar páginas com artigos individuais, e não sites inteiros, embora isso também possa ser feito. No meu caso, isso se traduziu da seguinte maneira:
<span class="readability">
<a title="Torne este texto mais agradável de ler!" href="javascript:(function(){readConvertLinksToFootnotes=false;readStyle='style-novel';readSize='size-medium';readMargin='margin-medium'; _readability_script=document.createElement('script');_readability_script.type='text/javascript';_readability_script.src='http://lab.arc90.com/experiments/readability/js/readability.js?x='+(Math.random());document.documentElement.appendChild(_readability_script)_readability_css=document.createElement('link');_readability_css.rel='stylesheet'; _readability_css.href='http://lab.arc90.com/experiments/readability/css/readability.css';_readability_css.type='text/css'; _readability_css.media='all';document.documentElement.appendChild(_readability_css); _readability_print_css=document.createElement('link'); _readability_print_css.rel='stylesheet'; _readability_print_css.href='http://lab.arc90.com/experiments/readability/css/readability-print.css'; _readability_print_css.media='print'; _readability_print_css.type='text/css'; document.getElementsByTagName('head')[0].appendChild(_readability_print_css);})();">Readability</a>
</span>
O único retoque que eu fiz foi acrescentar uma classe CSS para deixar a coisa um pouco mais bonita de se ver. Não sabia exatamente qual ícone utilizar, então optei por capturar o favicon do próprio projeto Readability:
.readability{
display:line;
background: transparent url(images/readability_16.png) no-repeat;
margin-left: 5px;
padding-left:26px;
padding-bottom:5px;
min-width:8px;
}
O resultado já pode ser visto nas páginas individuais dos artigos aqui do blog. Espero, sinceramente, que desta maneira, eu esteja contribuindo para que as pessoas encontrem por aqui uma experiência de leitura um pouco mais agradável.
PS: Depois, com mais calma, pensarei em um jeito de tornar essa coisa um plugin para o WordPress.
Protegendo melhor o meu WordPress
Depois de ter sido recentemente atacado por uma script injection que surgiu do nada, fiquei mais cauteloso no que diz respeito ao blog, quando se trata de segurança.
No começo deste mês acabei encontrando um artigo da Smashing Magazine, com 10 dicas para reforçar a proteção de sites que, como o meu, utilizam o WordPress. Embora seja verdade que reforçar a segurança de um site por conta própria requeira um conhecimento mínimo de Apache — e não se sentir intimidado com alterações no arquivo .htaccess —, não há nada realmente muito cabeludo a se fazer.
Assim sendo, quero compartilhar com vocês duas das alterações que fiz:
Primeira coisa: Proteger o blog de injeções de script
Os ataques de injeção de scripts acontecem quando um hacker introduz algumas linhas de código malicioso em um site através de um de seus formulários — o de comentários, por exemplo — e então envia tais dados através deste formulário. Isso é feito, geralmente, para que se possa enganar os sistemas em uso nos sites, de maneira que eles pensem que se trata de conteúdo enviado por um usuário válido, e assim acabem permitindo, sem querer, que dados sejam acessados, editados excluídos, ou que scripts mal intencionados sejam acessados e instalem vírus nas máquinas dos internautas desavisados.
Uma das técnicas básicas para um script injection é que uma máquina cliente submeta informações que contem tags, como a tag <script>. Isso nos leva às diretivas abaixo, sugerida no artigo que li:
Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L]
Ao serem adicionadas ao arquivo .htaccess, tais diretivas fazem com que qualquer requisição de acesso à uma página no blog seja verificada. Caso ela contenha referências à uma tag <script> ou, mais ainda, tenha tentado modificar o valor das variáveis GLOBALS ou _REQUEST do PHP, a requisição será bloqueada com um erro 403 (“Forbidden“) do Apache, ou seja, quem quer que esteja tentando realizar o acesso — neste caso, provavelmente alguém muito mal intencionado — será impedido de fazê-lo. Você pode até criar um documento personalizado para recepcionar alguém que tenha recebido o erro em questão:
ErrorDocument 403 /forbidden.php
Uma última palavra sobre as diretivas acima, é que estas podem ser facilmente modificadas para que incluam também as tags <object>, <applet> e <embed>, também utilizadas em script injections. Desta maneira, reforça-se ainda mais a segurança.
Segunda coisa: Proteger o arquivo wp-config.php
Quando li o artigo da Smashing Magazine, vi que eles recomendam a proteção do arquivo wp-config.php — onde residem todas as configurações principais do WordPress, inclusive nomes de usuário e senha do banco de dados, que permitem a qualquer um com más intenções acesse todo o conteúdo do seu blog e faça com ele o que bem entender —, o que, afinal de contas, é uma excelente ideia.
O único problema é que eles, mais uma vez, se valem de alterações no arquivo .htaccess, da seguinte maneira:
<files wp-config.php> order allow,deny deny from all </files>
Acredito, no entanto, que uma solução muito mais efetiva para impedir o acesso ao conteúdo do arquivo seja movê-lo para um lugar inacessível publicamente. Na prática, normalmente, isso significa movê-lo para antes da pasta public_html — onde fica tudo o que é visível para o mundo lá fora — em sua conta de usuário. Felizmente, desde a versão 2.6 do WordPress, isso é possível. Dessa maneira, basta que você utilize um programa de FTP de sua confiança e mova o arquivo em questão um nível acima.
De qualquer maneira, a dica dada pela Smashing Magazine ainda é válida se adaptarmos um pouco as coisas: Por exemplo, podemos aproveitar para proteger não o arquivo wp-config.php, mas sim o próprio arquivo .htaccess, da seguinte maneira:
<files .htaccess> order allow,deny deny from all </files>
Conclusão
É óbvio que a proteção de um site contra ataques envolve uma série de outros passos e medidas de segurança, e muito mais leitura e estudo. Ainda assim, minha decisão de dividir estas duas simples alterações se deu porquê acredito serem realmente de grande valia para alguém que está pensando em proteger melhor seu conteúdo, e espero que, desta maneira, esteja prestando um serviço a quem se encontrar em uma situação difícil.
Para maiores informações, recomendo também a leitura do excelente artigo Hardening WordPress, disponível no próprio Codex da ferramenta.
Meu blog foi atacado pelo zettapetta.js
Depois de estar ausente do site por — praticamente — três semanas seguidas, descobri hoje que meu site foi vítima de um ataque em massa a blogs que são movidos a WordPress. A descoberta não ocorreu instantaneamente: Tudo começou porquê, ao logar no dashboard do WordPress, percebi que a aparência das coisas estava um tanto quanto diferente, como se houvessem apagado todos os arquivos css (da área administrativa) do site. Intrigado por não entender a origem do problema — afinal, eu não havia feito grandes atualizações ou instalado novos plugins recentemente —, já havia me rendido à solução desesperada padrão, reinstalar a última versão da ferramenta.
Durante a reinstalação, graças a um vício que possuo — ficar apertando F5 freneticamente para ver todas as mensagens (temporárias) de erro que aparecem enquanto os arquivos estão sendo recolocados no lugar —, percebi que meu site estava se conectando ao domínio zettapetta.com, e logo imaginei que provavelmente havia mais caroços neste angu do que eu realmente gostaria. Um pouco de investigação me levou a descobrir que um script injection prejudicou vários sites que usam o WordPress a partir dos dias 6 e 7 de maio de 2010.
Dentre os possíveis comportamentos inadequados encontrados nos sites invadidos, identifiquei, com a ajuda de um programa de FTP, que próximo ao cabeçalho de todos os arquivos .php da minha instalação de WordPress havia um código malicioso que começava da seguinte maneira:
<?php /**/ eval(base64_decode(“aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9z.
Este era um indicador claro de que eu havia sido vítima do malware MW:MROBH:1, que se infiltra em sites como o meu e tenta instalar, nas máquinas de usuários desavisados, uma série de códigos maliciosos. Percebi que eu deveria fazer alguma coisa imediatamente.
Quando já estava me conformando com o fato de que perderia todo o conteúdo deste blog — pois as instruções iniciais de recuperação citavam medidas realmente drásticas, como excluir todos os arquivos do site —, acabei encontrando uma solução de clean up muito simples, graças ao site de segurança digital sucuri.net. Tal solução pode ser aplicada com o uso de SSH ou baixando um arquivo texto de lá — neste último caso, é necessário mudar a extensão do arquivo para .php, fazer o upload para o servidor do seu blog e executá-lo a partir de qualquer navegador. Em alguns instantes, uma mensagem similar a esta será exibida:
Tirei duas grandes lições deste episódio. A primeira, que nem sempre rodar a última versão disponível de um software te garante imunidade a algumas ameaças. A segunda, que ficar muito tempo sem visitar o próprio blog pode fazer com que estejamos executando ameaças como estas sem nem mesmo sabermos disso. Neste último caso, peço desculpas a quem quer que tenha visitado meu blog neste período de infecção, e seriamente recomendo que passem um anti-vírus atualizado em seus computadores.
Agora, voltaremos à programação normal.
Adieu, Tweetbacks: Olá, Chat Catcher!
Quem me acompanha mais de perto sabe que eu venho tentando, através de plugins para o WordPress, integrar tweetbacks ao blog. Minha insistência se baseia no fato de que, caso eu venha a escrever algo interessante ou minimamente útil, essa informação será comentada por uma ou mais pessoas através do Twitter, e eu gostaria de saber a respeito. Neste aspecto, ocorre que a integração através do plugin Tweetback realmente funciona para a maioria dos serviços de URL shortening, mas falha gravemente quando alguém faz uso do migre.me, site que é cada dia mais popular entre os usuários de microblogging brasileiros.
Tal mau funcionamento recentemente me levou há alguns dias a pedir ajuda não apenas ao desenvolvedor do plugin, mas também ao desenvolvedor do serviço brasileiro. Depois de esperar por um tempo razoável sem que houvesse qualquer resposta — fato que eu honestamente compreendo perfeitamente, pois imagino que ambos estejam tão ocupados quanto eu, com seus afazeres profissionais —, resolvi voltar à batalha, buscando qualquer alternativa que me fizesse obter um maior grau de êxito com minha vontade. Foi quando esbarrei sem querer com um artigo de Ari Herzog, especialista em mídias sociais que contribui para o site americano Mashable, onde ele descreve a forma que ele próprio utiliza para incluir citações a seus artigos em seu blog. Trata-se de um serviço chamado Chat Catcher, criado pelo programador norte-americano Shannon Whitley e introduzido no começo deste ano em um artigo de seu blog pessoal.
O título do artigo de Ari Herzog realmente diz tudo: O Chat Catcher é mesmo mais inclusivo do que os tweetbacks, uma vez que inclui em suas buscas não apenas as citações realizadas através do Twitter, mas também aquelas que estiverem dando sopa em serviços como o FriendFeed e o Identi.ca. Basta que um artigo do seu blog apareça em um destes serviços e pronto: Uma referência a ele se tornará um trackback — ou um comentário comum, se você assim preferir, postado de volta no blog original. Entre as vantagens do Chat Catcher está o fato de que ele funciona com qualquer plataforma de blog que suporte trackbacks, e, mesmo quando isso não é possível, são oferecidas alternativas de integração scriptless. Há também um plugin para WordPress, que eu já instalei e testei aqui no blog.
Uma vez realizada a instalação, o procedimento é realmente muito simples: Na verdade, a única coisa realmente necessária é ir até as opções da página do plugin e clicar o botão Register this blog. Opcionalmente você pode listar usuários que deseja excluir das pesquisas — como o seu próprio usuário do Twitter, ou algum engraçadinho que esteja lhe mandando spam — e escolher se deseja tornar cada citação a um artigo seu um trackback ou comentário comum. Uma opção que eu não poderia deixar de mencionar é a possibilidade de moderar as citações antes que apareçam no corpo do blog.
Para concluir, é importante dizer que minha decisão final por adotar o Chat Catcher e abandonar o plugin anterior se baseia no fato de que o serviço cumpre o que promete: Lidar com qualquer serviço de URL shortening, resgatando citações custe o que custar. Neste aspecto, como ilustra a figura que se encontra neste artigo, até mesmo uma citação que eu mesmo fiz através do migre.me foi competentemente capturada. E isso, meus amigos, finalmente põe fim à esta novela.
Tentando fazer Tweetbacks e migre.me se darem bem
Até hoje eu não podia chegar a dizer que possuo um compactador de URLs favorito. De qualquer maneira, reconheço que este tipo de serviço é extremamente necessário nos tempos atuais, principalmente para qualquer um que se encontre às voltas com a arte do microblogging, sobretudo o Twitter.
Tenho acompanhado a crescente utilização, pelos blogueiros brasileiros, de um compactador de URL 100% nacional. Trata-se do migre.me, que não apenas reduz os endereços para que caibam junto às mensagens de 140 caracteres típicas dos serviços de microblogging, mas também atua como uma espécie de Digg brasileiro, computando URLs, vídeos e fotos populares no Twitter, o que eu acho simplesmente genial.
No entanto, é justamente o migre.me que vem me tirando o sono há alguns dias, tudo porquê, usuário do plugin Tweetback para WordPress como me declarei recentemente, estive às voltas com tentativas de ajustar o código PHP do autor para fazer com que eventuais citações a meus artigos através do serviço brasileiro também aparecessem por aqui, entre os últimos comentários.
Minha batalha começou quando, recentemente, percebi que o migre.me já possui uma API. É verdade que dá um pouco mais de trabalho mexer com ela pra obter as URLs compactadas, já que é preciso ler um arquivo XML para que a mágica aconteça, mas nada de outro mundo.
No arquivo principal do plugin para WordPress que eu estou usando para exibir os Tweetbacks aqui no blog — tweetback.php — há uma função chamada fh_tweetback_getshorturl, que é, como o nome diz, responsável por obter as URLs compactadas de serviços como o tinyurl, bit.ly e outros. Foi lá onde eu acrescentei algumas coisas por conta própria para fazer com que também as URLs compactadas pelo migre.me fossem levadas em conta na hora de verificar se houve citações do Twitter por aqui.
A função em si ficou assim — notem que todos os comentários em inglês do autor do plugin foram mantidos… eu só acrescentei mesmo a parte do migre.me:
function fh_tweetback_getshorturl($permalink,$provider='tinyurl.com') { $permalink = urlencode($permalink); //http://blog.cli.gs/news/analysis-of-linking-patterns-on-twitter-cligs-scores-well switch($provider) { case 'tinyurl.com': return fh_tweetback_curl('http://tinyurl.com/api-create.php?url='.$permalink); case 'is.gd': return fh_tweetback_curl('http://is.gd/api.php?longurl='.$permalink); case 'bit.ly': return fh_tweetback_curl('http://bit.ly/api?url='.$permalink); case 'twiturl.de': return fh_tweetback_curl('http://api.twiturl.de/friends.php?output=txt&new_url='.$permalink); case 'migre.me': $xml = simplexml_load_file('http://migre.me/api.xml?url='.$permalink); return (string)$xml->migre; /* blearg, I really dont feel like all that signupapikeystuffpostcomplicated, what the hell. * Maybe I'll have more motivation later on to register or do post mechanism, for now on * its just like that. tinyurl ftw! :) * (and yes, I understand why registration and keys can make sense. however, I am still too lazy for that.) case 'twurl.nl': return fh_tweetback_curl('http://is.gd/api.php?longurl='.$permalink); case 'snipurl.com': return fh_tweetback_curl('http://is.gd/api.php?longurl='.$permalink); case 'snurl.com': return fh_tweetback_curl('http://is.gd/api.php?longurl='.$permalink);*/ default: return false; } return false; }
Pois bem: Devo dizer que, antes de partir para a alteração do código do plugin, fiz um teste em arquivo PHP separado para verificar se a obtenção de URLs aqui do blog compactadas pelo migre.me estava funcional, inclusive levando em conta que elas devem ser tratadas pela função PHP urlencode.
Os testes funcionaram perfeitamente. Uma maravilha, mesmo. No entanto, depois de começar a postar uma série de testes a partir do TweetDeck, percebi que os tweetbacks ora aparecem, ora não aparecem no blog. E, sinceramente, estou numa dúvida violenta entre se tratar de um problema no plugin, ou algo que eu esteja fazendo errado com a própria API do migre.me.
A impressão que tenho é que eu quase cheguei lá, mas alguma coisa ainda parece precisar de ajustes. Como entendo um pouquinho de PHP mas no momento estou mais pra weekend programmer do que qualquer outra coisa, enviei o link deste texto para o desenvolvedor do migre.me, na esperança de que ele possa me apontar algum problema — caso aplicável. Também enviei um e-mail ao desenvolvedor do plugin Tweetback, Florian Holzhauer, asking for his advice:
Hi there, Florian!
My name is Daniel Santos, and I’m a Brazilian WordPress user. I came across your e-mail address thanks to your excellent Tweetback plugin for WordPress, which not only I’ve been using in my own blog, but also have been trying to extend.
Let me explain: A lot of Brazilian users have been exchanging abroad URL shorteners like http://tinyurl.com or http://bit.ly for http://migre.me, which is a 100% Brazilian-made URL shortener. Developers from http://migre.me have recently deployed an XML-based API (http://migre.me/blog/api-gerador-de-urls/) that can be used to retrieve shortened URLs to be used as one best fits.
After implementing some code using your PHP plugin file as a reference, I created a variation of it (which I’m sending you, attached to this message). Simple enough, I have added some lines of code to your fh_tweetback_getshorturl function, retrieving a XML file and getting one attibute out of it. Besides, I added http://migre.me to the Admin Panel backend, exactly as I noticed you yourself did with the other services your plugin works with.
Unfortunately, there IS a problem, as shortened URLs created by http://migre.me sometimes appear listed in my post’s comments, sometimes not. Fact is, I don’t know, out of three possible situations, which is actually happening:
(1) my changes to your code were not enough — or are possibly wrong;
(2) the problem might be located in my misuse of http://migre.me API itself.
(3) my PHP skill sucks (LOL)As #3 is currently impossible to solve and I have contacted http://migre.me developers for help, I’m asking you to please help me figure out if the problem could be with the plugin itself.
Hoping that you will answer me as soon as possible, I would like to thank you in advance, and possibly expect my contribution to your plugin to be useful – as I think several Brazilian tweetbackers will find.
Best regards,
Daniel Santos
No entanto, este meu artigo é também um pedido de ajuda pra quem mais quiser se habilitar a fazer a coisa funcionar. Uma vez que a popularidade do migre.me aumenta cada dia mais entre os internautas e blogueiros brazucas, penso que a integração com o plugin para WordPress seja uma ótima pedida.
Ah, é claro: A minha modificação do plugin pode ser visualizada através deste link.
Aderindo aos Tweetbacks
Qualquer um que já tenha escrito pelo menos meia dúzia de artigos em um blog sabe o que é — ou, pelo menos, já ouviu falar de — um linkback: Também popularmente conhecido como pingback ou trackback, trata-se de um mecanismo que notifica um autor, em seu próprio blog, todas as vezes em que outras pessoas fazem menção a um ou mais artigos seus em outro endereço da Grande Rede de Computadores.
Pois bem: Depois de haver recentemente instalado e saudado com entusiasmo o TweetDeck, me dei conta de alguns links interessantes que mencionavam alguns artigos que eu havia escrito por aqui recentemente. Minha conclusão óbvia é de que, assim como alguns blogueiros têm evoluído para formas aleatórias de microblogging, as pessoas têm usado também seus serviços de microblogging — sobretudo o Twitter — como forma de linkback. Esse novo tipo de link, chamado tweetback, foi na verdade introduzido no começo deste ano por Rachel Cunliffe, em seu post 10 Ways Twitter Will Change Blog Design in 2009, publicado no site Mashable:
Bloggers will start to add “Tweetbacks” to their blog posts. The simplest version will show the number of people who have tweeted this post (including all reverse engineered tinyurls). Tweetbacks are not yet available.
Options will include:
- Showing what tweeters are saying about the post
- Replies to those tweets from others
- Showing who is tweeting the post
- Showing the tweeters’ avatars
- Ordering tweeters by Twitter influence
- Mixing tweets in with comments, rather than displaying them separately
Imaginei logo que eu deveria aderir a algum tipo de integração dos assim chamados tweetbacks com o meu próprio blog: Minha motivação foi realmente o fato de acreditar que as pessoas efetivamente têm passado menos tempo visitando e comentando posts dos blogs, e que têm dado preferência ao Twitter, para tanto. Depois de procurar um pouco por aí, acabei fazendo algumas experiências e me decidi com relação ao plugin Tweetback, escrito por Florian Holzhauer.
De maneira resumida, ele é capaz de varrer o Twitter em busca de links que apontem para os artigos do blog, mesmo que eles estejam ocultos por serviços de URL shortening — atualmente, aliás, são suportados, além do tinyurl — padrão —, o is.gd e o bit.ly, sendo que o autor já prometeu suportes adicionais em breve. Uma vez encontrados estes links, eles são transformados em tweetbacks, e publicados no blog acompanhados dos avatares de seus autores, no Twitter.
Para não dizer que a instalação foi totalmente plug and play, a única coisa que resolvi fazer foi uma edição no arquivo PHP fonte, apenas para aumentar o tamanho do avatar padrão, para que ele coincidisse com o tamanho que venho usando no blog.
Seja como for, o importante é saber que qualquer comentário ou reação aos meus artigos que venha via Twitter agora passará a ser capturados por aqui — figurando na barra lateral, junto aos comentários feitos direto no blog —-, o que me permitirá ter uma idéia melhor das reações com relação ao que eu escrevo. Espero ter boas surpresas…
Finalmente um TinyMCE ligeiro no meu WordPress 2.7
Desde o começo de dezembro do ano passado eu vinha enfrentando severos problemas ao tentar digitar meus artigos para publicação aqui no blog: Carregar o TinyMCE, editor WYSIWYG padrão que acompanha o WordPress, levava mais de 10 segundos na raposa de fogo, e, em seguida, digitar cada mera letra parecia uma tortura interminável, só perdendo para o tempo gasto ao ter que apagar alguma coisa usando o backspace ou formatando os textos.
Tentei, antes de qualquer coisa, usar uma versão recente do Opera para acessar o painel de edição de artigos, o que funcionou maravilhosamente bem, já que a lentidão desapareceu por completo na digitação. No entanto, não dava pra ficar usando um navegador diferente só pra criar artigos no blog e, assim sendo, cogitei a possibilidade de que pudesse se tratar de um problema qualquer com uma das inúmeras extensões que eu possuo instaladas no Firefox.
Infelizmente, após desabilitar todos os plugins e realizar um fresh setup, o problema não se resolveu: Cada caracter ainda levava uma eternidade para aparecer na tela ao digitá-lo. O próximo suspeito da minha lista foi o próprio WordPress. Pensei se tratar de algum bug da nova versão do WordPress, já que, afobado por testar novas funcionalidades, naquele momento eu vinha usando algumas versões beta.
Quando a versão 2.7 saiu oficialmente e eu reparei que o problema de lentidão ainda não dava o braço a torcer, comecei uma busca um pouco mais dedicada atrás de uma solução. Se na primeira quinzena de 2009 fiquei sem publicar uma palavra que fosse por aqui, foi por conta de estar ocupado atrás de cada pequena referência que pudesse representar uma luz no final do túnel.
No começo dessa semana encontrei essa luz, lendo um artigo do Andrew Ozz, chamado Troubleshooting TinyMCE in WordPress 2.7. Nele, Andrew lista alguns pontos que podem ser tentados por qualquer pessoa se seu editor resolve não aparecer ou funcionar corretamente. Alguns pontos eu já havia tentado, mas foi no sexto que eu parei, pois, recentemente havia encontrado diversos erros provenientes da página em que o TinyMCE é carregado no WordPress, examinando-a pelo console de errors do Firefox:
Delete both
wp-adminandwp-includesdirectories and upload fresh copies from the WordPress installation package.
Precisei esperar até o final da semana para ter tempo de ver se a coisa funcionava, mas valeu cada segundo de espera: Eis que abri meu programa de FTP favorito e mandei bala na orientação. Após alguns minutos de upload, BINGO! O editor estava novamente lépido e veloz.
Ah, é claro, a explicação: Ao renovar sobretudo o conteúdo da pasta wp-includes, pude me certificar de que os diversos arquivos em javascript ali existentes estivessem em sua versão mais recente: Após o procedimento, não houve qualquer problema no console de erros da raposa, o que me fez pensar que alguma falha acidental deve ter ocorrido entre a migração da última versão beta do 2.7 para a oficial. Mea culpa.
Plainscape: Para começar 2009 bem
Precisava — como já precisei em outras vezes — de uma mudança de ares por aqui para dizer que poderia começar bem 2009 (ainda que começando a escrever 16 dias depois da virada do ano). Para isso, depois de muito procurar, acabei encontrando um tema que achei bacana, o Plainscape.
Para meus padrões atuais de gosto, o tema é genial: Totalmente clean, o que o torna sofisticado. Conta com uma barra lateral direita — ao contrário do Apricot, tema que eu vinha usando até então, onde as coisas são agrupadas na esquerda. Além disso, já possui suporte nativo ao novo — e, por mim, mais do que amplamente antecipado — recurso de comentários endentados (ou threaded comments) da versão 2.7 do WordPress.
Espero que o novo tema agrade, e que me inspire a escrever um pouco mais por aqui.
Infinite Scrolling: Adeus, links de navegação!
Uma das principais ferramentas de um site movido a WordPress são seus links de navegação. Afinal de contas, um visitante pode utilizá-los — entre outros mecanismos, é claro — para ter acesso a outros artigos escritos por você, quer ele navegue artigo por artigo, ou página por página.
Mesmo reconhecendo a importância de fornecer ao visitante recursos para que possa navegar tranquilamente pelo conteúdo aqui do blog, reparei, apenas recentemente, que o tema que venho usando atualmente por aqui não possuía essa navegação embutida. Assim que reparei nesse problema, pensei imediatamente não em criá-los no rodapé, mas sim, em fazer uso do excelente plugin WP-PageNavi, que, no caso do modelo de índice do blog, cria um estilo de navegação de páginas similar aos dos resultados de busca do Google, e que eu já adaptei a vários temas que usei por aqui no passado.
Antes de seguir adiante com a implementação, no entanto, considerei as mudanças que apliquei por aqui recentemente, com a finalidade de mesclar blog, microblogs e tumblelog. Mais do que paginar o conteúdo, não me agradou a idéia de, me colocando no lugar de um visitante que desse as caras por aqui, encontrar uma página principal listando os 10 últimos posts e estes posts serem todos referentes, por exemplo, a atualizações de microblogs. Ou seja, nada de artigos do blog, propriamente falando.
Imediatamente eu pensei que uma das maneiras de amenizar esta situação seria garantir que, entre os artigos listados na página principal, estivessem, além das atualizações relacionadas ao meu lifestream, também os últimos 10 artigos do blog. Na prática, seria como imaginar que o número de artigos que um visitante encontraria ao chegar à minha página principal seria não 10, mas sempre pelo menos 10. O problema foi que, ao procurar por meios de implementar mais este comportamento por aqui, dei com os burros n’água.
Com isso, quero dizer que o WordPress não possui uma forma padrão — não, pelo menos, que eu tenha conseguido descobrir após escavações demoradas nos fóruns e sites de suporte — para listar os últimos x artigos do blog, desde se garanta que entre estes artigos estarão, por exemplo, 10 artigos de uma categoria pré-especificada, qualquer que ela seja.

Filosofia do Infinite Scroll
Estava quase desistindo da parada quando, ainda em meio às minhas buscas, me deparei com o conceito de infinite scrolling. Este conceito, que, pelo que vi também recebe nomes como autopagerize ou unpaginate, na verdade se resume a garantir que o conteúdo da próxima página web — ou, na verdade, de uma ou mais páginas web subseqüentes — àquela que o usuário está atualmente visitando seja pré-obtido e acrescentado à própria página atual automaticamente, sem que ele sequer se dê conta disso.
Seria como se, na prática, pudéssemos ler todo o conteúdo de um livro como se ele coubesse em uma única página, que seria gigantesca e estaria passando sempre diante dos nossos olhos, como em um rolo de pergaminho que fosse sendo desenrolado à medida em que a leitura progredisse.
No Swurl — mais um dos agregadores de redes sociais que, como o FriendFeed, existem por aí, e onde , aliás, eu também cheguei a criar uma conta —, a filosofia do infinite scrolling está em prática, o que implica no fato de que uma pessoa, por mais que navegue em uma página de usuário do serviço, nunca chegue ao final — ou ao rodapé — da página.
No fundo, aplicar este conceito num blog implica que, por mais que links de navegação sejam legais e importantes, eles se tornam obsoletos, e até mesmo desnecessários, pelo menos no que diz respeito à navegação na página principal do site.
Pois bem. Eu resolvi dar também este passo por aqui e instalei, a partir da própria página onde li a respeito do conceito de Infinite Scrolling, um plugin para WordPress que eles têm disponível. Neste momento, aliás, este plugin está ativo para qualquer visitante deste humilde blog, e, ao chegar ao rodapé da página principal, deve exibir uma simpática mensagem — um momento, por favor — para alertar o visitante de que mais artigos estão sendo carregados.
Ou seja, o período de testes está aberto. Por favor me dêem feedback caso achem necessário, para que eu possa saber como tudo está indo. E, caso não haja maiores problemas, será sinal de que poderei declarar, realmente, o fim dos links de navegação na página principal do Back-up Brain.
Mesclando blog, microblog e tumblelog: Um tutorial
Ainda não faz tanto tempo assim desde que integrei ao blog uma página de onde pode ser acompanhado o meu lifestream — a corrente que traz, listadas em ordem de ocorrência, todas as minhas atividades online, sobretudo nas redes sociais como o del.icio.us, e em microblogs como o Plurk ou o Twitter.
Minha intenção com a integração do lifestreaming ao Back-up Brain sempre foi muito clara: Participar meus poucos — mas fiéis — leitores daquilo que eu venho fazendo na Internet enquanto busco a inspiração para escrever novos artigos por aqui. Penso que o compartilhamento de músicas, links, vídeos, imagens e pequenos pensamentos rápidos demonstra, a quem possa interessar, no mínimo, que eu não sumi, e que, mesmo demorando a dar sinais mais evidentes de vida, continuo nas redondezas.
Ocorre que depois de ter trazido o lifestreaming para o blog, primeiro na barra lateral do layout, e depois também numa página própria só para isso, pensei comigo mesmo que, num mundo em que microblogs e outras atividades sociais se misturam cada vez mais com os blogs tradicionais — e, muitas vezes, também com a falta de tempo de seus autores —, o ideal mesmo seria transformar meu espaço num combinado entre blog, microblog e o que mais fosse preciso, desde que isso pudesse ser lido em um único stream, de cima a baixo.
A primeira coisa que eu pensei — pra variar, eu admito — foi abandonar a utilização do WordPress. Numa época em que estou louvando a chegada da nova versão 2.7 isso pode parecer bizarro, eu sei. Mas me veio um desejo fortíssimo de substituir minha velha ferramenta de blogar pelo Sweetcron, que, aliás, nasceu especificamente com a finalidade de permitir a qualquer um que hospede por conta própria seu lifestream. A definição do autor da ferramenta para sua criação, aliás, é mais do que perfeita:
Blogs are evolving. You’re looking at my Lifestream, a real-time flow of my activity across various websites, with the occasional blog post for nourishment.
Ou seja, eu reconheço que o ponto de vista dele está correto, pois a coisa tem realmente caminhado para uma situação em que a pessoa mantém um fluxo de atividades em vários sites, e de vez em quando, escreve um ou outro artigo em seu blog para — coloquemos assim — alimentar a alma.
Outra coisa que me ocorreu ao pensar em dar adeus ao WordPress foi começar um tumblelog. Segundo me diz a Wikipedia, esta seria uma outra forma mais do que perfeita para conectar o mundo convencional dos blogs ao mundo dos pequenos status updates e dos compartilhamentos de mídia:
A tumblelog (also known as a tlog or tumblog) is a variation of a blog that favors short-form, mixed-media posts over the longer editorial posts frequently associated with blogging. Common post formats found on tumblelogs include links, photos, quotes, dialogues, and video. Unlike blogs, tumblelogs are frequently used to share the author’s creations, discoveries, or experiences while providing little or no commentary.

Mas vejam só: Os motivos para não trocar minha ferramenta velha de guerra pelo Sweetcron ou por um tumblelog — neste caso, admito, optaria pelo Tumblr, a mais famosa e reconhecida ferramenta e site de hospedagem para tumblelogs — foram os mesmos:
- Eu gosto de controle total sobre o site e o que acontece nele.
- Eu adoro a diversidade de opções que o WordPress permite que eu desfrute.
- E, sobretudo, eu adoro feedback. Assim, eliminar ou reduzir a possibilidade de envio de comentários, como normalmente exigiria a manutenção do formato clássico de um tumblelog, nem pensar!
Mas, vejam só: Mesmo tendo chegado a esta conclusão — a de não abandonar novamente o caminho, a verdade e a vida —, também me dei conta de que apenas uma página de lifestreaming não seria mais suficiente para mim. Eu continuei a querer provocar mudanças aqui, desde que promovidas com a utilização de artifícios 100% relacionados ao WordPress.
Este artigo é o anúncio — e, mais do que isso, o relato — de que eu consegui atingir meu intuito. Ainda tenho que cuidar de alguns aspectos e concluir pequenas modificações, mas posso dizer que transformei o formato do blog para algo mais voltado a lifestreaming e tumblelog. E mais: Para não prejudicar a leitura de fiéis leitores, tudo isso só pode ser observado por quem visita meu blog ao vivo: Nada mudou nos feeds RSS, graças também a certas alterações com as quais me preocupei, e que descrevo a seguir.
















