mnogueir@gmail.com

Novo website

Remodelação do website. O anterior modelo tinha já 7 anos; sendo a tecnologia um dos meus grandes interesses, quis testar novas tecnologias (nomeadamente os recursos Azure) e desenvolver de raiz toda a plataforma.

Princípios que orientaram esta mudança:

Se na versão anterior utilizei o jekyll para a geração das páginas estáticas, desta vez decidi programar eu os scripts de geração do site (apenas porque sim…). Inspirado no modelo do jekyll, defini uma estrutura de diretórios, sendo que os artigos a publicar são escritos em ficheiros em markdown. O script, que programei em shell (não é, garantidamente, o mais eficiente), percorre os ficheiros markdown e gera as páginas html do site (recorrendo ao pandoc para esta conversão).

A estrutura de diretórios é:

Os ficheiros de markdown devem ter duas linhas (em formato comentário) que especificam o título e a categoria do respetivo artigo. Por exemplo, o ficheiro que dá origem a este artigo começa assim:

[//]: #titulo=novo website
[//]: #categoria=tecnologia

## Novo website

O script de geração pode claramente ser otimizado (não tive, para já, essa preocupação); a primeira versão funcional do código foi esta:

#!/bin/bash
set -x

#limpa a estrutura antiga
rm -rf site_output

#Cria a nova estrutura
mkdir site_output
mkdir site_output/content
#Copia CSS e assets para a nova estrutura
cp -R css site_output
cp -R assets site_output

#começa a criar o html da página de entrada
cat includes/header.html > site_output/index.html
echo '<h2><ul>' >> site_output/index.html

#itera sobre os markdowns na pasta "content"
for ficheiro in `ls -r1 content/*.md`; do

    art_data="`basename $ficheiro | cut -c1-4`.`basename $ficheiro | cut -c5,6`"
    art_categoria=`cat $ficheiro| grep "^\[//\]: #categoria" | cut -d= -f2-`
    art_titulo=`cat $ficheiro| grep "^\[//\]: #titulo" | cut -d= -f2-`
    art_file=`echo $art_titulo | tr " " "_"`

    echo '<li><a href=content/'${art_file}.html'>'$art_titulo'</a>
    <span class="meta"> ('$art_categoria', '$art_data')</span>
    </li>' >> site_output/index.html

    cat includes/header.html > site_output/content/${art_file}.html 
    pandoc -f markdown $ficheiro >> site_output/content/${art_file}.html
    cat includes/footer.html >> site_output/content/${art_file}.html    

done 


#fecha o html da pagina de entrada
echo '</ul></h2>' >> site_output/index.html
cat includes/footer.html >> site_output/index.html

#se modo "server (-s)", arranca um webserver na diretoria de output
if [ "$1" = "-s" ]; then
    cd site_output
    python -m SimpleHTTPServer
    cd ..
fi

Em relação ao alojamento, a versão anterior estava nas páginas do github, sendo publicado via git. Optei agora por utilizar storage Azure, publicando para web, e sincronizado via azcopy.

Como próximos passos, caso se justifique, otimizar o código de geração. Neste momento demora menos de 1s a gerar o site, pelo que não será prioridade. Irei também evoluir o CSS; o objetivo é manter um aspeto minimalista e o mais próximo possível do “look” base dos browsers, mas facilitando a leitura e navegação. Finalmente, ponderar a necessidade de implementar páginas estáticas (exemplo: “sobre mim”).

Agora, começar a criar conteúdos…