Arquivo

Arquivo de fevereiro, 2009

Sobre o SPAM

27, fevereiro, 2009 1 comentário

Coloquei no final do último post uma referência ao termo SPAM. Porém, como nem todos vão clicar naquele link, resolvi postar ele de novo com o devido destaque. O vídeo dispensa maiores explicações… Descubram por si próprios de onde veio o termo SPAM :)

[]‘s

Sahb,.

Categories: Humor Tags: , , ,

Criando Feeder RSS usando PHP

27, fevereiro, 2009 1 comentário

Outro dia precisei fazer alguns feeders RSS para o Guia Entrada Franca, daí dei uma zapeada pela net e não tive maiores problemas em achar material de qualidade para me informar sobre como fazer meu próprio feeder. Porém, achei que as informações estavam muito espalhadas, então resolvi fazer esse mini-tutorial com o mínimo necessário para você ter um feeder RSS funcionando sem dores de cabeça. É um tutorial que realmente tem o mínimo necessário, então não reclamem pela falta de profundidade (você deve saber o mínimo de PHP e seu uso com MySQL) :P Ao final do post, vou colocar umas referências sobre RSS, além de colocar umas durante a explicação, quando for pertinente.

Uma pincelada sobre formato do XML do RSS

Vamos lá. O formato RSS é um XML que segue umas regrinhas especiais. Um Exemplo de RSS olá mundo seria:

<?xml version="1.0"?>
<rss version="2.0">
 <channel>
    <title>Meu Primeiro RSS</title>
    <link>http://rss.meuprimeirorss.com.br</link>
    <description>Este é o meu primeiro alimentador RSS</description>
    <language>pt-br</language>
    <item>
          <title>Título do meu primeiro item</title>
          <description>Esta é a descrição do meu primeiro post</description>
          <link>http://www.meuprimeirorss.com.br/topico.php?id=3400</link>
    </item>
</channel>
</rss>

Para testar, coloque salve esse arquivo com o nome de rss.xml (o nome não é importante, é apenas uma sugestão), e coloque em algum lugar visível pelo seu navegador. Vale ressaltar que esse tal lugar visível deve ser dentro de um servidor http (como o Apache), não funcionando se for aberto com o comando abrir arquivo do navegador. No meu caso, eu o coloquei pra rodar no meu Apache, então no Firefox (no meu caso, versão 3.0.6), fiquei com o seguinte resultado no navegador:

Resultado no Firefox 3.0.6

Resultado no Firefox 3.0.6

Vamos por partes agora (sem referências ao “Jack, o Estripador” :P ). Na primeira linha, nós temos um início padrão pra arquivos XML, nada fora do comum ou que você tenha que se preocupar (considerando que você só está interessado em fazer um feeder RSS). Bom, acho que posso dizer a mesma coisa sobre a segunda linha. Então eu quase poderia dizer idem pra terceira, mas gostaria só de falar que ela abre o channel, e pediria pra vocês notarem que ela termina no final do RSS. Agora vamos às linhas mais interessantes. O título vai em <title></title>, acho tranquilo (sem a trema :P ) mapear o título no XML e no Firefox. A descrição do canal vai em <description></description>, idem na facilidade de mapeamento. O endereço do próprio feeder vai entre as tags <link></link>, e no caso da figura acima, deveria ser http://localhost/rss.xml, mas deixei http://rss.meuprimeirorss.com.br para ficar mais claro, não sei se foi a opção mais didática, mas, enfim, está explicada a tag link. A tag <language> denota a linguagem em que o RSS está escrito (não, não é linguagem de programação se você pensou nisso :P ). Bom, creio que você não irá usar outra que não seja pt-br (Português do Brasil). Uma lista dos códigos das linguagens que pode ser encontrada aqui (está em inglês). É interessante notar que para definir o canal (channel), são obrigatórias as tags title, description e link apenas. Para ver todas as opções para o canal e para o item, que vai ser discutido agora, dê uma olhada aqui (em inglês também, mas gosto de pegar a referência mais oficial, e no meu ver, essa é a mais oficial e completa).

Vamos agora ao tal item mencionado anteriormente. O item é meio que o item do RSS mesmo, sendo uma notícia, um evento, um post ou qualquer coisa que seja listada no feed. O item não possui campos obrigatórios, porém a especificação do RSS 2.0 apenas recomenda que existam pelo menos os 3 campos que eu listei no exemplo, title, description e link. Mais uma vez, acho que não preciso explicar o que eles são, apenas falar que o título vira um link para o endereço listado pela tag com esse nome. Mas como pôde ser visto na referência, existem inúmeros outros campos que podem aparecer no item. O feed pode ter tantos itens quanto você deseje, então creio que dito isso, você sabe o mínimo necessário para ter um feeder RSS “na mão”. Vamos agora ao mínimo necessário para você fazer um feeder em PHP, para facilitar sua vida.

Fazendo um Feeder RSS em PHP

