Novo (mentira) Blog

Augusto Pascutti bio photo By Augusto Pascutti Comment

A muito tempo procuro um jeito simples e eficiente de compartilhar algum conhecimento (inútil), mas até então nunca estive feliz com nada. Usei Wordpresse e Habari, o segundo me agradou muito durante muito tempo, mas acabei tendo problemas com o banco de dados em SQLite e acabei perdendo todo conteúdo do blog. Desanimei.

A muito tepo também, digo que usar controle de versões pra blogar deveria ser algo simples e eficiente. Isso aliado ao GitHub (me desculpem, mas o Git só é o que é hoje por causa dele. É um ótimo SCM, concordo, mas o GitHub fez toda a diferença) e a minha mania de usar Textile pra escrever as coisas me fez dar uma procurada em como fazer isso de uma maneira relativamente eficiente.

O resultado final é isso que vocês estão vendo: Páginas estáticas HTML hospedadas no GitHub Pages. Eles rodam no servidor uma ferramenta em Ruby chamcada Jekyl , que server justamente pra isso: um sistema extremamente simples de blog.

O código do blog está no meu github em conjunto com os posts. Tentarei explicar brevemente como esse conjunto funciona.

Jekyl

Ele parseia tudo e gera os HTMLs que são o que o usuário vê. Pra isso, ele depende basicamente do arquivo config.yml_, e dos diretórios que iniciam com "_" (underline). O jekkyl funciona basicamente como um ferramenta de template, que lê principalmente o arquivo index.html interpretando o início deste arquivo com informações de layout a ser utilizado e de variáveis específicas.

O Jekyl usa o Liquid ainda também para parsear o conteúdo o que permite a utilização e confecção de plugins para seu uso, tornando o modelo flexível o suficiente para se fazer o que vier na cabeça depois de uma noite de insônia ou bebedeira.

Textile

É uma linguagem de marcação a partir da qual se gera o HTML. Obivamente ele é mais simples de se escrever que o HTML, e a leitura do mesmo também é mais simples. Escrever utilizando ele é uma questão de costume (assim como HTML) e seus modificadores são extremamente simples e diretos.

Caso você não saiba, o GitHub suporta já o Textile, para isso é só colocar a extensão .textile no arquivo e ele exibe corretamente o HTML gerado pelo conteúdo. O exemplo mais banal disso são os arquivos README.textile que o GitHub exibe na página inicial dos repositórios.

GitHub pages

Com ele é possível ter uma página HTML para um repositório hospedado dentro do GitHub. Ele já roda de forma nativa o Jekyll por isso todo código hospedado nesse repositório acaba sendo parseado. Essa etapa é relativamente desnecessária, é possível também criar um método de distribuição do seu resultado do parseamento do Jekkel usando o Apache Ant ou (como eu prefiro) o PHING.

Posts

Cada post é um arquivo (no meu caso) Textile cujo nome começa com a data de publicação e termina com um breve título do post. Dentro deste arquivo o conteúdo começa com algumas informações usadas pelo Jekyl a fim dele encontrar o layout que quero utilizar para aquele post, data e título do mesmo.

Criar um novo post é tnao complicado quanto escrever um rquivo textile (eu já fazia isso com o Habari) e colocar dentro do diretório posts do Jekyl. Ao submeter pro repositório no GitHub com um git push é só esperar um pouco para que o parseamento seja feito no servidor e pronto.

Comentários

Para os comentários eu uso uma ferramenta muito competente e gratuita chamada Disqus .

Conclusão

Como puderam ver o modelo é simples e flexível o suficiente. Não escondo que torci um pouco o nariz por deixar isso tudo em cima de ferramentas Ruby (basicamente), mas fazer o que? A tecnologia existe, funciona e é bem competente. Não utilizá-la é burrice.

Você pode visitar eu repositório e ver como tudo fei feito. pode forkar e fazer seu próprio blog. As vantagens são inúmeras, a principal? Escreva de forma offline de maneira simples e direta. A segunda mais importante? O backup fica por conta deles e não nossa. Quer mais uma de brinde ainda? O efeito “Fuck yeah” de ter um blog usando Git hospedado no GitHub justifica tudo.

comments powered by Disqus