<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Claudinei Pereira [Blog] (Posts sobre git)</title><link>http://blog.claudineipereira.com/</link><description></description><atom:link href="http://blog.claudineipereira.com/categories/git.xml" rel="self" type="application/rss+xml"></atom:link><language>pt_br</language><lastBuildDate>Tue, 23 Apr 2024 12:03:02 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Blogofile e Git </title><link>http://blog.claudineipereira.com/blogofile-e-git/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;O &lt;a href="http://www.blogofile.com" title="Site do Blogofile"&gt;Blogofile&lt;/a&gt; é um sistema de gerenciamento de conteúdo, desenvolvido em
&lt;a href="http://www.python.org" title="Python - Linguagem de programação"&gt;Python&lt;/a&gt; e que utiliza a biblioteca &lt;a href="http://www.makotemplates.org" title="Mako - Biblioteca de templates"&gt;Mako&lt;/a&gt; para o sistema de templates,
podendo ser usado em conjunto com o &lt;a href="http://www.git-scm.com" title="Git - Controle de versão"&gt;Git&lt;/a&gt; para controle de versão. 
Ele compila arquivos escritos em diferentes linguagens de marcação - 
como &lt;a href="http://docutils.sourceforge.net/rst.html" title="reStructuredText"&gt;rst&lt;/a&gt; e &lt;a href="http://daringfireball.net/projects/markdown" title="Markdown - Linguagem de marcação"&gt;Markdown&lt;/a&gt;, só para citar dois exemplos - para arquivos
xHTML válidos. É utilizado para gerenciar sites e blogs, com a 
vantagem de produzir arquivos estáticos que não dependem de base de dados 
ou de alguma linguagem instalada no servidor para geração de páginas
dinâmicas. Quando utilizado para gerar blogs, utiliza o &lt;a href="http://disqus.com" title="Disqus - Gerenciamento de comentários"&gt;Disqus&lt;/a&gt; como
gerenciador comentários.&lt;/p&gt;
&lt;h4&gt;Instalação em sistemas Debian&lt;/h4&gt;
&lt;p&gt;Os seguintes passos descrevem a instalação do Blogofile e do Git num servidor 
remoto, que também deverá ter algum servidor web instalado para servir as 
páginas xHTML geradas pelo programa.&lt;/p&gt;
&lt;p&gt;A instalação do Blogofile pode ser simplificada ao utilizarmos o pacote
&lt;strong&gt;setuptools&lt;/strong&gt;, que gerencia a instalação de bibliotecas python. Os seguintes
comandos instalam o setuptools, o git e o Blogofile com todas suas dependências:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;aptitude&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;setuptools
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;aptitude&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;git-core
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;easy_install&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;blogofile
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Com isto feito, podemos iniciar um blog simples numa pasta vazia no diretório 
$HOME do usuário:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;blogofile&lt;span class="w"&gt; &lt;/span&gt;init&lt;span class="w"&gt; &lt;/span&gt;simple_blog
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;O comando &lt;em&gt;blogofile init simple_blog&lt;/em&gt; cria alguns arquivos e pastas que podem 
ser editados para criar um site ou blog. Neste último caso, os &lt;em&gt;posts&lt;/em&gt; ficam na
pasta &lt;em&gt;_posts&lt;/em&gt; e devem possuir o formato 
&lt;strong&gt;nome-do-post.linguagem-de-marcação&lt;/strong&gt;. Após criarmos páginas ou posts, podemos
gerar os arquivos estáticos, que ficam armazenados na pasta &lt;em&gt;_site&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;blogofile&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Configuração&lt;/h4&gt;
&lt;p&gt;Após o processo de instalação no servidor remoto, devemos configurar o git
para iniciar um repositório na pasta do blog ou site para que possamos editar
os arquivos num computador local. No computador local, podemos configurar o
blogofile por meio do arquivo &lt;em&gt;_config.py&lt;/em&gt;, criar páginas ou posts, editar
o estilo CSS e adicionar imagens para, finalmente, gravar as alterações locais
no servidor remoto.&lt;/p&gt;
&lt;h5&gt;Configurando o Git&lt;/h5&gt;
&lt;p&gt;A configuração do Git descrita nesta seção possibilita a geração automática
de arquivos estáticos após cada &lt;strong&gt;push&lt;/strong&gt; do computador local para o remoto.
No computador remoto, devemos inicialmente criar um arquivo de configuração
do usuário (&lt;em&gt;$HOME/.gitconfig&lt;/em&gt;) com o seguinte conteúdo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[user]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Nome do usuário&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;nomedousuario@dominio.com&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Agora, podemos iniciar o repositório e adicionar os arquivos:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;init
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;.
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Commit Inicial"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;A parte mais importante do processo é a criação do arquivo &lt;strong&gt;post-receive&lt;/strong&gt;,
que deve ser gravado na pasta &lt;em&gt;$HOME/blogofile/.git/hooks/&lt;/em&gt; com o seguinte
conteúdo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nb"&gt;unset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;GIT_DIR
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
git&lt;span class="w"&gt; &lt;/span&gt;reset&lt;span class="w"&gt; &lt;/span&gt;--hard
/usr/local/bin/blogofile&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Também devemos torná-lo executável:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;+x&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile/.git/hooks/post-receive
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Este arquivo será executado após cada &lt;strong&gt;push&lt;/strong&gt;, gravando as mudanças nos
arquivos do repositório e chamando o comando &lt;em&gt;blogofile build&lt;/em&gt; que cria
as páginas estáticas.&lt;/p&gt;
&lt;p&gt;Ainda na máquina remota, devemos configurar o git para aceitar as mudanças
diretamente no &lt;em&gt;branch&lt;/em&gt; MASTER. Este comportamento é aceitável num único 
repositórios com um único usuário, não devendo ser aplicado em repositórios 
que possuam mais de um usuário ou que sejam idealizados para possuir vários
branches. Para tanto, adicionamos as seguinte linhas no arquivo
&lt;em&gt;$HOME/blogofile/.git/config&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[receive]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;denyCurrentBranch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ignore&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Configurando o Blogofile&lt;/h5&gt;
&lt;p&gt;Agora podemos começar a trabalhar na máquina local ao clonarmos o
repositório remoto. Com isto, podemos trabalhar localmente e só enviar as
mudanças para o computador remoto quando as configurações, páginas ou posts
estiverem prontos. Para clonar o repositório remoto:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;ssh://nome-do-usuário@máquina-remota:porta/caminho-do-repositório
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;O comando trará todos os arquivos remotos para a máquina local. Podemos, então,
configurar o blogofile, editando o arquivo &lt;em&gt;_config.py&lt;/em&gt; localmente. Algumas
variáveis deste arquivo que podemos personalizar:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# URL do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="c1"&gt;# Nome do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; 
&lt;span class="c1"&gt;# Descricao do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; 
&lt;span class="c1"&gt;# Zona horaria de Sao Paulo&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timezone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"America/Sao_Paulo"&lt;/span&gt; 
&lt;span class="c1"&gt;# numero de posts por pagina&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;posts_per_page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; 
&lt;span class="c1"&gt;# Habilita Permalinks automaticos&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;auto_permalink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt; 
&lt;span class="c1"&gt;# Formato do permalink. Neste caso, indicamos para o blogofile que&lt;/span&gt;
&lt;span class="c1"&gt;# desejamos somente o titulo do post no permalink&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;auto_permalink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"/:title"&lt;/span&gt; 
&lt;span class="c1"&gt;# Habilita comentarios do disqus&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;disqus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;span class="c1"&gt;# Nome de usuario do disqus&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;disqus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="c1"&gt;# Desabilita pagina inicial customizada. Util no caso de blogs&lt;/span&gt;
&lt;span class="c1"&gt;# instalados diretamente na raiz do site&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;custom_index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Criando Posts&lt;/h4&gt;
&lt;p&gt;Podemos criar posts no blogofile utilizando várias linguagems de marcação,
como rst, markdown e até mesmo html. É importante que o título do arquivo
contenha como "extensão" o nome da linguagem de marcação. O seguinte exemplo
contém o código que foi utilizado para criar o &lt;a href="http://blog.claudineipereira.com/primeiro-post/" title="Primeiro post de Claudinei Pereira"&gt;primeiro post&lt;/a&gt; deste
blog (nomeado &lt;em&gt;1. Primeiro Post.markdown&lt;/em&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="nl"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Primeiro&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;
&lt;span class="nl"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Pessoal&lt;/span&gt;
&lt;span class="nl"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2011&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mo"&gt;06&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;
&lt;span class="nl"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;teste&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dummy&lt;/span&gt;
&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="n"&gt;Este&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;é&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;primeiro&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;deste&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;apenas&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;para&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;servir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;template&lt;/span&gt;
&lt;span class="n"&gt;para&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;posteriores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Hello&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;png&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Nele utilizei as variáveis &lt;em&gt;title&lt;/em&gt;, &lt;em&gt;categories&lt;/em&gt; e &lt;em&gt;date&lt;/em&gt; para indicar ao
blogofile, respectivamente, o título, a categoria e a data de criação do post.
O uso da variável &lt;em&gt;tags&lt;/em&gt; é opcional.&lt;/p&gt;
&lt;p&gt;Para enviar as mudanças de configuração e algum post:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;_posts/nome-do-post.extensão
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Insere post e configuração do _config.py"&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;push&lt;span class="w"&gt; &lt;/span&gt;origin&lt;span class="w"&gt; &lt;/span&gt;master
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;O blogofile é um gestor de conteúdo indicado para ser utilizado em servidores
de baixos recursos de memória ou processamento, pois cria blogs e sites 
estáticos que não necessitam de base de dados ou de linguagens de
programação para geração de páginas dinâmicas. Além disso, permite a 
customização tanto das páginas e estilos do site como também da lógica por 
trás da geração dos conteúdos via modificação ou criação de scripts python.&lt;/p&gt;</description><category>blogofile</category><category>cms</category><category>debian</category><category>git</category><category>python</category><guid>http://blog.claudineipereira.com/blogofile-e-git/</guid><pubDate>Mon, 13 Jun 2011 03:05:00 GMT</pubDate></item></channel></rss>