Strufts

Não sabemos o que é, mas nós temos.

Projetos na Copel (0)

Segunda-feira, Março 26 por , em

Terminei mais uma versão do gerador de roteiros p/ a Copel, agora com plugins. Criei uns scripts Groovy para o Freemind que gerassem templates para facilitar a vida de quem está começando a usar a ferramenta.

Ainda, desenvolvi uma aplicação web Django p/ gerenciar as atividades dos desenvolvedores, algo que já existe lá, mas não é muito legal, já que você é obrigado a fazer as contas de duração da atividade.

No final disso tudo ainda tenho que escrever um artigo para a revista de circulação interna.



Links para esta postagem | edit post

Programando até o fim do mundo (0)

Quarta-feira, Janeiro 11 por , em

Enfim achei um tempo no meio das férias p/ escrever algo no blog. Não tenho muitas novidades, mas estou terminando o gerador de roteiros e iniciando outro projeto em Django. Dessa vez criei vergonha na cara e fiz uma conta no Bitbucket (já tinha uma no GitHub por conta do curso do Henrique Bastos -- Welcome to the Django).

Recomecei pela "bolhonésima" vez a estudar Java. Posso dizer que aconteceu um milagre, pois sempre parava no capítulo de estruturas de repetição, mas dessa vez avancei mais um pouco e empaquei no capítulo de Interfaces.

Semana que vem volto p/ o trabalho. Tomara que eu ainda lembre as senhas.



Links para esta postagem | edit post

Django e Nginx (0)

Quinta-feira, Março 24 por , em ,

Uma vez fiz um deploy de um projeto no Apache. Não gostei. Provavelmente foi por causa das inúmeras opções de configuração do Apache (leia-se "eu não tenho paciência e nem tempo p/ descobrir p/ que serve aquele mundo de módulos e diretivas e ainda combinar com wsgi"). Algum tempo depois, numa conversa de IM, alguém cantou a bola do NGinx depois de eu comentar sobre o Cherokee.

Agora resolvi tentar usar o NGinx localmente, já que eu ainda não trabalho com Django, apesar de me coçar de vontade de arrumar um emprego assim. Como tudo, a princípio, você se bate um pouco, mas achei que os arquivos de configuração são bem mais "amigáveis" que os do Apache devido ao seu formato. Em ambos existem divisões, mas isso é natural. O que complicou minha vida foi encontrar um modo de servir arquivos estáticos. E como acontece sempre que você tenta demais fazer algo, quando consegue, ri da própria cara porque depois tudo fica óbvio.

O primeiro passo foi editar o arquivo /etc/hosts e incluir uma linha de um hostname a partir do qual quero acessar minha aplicação. O hostname escolhido foi djangoapps.dummyproject.

127.0.1.1        djangoapps.dummyproject

Em seguida,  criei o projeto dummyproject utilizando o django-admin.py no terminal. A aplicação criada possui o nome de public. Ao editar o arquivo settings.py, alterei o valor da variável MEDIA_URL para http://djangoapps.dummyproject/media/, deixando o MEDIA_ROOT vazio.

Agora, se ainda continuam lendo, vão com calma p/ não se perderem (principalmente quem está tentando isso pela primeira vez). Segundo a wiki do NGinx é necessário instalar o Spawning e o PasteDeploy. Utilize o easy_install ou o pip. Mas aqui estou utilizando o servidor somente com o Spawning (python-spawn) instalado.

Após isso, vem a etapa de configuração do servidor. Copiando o Apache, criei dois diretórios em /etc/nginx: sites-available e sites-enabled. No diretório sites-available criei um arquivo chamado 00-dummyproject.conf com o seguinte conteúdo:

server {
    server_name djangoapps.dummyproject;

    location / {
        proxy_pass http://127.0.1.1:8080;
        proxy_redirect default;
    }

    location ^~ /media/ {
        root /home/isis/src/Projetos/dummyproject;
    }
}



Note que o IP e o hostname são os mesmos informados no /etc/hosts, e a raiz da chamada ao diretório media é o caminho absolute até o diretório do projeto. No diretório sites-enabled incluí um link simbólico para esse arquivo de configuração e no arquivo /etc/nginx/nginx.conf, antes da última chave da seção http, incluí a linha include sites-enabled/*.conf. Após isso, inicie o NGinx (sudo /usr/sbin/rcnginx start). Para finalizar, utilize a linha de comando exibida na wiki do NGinx:

spawning --factory=spawning.django_factory.config_factory $PROJECT.settings --host=$HOST --port=$PORT -w WATCH

onde $PROJECT é o nome do diretório do projeto Django, $HOST é o hostname utilizado na diretiva server do nginx (o mesmo do arquivo /etc/hosts) e $PORT é a mesma porta utilizada na diretiva proxy_pass. Vale lembrar que essa linha de comando deve ser executada fora do diretório do projeto Django. P/ não ter que lembrar o comando inteiro, escrevi um script shell:


if [ $# -ne 3 ]; then
        echo -e "Usage: ./executar_django.sh PROJECT HOST PORT"
        exit 1
fi

CURRENT_DIRECTORY=$PWD
PROJECT=$1
HOST=$2
PORT=$3

if [ -d $CURRENT_DIRECTORY/$PROJECT ]; then
    echo -e "Executing project $PROJECT..."
    COMMAND="spawning --factory=spawning.django_factory.config_factory $PROJECT.settings --host=$HOST --port=$PORT -w WATCH"
    exec $COMMAND

else
    echo -e "The project $CURRENT_DIRECTORY/$PROJECT doesn't exist."
    exit 2
fi
Para carregar suas imagens, css e javascripts nos templates, utilize a variável MEDIA_URL. Exemplo: <script src="{{ MEDIA_URL }}js/jquery.js></script>.



Links para esta postagem | edit post