Como lidar com settings.py local vs produção no django

Não é legal colocar no github suas senhas ou configurações especificas da sua máquina de desenvolvimento, e no Django padrão ele praticamente te induz ao erro.

Mas não se preocupe, é bem simples adaptar seu projeto de tal forma que suas configurações locais não se misturem com o código que vai ser publicado. basta adicionar as seguintes linhas no fim do seu arquivo settings.py:

try:
   from local_settings import *
except ImportError, e:
   pass

Agora vc pode editar o local_settings.py de tal forma a ‘re-escrever’ variaveis, listas, tuplas do settings.py do seu projeto. Só não esqueça de manter o local_settings.py fora do seu repositório !

Customizando o prompt interativo do python

Em algumas distros linux notei que o interpretador padrão do Python, aquele invocado pelo comando python no terminal, possuiam autocomplete e histórico. Eu sei que existe o ipython o bpython, mas em várias situações onde eles não estão disponíveis, o interpretador interativo padrão é a melhor solução.

Existe uma variavel de ambiente chamada PYTHONSTARTUP, que guarda o path do seu script de inicialização, por exemplo:

export PYTHONSTARTUP="~/.pythonstartup"

O conteúdo de ~/.pythonstartup pode ser customizando à vontade, e ainda existe uma documentação básica sobre o assunto aqui.

Um exemplo de pythonstartup :

import readline
import rlcompleter
import atexit
import os
from datetime import datetime as d

readline.parse_and_bind('tab: complete')

histfile = os.path.join(os.environ['HOME'], '.pythonhistory')

try:
    readline.read_history_file(histfile)
except IOError:
    pass

atexit.register(readline.write_history_file, histfile)

def isodate():
    return d.now().isoformat()

del os, histfile, readline, rlcompleter

Como você pode ver é possível adicionar funções e objetos personalizados para tornar seu prompt mais flexivel.

Estratégia para perpetuar seus dados

Post inspirado em um email que enviei a um companheiro de pedal que perdeu todos seus arquivos :

Hoje em dia HD tá barato, então vale sempre a pena comprar 2Hds , e fazer mirror com raid . Qualquer sistema operacional, por mais vagabundo que seja ( windows por exemplo ), tem uma ferramenta pra duplicar os dados pelos 2 hds por software, sem a necessidade de hardware especial.
Eu , por experiência própria , e também por observação meticulosa daqueles que me cercam ,  não vejo com bons olhos o uso de Hds externos , principalmente os de notebook, para backup . HD externo, bateu travou, simples assim.
Backup na nuvem (dropbox) é uma boa se não forem muitos arquivos , banda larga no brasil é de mentira.
Pra quem pode gastar e tem muuuuuitos arquivos que não podem ser perdidos :  Recomendo o Drobo http://www.drobo.com/ , Time Capsule pra quem usa Mac , ou uma solução SantaEfigênica, computador com 2 Hds em mirror com FreeNAS ( http://freenas.org/doku.php ) .
Não existe solução definitiva pra armazenar dados com segurança, o fato é que HDs duram cada vez menos,  e estamos armazenando nossas vidas digitais nesses bloquinhos … Como sysadmin que já viu Terabytes e terabytes escorrerem entre os dedos dos  meus clientes recomendo :

Para fotos :

1 cópia em DVD, em algum lugar que não seja sua casa
2 cópias em HD, no seu PC e em algum outro, ou uma solução de storage como citei
1 cópia na nuvem ( flickr , picasa etc… )
Se puder, imprima as fotos mais marcantes
Para Músicas e Filmes :

Backup P2P , faça como eu, espalhe suas músicas/filmes entre seus amigos, se um dia vc precisar da pra recuperar boa parte da sua coleção com eles. Sério, funciona.
Ou ainda, tenha um iPod/Mp3 que caiba todas suas músicas… meu ipod me salvou de perder todas minhas músicas.
Para documentos

Documentos tomam pouco espaço, 2 Dvds no máximo fazem o backup de toda uma vida
Cópia na nuvem ( dropbox, google docs etc… )
No mais boa sorte a todos, nossos ancestrais, pintando cavernas, talhando pedras , pintando quadros foram muito mais competentes que a gente em perpetuar suas histórias

Quer um conselho ? Troque de distro !

Eu custumo recomendar que pessoas interessadas em usar linux, usar mesmo e não ser apenas uma vítima do ubuntu, devem explorar distribuições mais cruas pra entender como as coisas realmente funcionam. Depois dessa experiência traumática, os usuários costumam amadurecer bastante, pois ela percebe que realmente o linux (unices em geral) não tem nada semelhante ao windows, e que os programas gráficos que usam são pura ilusão.
Sabendo disso normalmente as pessoas passam a depender menos de scripts automaticos de configuração e frontends, erram menos , tem acesso pleno as novas tecnologias que estão implementadas por baixo do capô do linux mas que não tem uma GUI pra disponibilizar isso pra todo mundo.
Eu recomendo tb nunca usar a mesma distro por mais de 1 ano, surfe entre as melhores versões de cada distro ! Se o ubuntu 9.4 é ruim, tente outra distro ! Não faltam opções.

Vou tentar descrever como eu enchergo esse “mercado” de distros linux de acordo com niveis de dificuldade de configuração.

Mamão com açucar :

OpenSuse — Pra quem não quer abrir o terminal, pode remover o terminal se quiser, todas as configurações tem interface gráfica até as mais complicadas como configurações do kernel, dual head, placa de captura, vpn etc…
Mandriva — Pra quem não quer abrir o terminal, da pra configurar quase tudo sem terminal.
Fedora — Pra coisas de baixo nível precisa de terminal e algum conhecimento
Ubuntu — Pra coisas de baixo nível precisa de terminal , algumas configurações de rede por exemplo.

Intermediarias (pra quem não tem medo do terminal):

Debian — Suas ferramentas de configuração tem GUI principalmente em modo texto
slackware — Não tem ferramentas de configuração mas tem as configurações bem documentadas
ForeSight — Distro pra quem gosta de GNOME, é tão simples de configurar quanto o gnome, mas não pense que ele vai configurar sua WiFi sozinho.
Archlinux — Não tem ferramentas de configuração nem configurações bem documentadas, mas tem uma comunidade forte e ativa.

Para adeptos:

Gentoo — Instalação não é trivial, exige muita leitura e sangue frio.
Sabayon — É como o gentoo mas tem um instalador simples e vem pré-configurado, mas qualquer necessidade extra é como no gentoo, muita leitura e sangue de barata.
Gobolinux — Distro brasileira que quebra a FileSystem Hierachy , e permite multiplas versões do mesmo pacote, além de todo o conteúdo de um pacote ser instalado em um único diretório… todo o resto é tosco como um gentoo.

Para quem realmente gosta da coisa :

LFS – Linux From Scratch , é um livro que te ensina a como fazer sua própria distro do Zero, compilando cada parte do sistema à partir do source, sem sistema de pacotes, sem configuradores sem nada do zero… Quem gosta de linux deveria instalar essa distro pelo menos uma vez na vida.

Eu passei por todas essas fases, mas não comecei pelas distros mamão com açucar, isso não existia na minha época 🙁 Recomendo uma progressão, saindo de distros hiper fáceis, passando por mais complicadas, e se ficar fácil vá para as intermediárias, se ficar fácil vá para a dos adeptos, quando dominar tente o LFS … Depois de passar pelo LFS não vai mais fazer diferença a distro que vc vai usar, todas se tornam iguais. Afinal vc será capaz de destruir e reconstruir qualquer distro, transformar debian em fedora, e ubuntu em gentoo, ou ainda fundir distribuições diferentes.

Depois o lance é estudar o kernel do linux, e desenvolver seu próprio kernel de sistema operacional 🙂

bill-gates-linux

Hoje eu uso o opendebiansuse , fundi o opensuse e o debian pq não vou aprender nada de novo configurando o X na mão (só vou perder tempo) e o debian pq preciso desenvolver coisas … Mas insisto, se vc se interessa por linux, corte a corda, e saia do lugar comum.

Configurando WPA2 no archlinux PSK

Configurar uma máquina linux via WPA2 é simples se vc usa gnome ou KDE, mas para todo o resto do mundo deve usar wpa-supplicant. Um daemon que cria um “tunel” criptogafado entre sua placa e o servidor. A configuração é simples, basta adicionar as seguintes linhas em /etc/wpa_supplicant.conf :


ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1

network={
ssid="liquuid"
psk="senh@!"
priority=5
}

network={
key_mgmt=NONE
}

Troque ssid e psk pelas infos da sua rede , e rode o daemon com o comando :


wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

Ao reiniciar seu computador o comando deverá executado novamente, já que o archlinux não vem com um script de boot (assim como no caso do NIS). Para amenizar o problema, escrevi meu próprio, que segue abaixo :


#!/bin/bash

# source application-specific settings

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
start)
stat_busy "Starting WPA SUUUUUUPLAICANT AHHAHAH !!!"
/usr/sbin/wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

;;
stop)
stat_busy "Stopping WPA Daemon"
killall -9 wpa_supplicant
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
exit 0

E gravei em /etc/rc.d/wpa, depois só adicionei o script no arquivo rc.conf e agora minha máquina fuciona perfeitamente com essa rede.