sábado, julho 30, 2011

Servidor Web Simples com Python

As vezes um servidor web se faz necessário para testes simples ou para pequenos compartilhamentos internos de sua intranet. E o tempo de setup de um servidor Apache ou ISS para uma tarefa tão trivial quanto essa pode não ser tão interessante. Depender a TI para configuração as vezes é um parto. E algumas outras vezes baixar e instalar tudo demandará tempo demais. Recomendo usar o servidor web que vem embutido no Python(confeço que não sabia até algum tempo).
Você só precisará de uma linha para configurá-lo:
$cd [diretorio]
$ python -m SimpleHTTPServer


Depois disso você terá um servidor web rodando na porta 8000 e será exibida a seguinte mensagem:
 Serving HTTP on 0.0.0.0 port 8000 ...


Caso queira mudar a porta padrão do servidor web para um teste faça:
python -m SimpleHTTPServer 8080


Você poderá acessa-lo no seu navegador através do loopback(http://127.0.0.1:8080) ou pelo seu endereço IP (http://192.168.0.2:8080)

Simples não? Ainda farei alguns testes para ver o que isso aguenta. Não deve ser tanto, mas é interessante.

Fonte Original: [dicas-l]

segunda-feira, maio 30, 2011

Subprocess com Python - Tratamento de erros - parte 2

O valor de retorno do comando call() é o mesmo código de saída do programa que foi chamado. O comando de chamada é responsável por interpretar e detectar possiveis erros. Para tal a biblioteca subprocess possui o check_call(), que funciona de maneira parecida com o call(), porém no check_call() o código de saída é checado, e caso esse código indique um erro. Será feita uma chamada a uma exescessão chamada CalledProcessError.
Por exemplo:


fonte: doughellmann

sexta-feira, maio 27, 2011

Subprocess com Python - Executando comando externo- parte 1

Comunicão entre processos com Python.
O módulo subprocess permite você criar novos processos através de Python e assim se conectar aos seus inputs/outputs/erros pipes e obter seu código de retorno.

Rodar comando do shell:
Para executar um comando sem interagir com ele faça a chamada call() assim como faria com os.system()

import subprocess
# Simple command
subprocess.call(['ls', '-1'], shell=True)

Com o comando acima teremos a seguinte saída:
$ python subprocess_os_system.py

__init__.py
index.rst
interaction.py
repeater.py
signal_child.py
signal_parent.py
subprocess_check_call.py
subprocess_check_output.py
subprocess_check_output_error.py
subprocess_check_output_error_trap_output.py
subprocess_os_system.py
subprocess_pipes.py
subprocess_popen2.py
subprocess_popen3.py
subprocess_popen4.py
subprocess_popen_read.py
subprocess_popen_write.py
subprocess_shell_variables.py
subprocess_signal_parent_shell.py
subprocess_signal_setsid.py


E desde que tenhamos shell=True teremos acesso as variáveis de shell também.
import subprocess
# Command with shell expansion
subprocess.call('ls -1 $HOME', shell=True)


Dessa forma teremos a saída:
$ python subprocess_shell_variables.py

/home/maltzsama


Agora já sabemos executar um comando externo do sistema operacional ou mesmo um executavel qualquer usando subprocess, no próximo post veremos como fazer tratamento de erros em subprocess.

fonte: doughellmann.com

Gedit como IDE Python

Venho programando em Python há algum tempo, já até escrevi um post mostrando como usar o Komodo Edit como um editor Python.
Mas acredito que a maioria como eu usa Linux + Python para programar. Existem diversos editores no mundo Linux, muitos usam o EMAC(não me agrada muito), Vi, nano. Também existem algumas IDE's como o proprio Eclipse e o Netbeans(acho que com suporte descontinuado). Mas sempre usei muito mais o Gedit, pela simplicidade e capacidade de extenção com plugins.
Então podemos começar colocando os plugins básicos do Gedit para facilitar nossas vidas. Algumas distribuições já vem instalados. Caso contrario faça:

Arch Linux
pacman -Sy gedit-plugins
ubuntu
sudo apt-get update
sudo apt-get install gedit-plugins

Após a instalação desses plugins padrões você poderá habilitalos da seguinte forma:
Editar->Preferências->Plugins


Depois de selecionar os principais plugins que serão utilizados, recomendo:
Os plugins que não são links é porque já foram automaticamente instalados com o pacote gnome-plugins. Os outros plugins que possuem links você precirá baixá-los e descompactalos na seguinte pasta.
.local/share/gedit/plugins/ ou /usr/lib/gedit/plugins/, se você quiser os plugins já instalados para qualquer usuário.

Você ainda tem a possibilidade de configurar o CVS, ou GIT para funcionar como controle de versão do seu projeto. Mas isso é assunto pra outro post. 

quinta-feira, maio 05, 2011

Instalação do Python no MS-DOS/FreeDOS

Existem interpretadores Python para diversas arquiteturas além de Linux, Windows e Mac. Você pode consultar as arquiteturas disponiveis aqui. Dentre elas esta a implementação para DOS. Mas porque instalar Python em MSDOS? Bem apesar de existir os famoses arquivos em lote ou bat-files sabemos que eles possuem muitas restrições e incapacidades e para conseguirmos transpor essa barreira podemos, mais uma vez, contar com Python.
Existe o site da caddit que disponibiliza a versão PythonD 2.4.2 Release 1.0 que é nada mais que um arquivo zip contendo os executaveis do Python.
Agora como colocar isso para funcionar? Inicialmente, claro, é preciso descompactar essa pasta dentro da sua partição DOS. Após isso feito é importante setar algumas coisas no autoexec.bat.


SET PATH=%PATH%;c:\pyd\bin\python
SET PYTHONHOME=c:\pyd\
SET PYTHONCASEOK=1


Depois de adicionar essas linhas ao final do autoexec.bat vc só precisará reiniar o computador e terá tudo pronto para usar.

O comando para iniciar o python no DOS é #pythond

segunda-feira, abril 04, 2011

wxFormBuilder

Nos últimos 2 ou 3 anos venho programado quase que exclusivamente em python. Uma linguagem muito divertida, fácil e produtiva por sinal. Mas uma coisa que sempre sofri um pouco foi ter que criar interfaces gráficas através de linha de comando que acabava sendo pouco produtivo no final das contas(me desculpem os fã-boys do shell, mas não é produtivo criar componente por componente).
Finalmente, depois de algum tempo desenvolvendo para modo-texto e fazendo interfaces o mais simples possível. Vi outro dia na lista de discursão de python um programa muitissimo interessante. O tal do wxFormBuilder, simplesmente perfeito.
  
Reclamei durante anos da forma que o Glade trabalhava, criando aquele xml dos infernos, ou mesmo usando aqueles pequenos projetos que transformava o XML em um código python eu achava simplesmnete chato.
O PyQT eu nunca usei de fato. Mas o WxFormBuilder parece ser fão da filosofia KISS(keep it simple, stupid).
Ele é capaz de gerar os códigos em C++, Pyhton e XML. Vale a pena conferir e ganhar ainda mais produtividade.

segunda-feira, março 28, 2011

Prototipação de Telas

Alguns aqui devem trabalhar com prototipo de telas de sistemas. Alguns provavemente devem usar por muitas vezes o GLADE para fazer os seus modelos. Mas na minha opniao. o GLADE é um lixo. Outro dia procurando esse tipo de ferramenta encontrei o Pencil Project. Ferramenta realemnte muito interessante. Mantido pela Mozilla a possibilidade de ver esse projeto crescer é muito grande.
Abaixo uma screenshot:

sexta-feira, fevereiro 04, 2011

Facilitando a vida da TI com CloneZilla e DRBL


Você provavelmente já teve que configurar e instalar windows em diversas máquinas de um escritório ou lan-house. Deve ter tentado usar o GHOST, mas notou que ele não funciona nada bem com a nova versão do Windows 7 e nao funciona nada bem com sistemas de arquivos EXT4. Enfrentamos esse problema durante um tempo usando dump de HD mas era lento e as vezes dava uns erros estranhos.
A solução para isso veio do CloneZilla Linux, um live-cd que permite você clonar HDs, ou partições de diversos tipos de sistemas de arquivos. Uma solução extremamente interessante. Mas que pode se tornar ainda melhor ao se usar o DRBL como um servidor CloneZilla. Possui uma configuração simples e bastante rápida. Com ela você pode criar perfis de máquinas e distribuir esses perfis através da rede. Você pode ver mais detalhes a respeito do DRBL aqui.
Mas vamos ao que interessa. Configurar e usar.
Em uma máquina com o Debian ou Ubuntu já instalados(recomendo o Debian pela estabilidade) deve fazer o seguinte:
Incialmente você deve adicionar o repositorio dos pacotes do DRBL
wget -q http://drbl.org/GPG-KEY-DRBL -O- | sudo apt-key add -


Editar o arquivo /etc/apt/source.list e adicione o seguinte repositorio:
deb http://drbl.sourceforge.net/drbl-core drbl stable


Agora você só precisa atualizar o repositório e instalar o serviço:
#apt-get update
#apt-get install drbl



Esse pacote DRBL traz apenas os programas de configurações iniciais. Ainda não é o sistema de distribuição de imagens de SO propriamente dito, para tal você deve fazer:
#/opt/drbl/sbin/drblsrv -i

Este comando instalará todos os serviços e pacotes necessários para que sua maquina funcione como servidor.

Segundo passo é configurar o funcionamento das placas de rede. O ideal é que vc configure sua eth0 ou eth1 com um IP-FIXO para que o DRBL possa usa-lo no servidor DHCP dele entao use o comando:
#/opt/drbl/sbin/drblpush -i

Esse comando fará uma serie de perguntas, a maioria a respeito do comportamento que o sistema deve ter, afinal ele serve pra N coisas, tudo depende da sua necessidade. Detalharei com imagens assim que eu editar essa postagem.

Por ultimo mas não menos importante você configurará como o DRBL vai servir, se ele vai fazer um backup de um HD no servidor ou se ele vai restaurar um backup no cliente. Existem opções para se instalar algumas distros também. Mas no nosso caso usaremos apenas a opção CloneZilla.
#/opt/drbl/sbin/dcs


Pronto, agora você pode iniciar suas maquinas e dar boot através da placa de rede para criar o backup de um HD ou restaurar o HD de uma máquina.

TAR - backup em DVDs

Sei que hoje a maioria das pessoas tem um HD externo, mas o meu fez o favor de queimar outro dia, então tive que recorrer aos DVDs.  E como eu iria fazer backup da minha /home em DVD? Tinha que separar os arquivos. Logo TAR na /home.

$ tar cv /home/ | split -b 650m - prefixo.tar


Uma opção bastante util para dividir em CDs de 650MB como podem ver acima, pode-se usar o tamanho de divisão que quiser. Você pode usar o 1024k para backup em disquetes(hehehe)

Para recuperar o backup basta fazer o seguinte:
$ cat prefixo_do_arquivo_dividido.tar.* > novo_arquivo_inteiro.tar
$ tar xvf novo_arquivo_inteiro.tar


Façam bom proveito do pequeno comando.

domingo, novembro 21, 2010

Otimizando o desempenho do Linux: com o patch e sem o patch

Há alguns dias saiu uma noticia no phoronix o patch de 200 linhas que otimiza muito a velocidade do Linux em desktops. O tutorial para aplicação do patch você encontrará aqui. Confesso que ainda não testei tal solução, mas se faz tudo que promete, é uma ótima para nós sedentos por velocidade em nossos computadores.
Em seguida Lennart Poettering, um desenvolvedor da Red Hat, disse que uma modificação do /etc/rc.local e ~/.bashrc faria exatamente o mesmo, então segue o tutorial para aplicação do mesmo aqui.

Em dois ou três dias devo fazer uma avaliação a respeito da mudança e ganho real disso e provavelmente faça versões do tutorial desses outros blogueiros. Provavelmente voltadas para o Arch Linux, mas como minha internet anda um lixo nos ultimos meses, eu não prometo agilidade nisso. Mas para quem quiser começar...

quinta-feira, junho 03, 2010

Distribuições Linux

Depois de anos eu finalmente comprei um computador novo e resolvi me endividar em um notebook. Veio com o maldito Windows 7 mas claro que eu tinha que colocar uma distribuição Linux. Eu já tinha em mente duas, Ubuntu ou Arch Linux.
Durante muito tempo eu usei o Slackware. Mas como dava muito trabalho para ter tudo funcionando perfeitamente sempre, ele acabou caindo em desuso e passei a utilizar massivamente o Ubuntu. Pela sua instalação facilitada, grande quantidade de pacotes no repositorio, estabilidade - nada comparado ao slackware mas ainda assim estavel - e o grande numero de foruns e tutoriais facilmente encontrados na internet. Até aí tudo flores. Mas ao mesmo tempo eu sempre achei ele inchado, amarrado, pesadão, um elefantão. Isso sempre me irritou demais.
Foi ai que descobri o Arch Linux, uma destribuição leve, pacotes sempre atualizados, pre-compilado para i686, divertida de usar, não muito dificil de configurar, a comunidade também bem coesa e receptiva. Lindo né? Perfeito!
Há algum tempo venho usando o Arch em meu desktop e nunca tive muitos problema, bem problemas existiam, mas nao eram tão irritantes, mas nos ultimos tempos eu tenho tido falhas seguidas em alguns pacotes, travamentos bobos. E umas coisas anormais a nós usuarios de linux. E minha instalação tem só 2 semanas e está mais do que atualizada.
Acho que é hora de procurar por uma nova. Pensei seriamente em migrar para o Fedora, mas ainda acho o gerenciador de pacotes dele irritante. Cheguei a cogitar, sinceramente, migrar pro FreeBSD e abandonar Linux por um tempo, mas meu trabalho não me permite essa aventura. Debian eu acho tosco, simplesmente. Então estou entre o Gentoo, que nunca usei em toda minha vida, ou voltar a instalar o bom e velho slackware.
Alguem tem alguma sugestão? Se é que tem alguem lendo isso...

segunda-feira, maio 10, 2010

Editor Python - IDE

Muitos, assim como eu, devem ter passado muito tempo atras de uma boa IDE para seus códigos python. A maioria acaba optando por uma IDE pesada como Netbeans ou Eclipse, mesmo não usando todas as funcionalidades que elas oferecem, ou mesmo por não saber 'configurar' as outras.
É válido lembrar que no site PythonBrasil da há uma lista bem grande com IDEs e editores muito legais. Já usei alguns. Como o Netbeans, o Eclipse com Pydev ou editores não tão simples como o VIM ou Emacs ou mesmo o gedit. Eu hoje estou usando o Komodo Edit.
Confesso que é bem legal e parece ser promissor, principalmente em ambiente windows, já que não contamos com uma divesidade tão grande de editores para linguagens de programação como no próprio Linux. A única coisa que perdi uns cinco ou dez minutos foi como rodar o arquivo que estou editando com um simples toque de botão como é feito em Eclipse ou Delphi?
É bem fácil na verdade, depois que você fizer o download aqui faça o seguinte:
  1. Tools-> Run Command
  2. Run; %(python) %F e marque a opção 'Add to Toolbox'
  3. 'Toolbox'->%(python) %F -> Properties -> Key Binding -> New Key Sequence
  4. Pressione a sequencia de teclas que você deseja. Eu selecionei simplesmente F5
  5. Change->Ok
Quando for rodar seu programa ele aparecerá no output do Komodo Edit. Simples né? E melhor do que sobrecarregar seu sistema operacional com uma IDE que vc não usará todas as possiveis funcões disponiveis. Quando eu tiver tempo eu passo a configuração que fiz no meu Gedit para usar o Python porque o Komodo só to usando no windows mesmo já que não tenho gedit aqui...

terça-feira, abril 06, 2010

MD5SUM, Dialog em Python

Tive alguns momentos livres e resolvi implementar uma interface em Dialog para um md5sum feito em Python que andei fuçando. Para quem não sabe existe um módulo chamado python-dialog que é para criar interfaces em modo-texto, quem quiser saber mais a respeito dá uma olhada no blog do MrSantos.
Então... Abaixo segue o meu código... Confesso que faltam alguns ajustes mas dá pra usar...

Testem e vejam como funciona, quando eu tiver mais tempo eu edito esse post e encerro o outro...

segunda-feira, abril 05, 2010

FreeNAS – Network Attached Storage (parte 04) Configurações de disco e usuários

No decorrer desses posts a respeito de FreeNAS vimos onde, como instalá-lo e como configurar sua interface de rede de modo simples.
Nesse último post relacionado a configuração básica do FreeNAS veremos apenas algumas configurações básicas para que você possa usá-lo sem grandes problemas em sua rede. Você deve acessar remotamente o IP que você configurou pro seu FreeNAS através de seu navegador(recomendo usar qualquer navegador menos o IE, não é preconceito, é que o IE não presta mesmo) no meu caso http://192.168.0.1 então apacerá no navegador uma tela mais ou menos assim:
No primeiro acesso ao FreeNAS ele pedirá uma senha para você, uma autentificação. O usuário e senhas padrões: username admin, password freenas
A tela inicial deve se parecer com isso:
 Depois que você vir essa tela com as informações básicas de seu sistema então deveremos configurar os discos que serão usado para o armazenamento de seus arquivos(storage), clice em Disks -> Management e aparecerá a seguinte tela:

Pressione o simbolo de '+' que aparece à direita e configure cada um de seus discos. Conforme aparece na tela a seguir:

 
Adicione no botão 'add' e depois vá em 'Disks->Format' selecione o disco que será formatado e execute o comando conforme a tela seguinte:



Recomendo você formatar usando o sistema de arquivos UFS(Unix File System - comum ao FreeBSD). Após isso pronto é hora de Configurar os pontos de montagem, 'Disk->Mount Point', adicione o disco  que será montado usando o '+' que você tem na tela e conforme a tela a seguir configure-o:

 
Selecione o tipo de partição(Partition type), sistema de arquivo(File system), digite o ponto de montagem (Mount point) e uma descrição, depois é só adicionar(add) se tudo tiver sido feito corretamente aparecerá a seguinte tela com o Status 'OK':


Pronto, agora você terminou de fazer a configuração básica que será usada nos seus discos de armazenamento do seu NAS, o que precisa ser feito agora é a adição de um usuário para que você possa acessar esse armazenamento de rede como qualquer usuário e não apenas como root. Para tal vá em "Access -> Users and Groups" e crie pelo menos um grupo e um usuário, é preciso criar primeiro o grupo, conforme a tela:

 
Digite o nome do grupo e sua descrição e depois 'add' depois disso volte em usuário e adicione um novo usuário:


Digite nome(Name), nome completo(Full Name), Senha(Password) se você quiser e adicione o grupo que você cadastrou e como grupo adicional(additional group) coloque guest. Você pode deixar o "Home directory em branco se quiser acessar diretamente o ponto '/mnt' que contém todos os pontos de montagem do servidor.

No próximo post veremos como configurar os serviços básicos de compartilhamento como o CIFS-SMB(Samba) e NFS.

Veja os posts anteriores aqui:
FreeNAS - Network Attached Storage (parte01)
FreeNAS – Network Attached Storage (parte02) instalação
FreeNAS – Network Attached Storage (parte03) LAN interface e configuração de IP

terça-feira, março 23, 2010

FreeNAS – Network Attached Storage (parte03) LAN interface e configuração de IP


Depois de feita a instalação do FreeNAS no seu Cartão de Memória, HardDrive ou PenDrive, e o computador ter sido reiniciado, nós precisaremos inicializar o computador a partir desse dispositivo e configurar algumas coisas.

Depois que o computador foi reiniciado o seguinte menu aparecerá:

"Console setup"
"*********************"
1) Assign Interface
2) Set LAN IP address
3) Reset WebGUI password
4) Reset to factory defaults
5) Ping host
6) Shell
7) Shutdown system
8) PowerOff system


A configuração padrão do FreeNAS é usar o primeiro NIC (Network Interface Card) com o endereço IP 192.168.1.250.

  • Selecione 1 e pressione ‘Enter’ no nome de sua Ethernet Interface (em0 no meu caso, a sua pode ser diferente);

  • Press ‘Enter’ na Opção 1 (Interface), selecione ‘y’ e reset o PC;
(Esse reset é recomendado pelo m0n0wall, autor do FreeNAS, mas talvez seja possível ignorá-lo)
  • Depois que o computador for resetado e o menu aparecer outra vez, selecione a Opção ‘2’DHCP client. Senão, digite sua configuração para o endereço IP (192.168.0.1 and /24 no meu caso); e escolha se você usará ou não

  • Ainda no menu principal, selecione a Opção ‘5’ e ping outro dispositivo da sub-rede e tenha certeza se tudo esta funcionando bem (lembre que não é possível pingar um computador protegido por um FireWall). Desabilite o FireWall primeiro.
Nota: FreeBSD não usa nomes genericos para as interfaces de rede como o Linux (eth0 por exemplo). O nome da interface de rede dependerá do driver usado:

  • fxp0 : Para a primeiro Intel EtherExpress chipset NIC encontrado
  • fxp1 : Para o segungo Intel EtherExpress chipset NIC encontrado
  • bge0: Para o primeiro Broadcom BCM570XX Gigabit NIC encontrado
  • nve0: Para o primeiro nVidia nForce MCP chipset encontrado
  • etc…
Aviso: fwip0 é a porta firewire. Caso você veja fwip0 na sua lista, NÃO USE ISSO.

  • Taxas de transferência do FreeNAS são muito mais dependentes da velocidade da rede muito mais do que da velocidade da CPU e do desempenho da memória;
  • Se sua experiência de utilização do FreeNAS estiver muito lenta tente conectar o Desktop diretamente ao NAS através de um cabo crossover;
  • Configurações de velocidade e de Duplex podem então ser ajustadas e testadas quando tiver um computador diretamente conectado;

Caso qualquer coisa não esteja correta você pode sempre selecionar a opção "4) Reset to factory defaults" e reconfigurar tudo.

No próximo post veremos a configuração básica do NAS