Posts de January, 2012

[Tarsis Azevedo] development |should| be_funny - Python e TDD

Thursday, January 26th, 2012

Should o que?!

O should-dsl é uma ferramenta de teste que tem como principal objetivo tornar o codigo mais legivel e limpo. (http://www.should-dsl.info/)

Ok, mas #comofas?

Depois de instalado (o site ensina como fazer) é bem simples começar a escrever os testes. Tá duvidando, então olha só:

Esse exemplo eh a implementacao das specs da musica Só para Loucos – Ventania

So Para Loucos Spec Spec


class Pessoa:
		louco = False
		careta = True

		def colher_cogumelos(self):
		    self.cogumelos = ['cogumelo1', 'cogumelo2', 'cogumelo3', 'cogumelo4', 'cogumelo5']
		    return self.cogumelos

		def fazer_cha(self, *ingredientes):
		    cha = ingredientes
		    return cha

		def beber(self, oque):
		    self.louco = True
		    self.careta = False
		    self.versos = ['espinho', 'espinho']

		    return self

		def guardar_cogumelos(self, cogumelos):
		    self.recanto_espiritual = cogumelos
		    return self.recanto_espiritual

	class TestSoParaLoucos(unittest.TestCase):
	    def setUp(self):
	    	self.pessoa = Pessoa()

	    def test_deve_ser_careta_sem_tomar_nada(self):
	    	self.pessoa |should| be_careta

	    def test_deve_estar_louco_depois_de_tomar_um_cha_de_cogumelo(self):
	    	cogumelos = self.pessoa.colher_cogumelos()

	    	cha_de_cogumelo = self.pessoa.fazer_cha(cogumelos)
	    	cha_de_cogumelo |should| contain(cogumelos)

	    	self.pessoa.beber(cha_de_cogumelo) |should| be_louco
	    	self.pessoa.versos |should| have(2).espinhos

	    def test_deve_guardar_cogumelos_escondidos(self):
	        cogumelos = self.pessoa.colher_cogumelos()
	    	self.pessoa.guardar_cogumelos(cogumelos)
	    	self.pessoa.recanto_espiritual |should| have(5).cogumelos

	if __name__ == '__main__':
	    unittest.main()

Só isso?

Isso foi só um exemplo ludico, pra mostrar as possibilidades da ferramneta! Hoje ela contem varios matchers(as funções de teste) para os mais variados objetivos. Voce pode ver a lista completa aqui

Voce tambem pode fazer seus proprios matchers

Acabou?

Se voce gostou do projeto e quer ajudar, aqui vc encontra varias formas de contribuir!

Entao eh isso, Até a proxima xD


[Tarsis Azevedo] Django Trick: Hospedagem grátis no Alwaysdata

Thursday, January 26th, 2012

Quem programa em django, sente falta de um Heroku[1], como no rails para fazer deploy e colocar a aplicaçao online mais rapido e de graça.

Obervação: Existe um serviço que tem essa proposta, ser um Heroku pra Django, é o Djangy (https://www.djangy.com/), Porem ele esta em teste! Voce pode entrar e pedir um convite. Eu ja pedi mas nao foi aceito ainda! =/

 

Uma Solução…

… pra esse problema é o alwaysdata.com . Eles tem varios planos de hospedagem, e um deles é totalmente free!!! xD

Assim, voce pode desenvolver sua aplicação e ja colocar no ar! 

Facil assim?

Sim, fácil assim!! A interface deles é muito simples. Você configura seu servidor com a versão do python/django que usa com 1 clique.

Depois é só enviar a aplicação via ssh para o server, seguir os passos deles pra deploy[2] e pronto, sua aplicação django estará no ar!!!

Que massa! Isso é perfeito!

Não!

Ele tem alguns pequenos problemas:

  1. Algumas partes importantes do site estao em frances
    • pagina da wiki que ensina o deploy e o acesso via ssh
  2. Não tem um script ou deploy automatizado como o Heroku
    • Isso pode ser feito com um shell script simples(No proximo artigo deste blog)
    • Pra agilizar, voce pode habilitar o acesso ao ssh sem senha[3]
  3. O plano é fraco
    1. Mas, se seu objetivo é só “testar” em produção ele te atende!
    2. É uma forma de aprender fazendo 
    3. E é de graça!!!

Até a proxima pessoal,

Abraços.

[1]http://heroku.com/

[2]http://wiki.alwaysdata.com/wiki/D%C3%A9ployer_une_application_Django

[3]http://tarsisazevedo.posterous.com/truque-ssh-sem-senha

 

 


[Tarsis Azevedo] Truque Ssh: Sem Senha

Thursday, January 26th, 2012

Voce tem que acessar um servidor muitas vezes ao dia, e esta cansado de digitar senha toda hora? Voce nao aguenta mais gravar mil senhas? Tem que digitar todas as mil senhas para tentar acessar sua maquina remota?

Seus problemas acabaram!!!

Voce só vai precisar de:

  • Um terminal linux
  • Senha da maquina que vc acessa (E só mais uma vez, eu garanto)
  • Alguns comandos linux.
    • Atenção: se voce nao é muito experiente em linux, peça ajuda de um adulto xD,

Tudo pronto? Entao…

Abra o terminal e digite:

ssh-keygen -t rsa

Bom agora voce vai ver as seguintes mensagens:

Enter file in which to save the key (/home/user1/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

 

APENAS TECLE ENTER PARA TODAS!!!!


Agora faça o seguinte:

scp ~/.ssh/id_rsa.pub root@sua_maquina_remota:~

Se isso deu certo, agora acesse sua maquina:

ssh root@sua_maquina_remota

Estando na maquina faça o seguinte:

cat id_rsa.pub » .ssh/authorized_keys

Se o diretorio .ssh nao existir, crie-o assim: mkdir .ssh

Feito isso, apenas saia da maquina remota e tente acessar novamente.

Agora voce nao precisa mais de senhas!!!

Porem

Existe uma lei do universo que diz o seguinte: se algo pode dar errado, vai dar errado, entao…

Se depois de seguir todos esses passos, voce encontrar com esse erro:

 

“agent admitted failure to sign using the key”

Basta fazer o seguinte na maquina local, nao na maquina remota:

 

sudo apt-get install ssh-add

Por fim..

deixe seu feedback(problemas, sugestoes, etc) nos comentarios.

Obrigado, e até a proxima pessoal!

Referencias:

http://polishlinux.org/apps/ssh-tricks/

http://www.pedropereira.net/ssh-sem-senha-autenticacao-atraves-de-certificados-rsa/

http://www.baptiste-wicht.com/2010/07/tip-how-to-solve-agent-admitted-failure-to-sign-using-the-key-error/