Se você opta por fazer um RSS em PHP, provavelmente você já tem um banco de dados com as notícias ou o que seja que você irá listar, e provavelmente sabe se conectar ao banco usando PHP. Se você não sabe, nem tem nada disso, um tutorial mais completo nesse sentido pode ser encontrado aqui (em inglês). Vamos então a um esqueleto de um feeder RSS em PHP.

<?
ob_start();
header("Content-Type: application/xml; charset=UTF-8");
//conexao ao banco, query, etc vem aqui

//aqui, como os delimitadores do php podem ser confundidos com
// o delimitador do XML, coloquei essa primeira linha dentro de
// 'echo' como forma mais simples, a meu ver, de resolver isso.
echo "<?xml version=\"1.0\"?>";
?>
<rss version="2.0">
 <channel>
    <title>Meu Primeiro RSS</title>
    <link>http://rss.meuprimeirorss.com.br</link>
    <description>Este é o meu primeiro alimentador RSS</description>
    <language>pt-br</language>
<?
// aqui sao feitas as atribuicoes aos campos retornados pelo banco
// suponha que o banco tenha as colunas id, titulo e descricao
while($linha = mysql_fetch_array($resultado_da_query)) {
   echo"      <item>\n";
   $id = $linha['id'];
   $descricao = $linha['descricao'];
   $titulo = $linha['titulo'];
   echo "          <title>$titulo</title>\n";
   echo "          <description>$descricao</description>\n";
   echo "          <link>http://www.meusite.com.br/noticia.php?id_noticia=$id</link>\n";
   echo "      </item>\n";
}
?>
   </channel>
</rss>
<? ob_end_flush(); ?>

Você pode estar se perguntando, só isso? É… só isso… Como você deve saber programar em PHP, deve ter notado que usei ob_start() e ob_end_flush(). Por que? Se sua requisição ao banco demorar algum tempo, ou o carregamento do conteúdo do PHP demorar, o Firefox pode não interpretar o conteúdo como um RSS e mostrar um XML sem muito sentido para o usuário. Então o servidor só manda o conteúdo inteiro, depois de tudo processado. Talvez hajam maneiras mais elegantes de se resolver isso, mas essa foi a que adotei, por achar mais simples (a boa e velha Navalha de Occam, ou, Occam’s Razor). Sugestões nos comentários serão bem-vindas sempre :)

Note também o que o cabeçalho da página  (header) foi forçado a ter codificação UTF-8 (caso tenha problemas com codificação, recomendo dar uma lida nisso aqui, o título é bem elucidativo :P ), e foi avisado que era um XML, para que não hajam sobressaltos nem problemas na interpretação do seu feed pelos leitores. Funciona sem, mas recomendo deixar aí por via das dúvidas :)

Dica para tornar seu feeder mais bacaninha :)

Você já deve ter visto vários sites que têm aquele simbolozinho do RSS na barra de endereços do Firefox para você se inscrever no Feed daquela página. Como fazer isso? Simples, é só adicionar o seguinte código ao cabeçalho (header, ou seja dentro das tags <head></head>):

<link rel="alternate" type="application/rss+xml"
    title="Meu RSS 1" href="http://www.meusite.com.br/rss/">

<link rel="alternate" type="application/rss+xml"
    title="Meu RSS 2" href="http://www.meusite.com.br/rss2/">

<link rel="alternate" type="application/rss+xml"
    title="Meu RSS 3" href="http://www.meusite.com.br/rss3/">

Você pode colocar só um, mas coloquei 3 só pra mostrar que podem haver vários.

Por onde começar a se aprofundar

Especificação do RSS

Tópico na Wikipedia em português sobre RSS

Tópico na Wikipedia em inglês sobre RSS

Bom, é isso… Talvez tenha sido muito superficial, mas… era só o mínimo necessário mesmo. Espero que seja útil. Comentários, dúvidas, sugestões, comentários off-topic e qualquer outra coisa serão bem-vindos :) (menos spam…)

[]‘s

Sahb,.

Categories: PHP, Programação Tags: , ,

Olá, mundo!

26, fevereiro, 2009 6 comentários

Bom, esse é o primeiro post, então acho que o título pode continuar sendo o padrão do WordPress mesmo :P

Como primeiro post, acho que ele deve cobrir o humor, então fiquem com esse vídeo que achei pelo iutubil :)

Bom, e você deve estar se perguntando, “por que ele está usando um tema pronto do WordPress (o iNove), se ele quer tratar de design? Ele não devia ter um tema próprio bonitão???”. Três motivos (pra agradar o TOC do Michel :D ):

  • Esse tema do WordPress é bonito e limpo.
  • Eu ainda não sei tudo sobre WordPress e sua personalização, então minha evolução nele vai ser registrada aqui, em vários tópicos-tutoriais.
  • Porque  o Michel gosta de 3 exemplos, motivos, etc.

[]‘s

Sahb,.

Categories: Humor Tags: