Achei muito interessantes esta biblioteca pra fazer BDD com python. Ela é baseada no Accuracy (para C# e .net).
Maiores informações: http://tinyurl.com/c64qpp
sábado, 28 de fevereiro de 2009
terça-feira, 24 de fevereiro de 2009
"Create Django Application" para TextMate
Criei um pequeno comando no editor de Bundles do TextMate pra criar uma aplicação no django. Ele cria já uma estrutura de diretórios que deixa tudo pronto pra escrever templatetags, novos templates, testes, etc.
A estrutura de diretórios fica assim:
Segue o código (também disponível em [1]):
A estrutura de diretórios fica assim:
app_name/
|
`- __init__.py
|
`- admin.py
|
`- fixtures/
|
`- models.py
|
`- templates/
|
`- templatetags/
| |
| `- __init__.py
|
`- tests/
| |
| `- browser_tests.py
| |
| `- model_tests.py
| |
| `- nav_tests.py
|
`- urls.py
|
`- views.py
Segue o código (também disponível em [1]):
[1] http://pastebin.com/f1a862c33
res=$(CocoaDialog inputbox --title "Create Application" --informative-text \
"Application name:" --button1 "Ok" \
--button2 "Cancel")
[[ $(head -n1 <<<"$res") == "2" ]] && exit_discard
app_name=$(tail -n1 <<<"$res")
if [ -f "$TM_PROJECT_DIRECTORY/manage.py" ]; then
MANAGE="python manage.py"
else
MANAGE="django-admin.py"
fi
cd $TM_PROJECT_DIRECTORY
$MANAGE startapp $app_name
mkdir $app_name/templatetags $app_name/templates $app_name/tests \
$app_name/fixtures $app_name/media
touch $app_name/urls.py $app_name/admin.py $app_name/templatetags/__init__.py \
$app_name/tests/__init__.py
cat > $app_name/urls.py <<EOF
#insert your custom urls here.
from django.conf.urls.defaults import *
urlpatterns = patterns('',
)
EOF
cat > $app_name/admin.py <<EOF
from django.contrib.admin import site
from ${app_name}.models import *
EOF
cd $app_name/tests
for testtype in model browser nav; do
touch ${testtype}_tests.py
cat > ${testtype}_tests.py <<EOF
#${testtype} tests for ${app_name}
from django.test import TestCase
EOF
done
cd -
CocoaDialog ok-msgbox --title "Application Created." \
--informative-text "Application $TM_PROJECT_DIRECTORY/$app_name created." \
--button1 "Ok" --float
rescan_project
quinta-feira, 19 de fevereiro de 2009
Incializando Daemons no Mac OS X
Olá, pessoal! Há muito tempo não posto aqui, mas prometo não ser mais tão relapso :)
Hoje vou contar aqui minha experiência com o
Durante este post, vamos ver os seguintes tópicos:
O que é e como funciona o
Configurar um serviço para rodar em background na inicialização de um sistema operacional nem sempre é uma tarefa simples (tome-se como exemplo a dor de configurar serviços no windows, ou mesmo fazer gerenciamento dos scripts rc*.d no linux). No Mac OS X, o sistema gerenciador de processos é o
Para fazer o lançamento das aplicações durante o login, o
Um arquivo
Para editar um arquivo
Opções gerais do arquivo
A lista completa de opções para um arquivo
Para quem quiser editar o arquivo em um editor de texto normal, o código deve ficar desta forma:
E pronto! ao reiniciar o computador, você pode checar o daemon rodando através do comando:
É isto! espero que minha ajuda tenha sido útil! Qualquer sugestão ou dúvida, é só postar um comentário ;)
Referências:
[1] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html
[2] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/launchd.8.html
[3] http://www.no-ip.com
[4] http://www.no-ip.com/client/mac/noip3.1.2a.dmg
[5] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html#//apple_ref/doc/man/5/launchd.plist
Hoje vou contar aqui minha experiência com o
launchd
, o gerenciador de serviços do Mac OS X. Não é uma experiência muito vasta, mas acho que já é válida pra quem está procurando informações.Durante este post, vamos ver os seguintes tópicos:
- O que é e como funciona o
launchd
- Configuração do serviço
- Opções gerais do arquivo
launchd.plist
- Aplicação real: Configurando o daemon de atualização do no-ip[3]
Termos Utilizados
- agent - Programa que roda em background, e é inicializado quando o usuário faz login;
- daemon - Programa que roda em background, e é inicializado juntamente com o Mac OS X.
O que é e como funciona o launchd
Configurar um serviço para rodar em background na inicialização de um sistema operacional nem sempre é uma tarefa simples (tome-se como exemplo a dor de configurar serviços no windows, ou mesmo fazer gerenciamento dos scripts rc*.d no linux). No Mac OS X, o sistema gerenciador de processos é o launchd
. Ele gerencia tanto processos que são lançados quando o usuário inicializa a sessão (agents), quando os que são inicializados durante o boot (daemons), e você pode configurar ambos os tipos de aplicação para serem iniciados a seu gosto.Para fazer o lançamento das aplicações durante o login, o
launchd
busca informações em arquivos .plist
[1] nas seguintes pastas no sistema operacional:- ~/Library/LaunchAgents - para programas a serem inicializados no login de um usuário específico (provido pelo usuário);
- /Library/LaunchAgents - para programas que serão inicializados no login de todos os usuários (provido pelo administrador do sistema);
- /Library/LaunchDaemons - para programas a serem lançados durante a inicialização do sistema (provido pelo administrador do sistema);
- /System/Library/LaunchAgents - para serviços internos do Mac OS X a serem lançados no login dos usuários;
- /System/Library/LaunchDaemons - para serviços internos do Mac OS X a serem lançados durante o boot.
Configuração do serviço
Os passos para a configuração do serviço são poucos e simples. Primeiro, criamos um arquivo.plist
com as configurações desejadas do serviço. Depois, colocamos o arquivo em uma das pastas acima citadas, conforme o fim desejado. E pronto! na próxima inicialização, o Leopard já vai inicializar seu serviço normalmente.Um arquivo
.plist
nada mais é do que um tipo de arquivo XML, com algumas tags para definição de tipos de dados para a representação de dicionários, listas, strings, etc. É vastamente utilizado em softwares escritos em Objective-C, para serialização de dados.Para editar um arquivo
.plist
podemos utilizar qualquer editor de texto. Para quem tem o Xcode instalado, podemos usar o Property List Editor:Opções gerais do arquivo launchd.plist
A lista completa de opções para um arquivo
.plist
pode ser obtida em[5]. Seguem aqui os parâmetros mais geralmente usados:- Label (
String
) - Identifica únicamente o trabalho a ser executado pelolaunchd
; - Disabled (
Boolean
,false
por padrão) - Coloque esta opção para desabilitar temporariamente a inicialização; - UserName (
String
) - Especifica o usuário que executará o programa. Somente aplicável se olaunchd
é executado como root. - GroupName (
String
) - Especifica o grupo que executará o programa. Somente aplicável se olaunchd
é executado como root. - Program (
String
) - Caminho completo para a execução do programa; - ProgramArguments (
Lista
deStrings
) - Lista de parâmetros para a execução do programa; - RunAtLoad (
Boolean
,false
por padrão) - Define se o serviço vai ou não ser carregado na inicialização; - RootDirectory (
String
) - Caminho para execução "engaiolada" (chrooted
); - WorkinDirectory (
String
) - Caminho para execução da aplicação (chdir
).
Aplicação real: Configurando o daemon de atualização do no-ip
Primeiro, precisamos baixar o cliente do no-ip em [4], e instalá-lo normalmente. Feito isto, vamos criar um arquivo chamado com.noip.noip2.plist, e editar as seguintes propriedades:Key | Type | Value |
---|---|---|
UserName | String | root |
Label | String | com.noip.noip2 |
GroupName | String | wheel |
RunAtLoad | Boolean | true |
OnDemand | Boolean | false |
Program | String | /usr/local/bin/noip2 |
Para quem quiser editar o arquivo em um editor de texto normal, o código deve ficar desta forma:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UserName</key>
<string>root</string>
<key>Label</key>
<string>com.noip.noip2</string>
<key>GroupName</key>
<string>wheel</string>
<key>RunAtLoad</key>
<true/>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/local/bin/noip2</string>
</dict>
</plist>
E pronto! ao reiniciar o computador, você pode checar o daemon rodando através do comando:
[rodolfocarvalho@imac-rox:~]$ ps aux |grep noip2
root 3717 95.8 0,0 132152 480 ?? Rs Qua10 1557:56.10 /usr/local/bin/noip2
É isto! espero que minha ajuda tenha sido útil! Qualquer sugestão ou dúvida, é só postar um comentário ;)
Referências:
[1] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html
[2] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/launchd.8.html
[3] http://www.no-ip.com
[4] http://www.no-ip.com/client/mac/noip3.1.2a.dmg
[5] http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html#//apple_ref/doc/man/5/launchd.plist
Marcadores:
configuração,
daemon,
leopard,
mac os x,
serviços
Assinar:
Postagens (Atom)